PDF資料のセット印刷について

このQ&Aのポイント
  • 説明会用の資料を印刷し、セットする際に発生する問題について質問させていただきます。
  • エクセルのマクロで印刷する際に特定の資料が印刷できない問題が発生しており、解決策を求めています。
  • また、1から7までの資料を20セット印刷したい場合、どのようにループをかければいいかも教えていただきたいです。
回答を見る
  • ベストアンサー

PDF資料のセット印刷について

いつもお世話になっております。 説明会用の資料を印刷し、セットしています。 しかし、200部、300部とセットするのが大変です。 そこで、印刷時にセットしておきたいと考えました。 エクセルのマクロで書きました。ウインドウズ7、エクセル2010です。 よろしくお願いします。 説明会の資料が7種類あります。 1と2は、両面白黒印刷、ホッチキス止め  13枚 3と4は、片面白黒印刷、ホッチキス止め  19枚 5  は、両面白黒印刷          両面で1枚 6  は、片面白黒印刷          1枚 7  は、片面カラー印刷         1枚 いろいろな掲示板で探したコードを書いてみました。 意味もあまりわかってないです。。。なので 5、6、7は、印刷できるのですが、3と4はタマにしか印刷できません。 なぜなのかわかりません。同じ環境で続けてマクロを実行しましたが 印刷できるときと、出来ない時があります。 1と2は、いつも印刷できません。 どうすればいいのか教えてください。 白黒印刷や、ホッチキス止めは、プリンターで設定しています。 プリンターの追加で5種類用意しました。 あと、1から7までを1セットとし、20セット印刷したいのですが どこでループをかけたらいいのかわかりません。 よろしくお願いします。 Sub 説明会資料PDF印刷() Dim AA Dim B1, B2, B3, B4, B5, B6, B7 Dim C1, C2, C3, C4, C5 Dim D1, D2, D3, D4, D5, D6, D7 Dim AAA As Object Dim BB1, BB2, BB3, BB4, BB5, BB6, BB7 Dim i As Long AA = "C:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /t " B1 = "C:\説明会資料\説明会1.pdf" B2 = "C:\説明会資料\説明会2.pdf" B3 = "C:\説明会資料\説明会3.pdf" B4 = "C:\説明会資料\説明会4.pdf" B5 = "C:\説明会資料\説明会5.pdf" B6 = "C:\説明会資料\説明会6.pdf" B7 = "C:\説明会資料\説明会7.pdf" C1 = "DocuCentre-V C3375(両面白黒ホッチキス)" C2 = "DocuCentre-V C3375(片面白黒ホッチキス)" C3 = "DocuCentre-V C3375(両面白黒)" C4 = "DocuCentre-V C3375(モノクロ)" C5 = "DocuCentre-V C3375(カラー)" Set AAA = CreateObject("WScript.Shell") D1 = AA & """" & B1 & """" & " " & """" & C1 & """" Set BB1 = AAA.exec(D1) On Error Resume Next BB1.Terminate Set BB1 = Nothing D2 = AA & """" & B2 & """" & " " & """" & C1 & """" Set BB2 = AAA.exec(D2) BB2.Terminate Set BB2 = Nothing On Error Resume Next D3 = AA & """" & B3 & """" & " " & """" & C2 & """" Set BB3 = AAA.exec(D3) BB3.Terminate Set BB3 = Nothing On Error Resume Next D4 = AA & """" & B4 & """" & " " & """" & C2 & """" Set BB4 = AAA.exec(D4) On Error Resume Next BB4.Terminate Set BB4 = Nothing D5 = AA & """" & B5 & """" & " " & """" & C3 & """" Set BB5 = AAA.exec(D5) On Error Resume Next BB5.Terminate Set BB5 = Nothing D6 = AA & """" & B6 & """" & " " & """" & C4 & """" Set BB6 = AAA.exec(D6) On Error Resume Next BB6.Terminate Set BB6 = Nothing D7 = AA & """" & B7 & """" & " " & """" & C5 & """" Set BB7 = AAA.exec(D7) On Error Resume Next BB7.Terminate Set BB7 = Nothing Set AAA = Nothing End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • tamao-chi
  • ベストアンサー率52% (457/875)
回答No.2

印刷できない部分だけ実行して確認してみたら如何ですか。 D2 = AA & """" & B2 & """" & " " & """" & C1 & """" から Set BB7 = Nothing まで削除したら別名で保存し、DocuCentre-V C3375(両面白黒ホッチキス)の印刷ジョブを開きながら実行してみると何かわかるかも。

kisaragijec
質問者

お礼

tamao-chiさん、ありがとうございました。 ゆっくり実行していったら、うまく印刷できました。 印刷実行したあと、 On Error Resume Next へ行くタイミングが早すぎたようです。 sleep 4000 を入れることで、希望通りに動きました。 ループも、作ったマクロを回すことで、セット印刷できるようになりました。 本当にありがとうございました。

その他の回答 (1)

  • -antsu-
  • ベストアンサー率50% (84/168)
回答No.1

時間があまりないので具体的なコードを提示することはできませんが、 ヒント程度になれば…。 まず同じプリンターを複数(設定数)インストールします。 デバイスとプリンターに追加されますので、 適当にプリンター名を変更し、設定(初期値)もそれぞれに 片面、両面、両面ホッチキスなど設定を行います。 で、印刷したい資料ごとにVBAでデフォルトプリンターを 変更し、最後にデフォルトプリンターを元に戻します。 少し用途が違いますが、私はこれで稼動させているものがあります。

kisaragijec
質問者

補足

-antsu-さん、ありがとうございます。 C1 = "DocuCentre-V C3375(両面白黒ホッチキス)" C2 = "DocuCentre-V C3375(片面白黒ホッチキス)" C3 = "DocuCentre-V C3375(両面白黒)" C4 = "DocuCentre-V C3375(モノクロ)" C5 = "DocuCentre-V C3375(カラー)" こちらが、プリンターを設定したコードです。 D1 = AA & """" & B1 & """" & " " & """" & C1 & """" Set BB1 = AAA.exec(D1) On Error Resume Next BB1.Terminate Set BB1 = Nothing こちらが、資料ごとにプリンターを変えて印刷するコードです。 おっしゃっている通りにコードを書いたつもりなのですが 5  は、両面白黒印刷          両面で1枚 6  は、片面白黒印刷          1枚 7  は、片面カラー印刷         1枚 この3枚しか印刷できません。 プリンタドライバのインストールに問題があるのでしょうか? プリンターのプロパティで詳細設定の中にある メタファイルスプールをしない  から  する  に 変更したら、 1  は、両面白黒印刷、ホッチキス止め  13枚 13枚のうち、2枚(3ページもしくは4ページ)印刷しホッチキス止めできるようになりました。でも、13枚印刷させたいのですが。。。 急ぎませんので、引き続きよろしくお願いします。

関連するQ&A

  • vbaでPDFファイルが印刷されない

    エクセルのA列に「フォルダ場所+ファイル名.pdf」のリストを作成し、 PDFファイルを開き、印刷し、閉じるマクロを作成しましたが、全く印刷されません。 エラーが出て止まることなく、次々進んでいるのですが、肝心の印刷が実行されていません。 ネット検索で見つけたものをアレンジしたのですが、高度すぎて苦戦しています。 エクセルシートの内容は、 セルA2~には、フォルダ場所+ファイル名.pdf  例)C:\work\test1.pdf C2には印刷実行数(ファイルの数) を置いています。 どなたかご存知の方いらっしゃいましたら、どうか教えてください。 よろしくお願いいたします。 ---------------------------------------------------- Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub PDF() Dim AA, BB, CC, DD Dim AAA, BBB Dim i As Long For i = 1 To Range("C2").Value AA = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe /t " BB = Range("A" & i + 1).Value CC = Application.ActivePrinter DD = AA & """" & BB & """" & " " & """" & CC & """" Debug.Print DD Set AAA = CreateObject("WScript.Shell") Set BBB = AAA.exec(DD) Sleep 1000 On Error Resume Next BBB.Terminate Set BBB = Nothing Set AAA = Nothing Next i End Sub

  • 削除が実行されない

    以下のvbsを実行しても rmdir が実行されません どうしたらよいでしょうか Dim objShell Dim wExec Dim strResult Set objShell = CreateObject("WScript.Shell") objShell.CurrentDirectory = "C:\Users\xxx\Desktop\test" objShell.Exec ("cmd /c dir 201406* /b/ad/s >> ログ.txt") Set wExec = objShell.Exec ("cmd /c for /R %d in (201406*) do rmdir /S /Q ""%d""") Set wExec = Nothing Set objShell = Nothing

  • sscanfの使い方について

    char *str = ./aa...a/b..bb/cc..c/d...dd.txt"; の aa...a , b..bb , cc..c , d...dd を取り出したいのですが sscanf(str,"./%s/%s/%s/%s.txt",a,b,c,d); とすると,aだけにすべての文字列が入ってしまい,他のb,c,dには何も入りません. つまり.a = "aa...a/b..bb/cc..c/d...dd.txt" となります. a,b,c,dはいずれも char a[512],b[512],c[512],d[512] となっております. 取り出すうまい方法がありましたら教えてください.

  • 選択による表示の可否を含めた複雑な計算表について

    下記のような計算表を作りたいのですが… AA  1  2  3  4 BB  11  12  13  14  15     ※AAのチェックによって表示され、選択可能    <例>    ・AA-1を選択するとBB-11,12のみ表示して1つのみ選択可能    ・AA-2を選択するとBB-11,12,14のみ表示して   〃    ・AA-3を選択するとBB-11~15表示して     〃 CC  テキストボックスでユーザ入力 DD  テキストボックスでユーザ入力 EE  CC×DD×<AAのチェックとBBのチェックによる数字>     <例>     ・BBの<例>と同じ条件の元で      AA-1---BB-11→15(チェックにより掛ける数字)      〃 ---〃 12→18( 〃 )      AA-2---BB-12→22( 〃 )      〃 ---〃 14→27( 〃 )      AA-3---BB-13→31( 〃 )      〃 ---〃 15→35( 〃 ) FF  Aa  Bb  Cc  Dd  Ee       ※AAとBBの条件と連動して、表示され選択可能      <例>      ・AA-1を選択するとBB-11,12のみ表示し、1つのみを選択。FF-Aaのみ表示      ・AA-2を選択するとBB-11,12,14のみ表示し、   〃  。FF-Aa,Ccのみ表示      ・AA-3を選択するとBB-11~15表示し、    〃    。FF-Bb,Ccのみ表示 GG  セレクトボックスで4割~8割から選択 HH  a  b  c  d  e  f  g      BBの選択内容とFFの選択内容によって表示(選択は1つのみ) ※ 後の計算によって数字変更     <例>      BB-11---FF-A---HH-a~c(a:3,b:6,c:10)      〃 ---〃 B---〃 a,c,f(a:4,c:5,f:8)      〃 ---〃 C---〃 c~g(c:4,d:5,e:8,f:14,g:18)      BB-12---FF-A---HH-a~c(a:11,b:14,c:18)      〃 ---〃 B---〃 b,d,f,g(b:7,d:9,f:12,g:13)      〃 ---〃 C---〃 c~f(c:1,d:3,e:9,f:11) 「計算」ボタンと「リセット」ボタン  ※「計算」ボタンをクリックするとIIとJJ」に計算内容を表示  ※「リセット」ボタンをクリックすると、すべてリセットさせる。AAのみ表示を残す II  EE×GG JJ  (AAとBBとFFのチェックによる数字)×(20-HH)×II÷2    <例>    AA-1---BB-12---FF-A→12(掛ける数字)×(20-HH-a)×II÷2    〃1---BB-12---〃 B→17(掛ける数字)×(20-〃c)×〃÷2                     ・                     ・ -------- 計算が大きく2つに別れて計算という形になるのですが、 <<1>> -AA-1---BB-11---FF-A-|→EEで必要な数字15 | | |-〃12---〃 -|→     〃 18 | | -〃2---BB-11---FF-A, C-|→EEで必要な数字20 | | |-〃 12--- 〃 -|→   〃  22 | | |-〃 14--- 〃 -|→   〃  27 | | -〃3---BB-11---FF-B,E-|→EEで必要な数字28 |   |-〃 12--- 〃 -|→   〃  30 |   |-〃 13--- 〃 -|→   〃  31 |   |-〃 14--- 〃 -|→   〃  32 |   |-〃 15--- 〃 -|→   〃  35 |         ・ -         ・ <<2>> ※ < >の数字は掛ける時に必要な数字 -BB-11---FF-A---HH-a<3> | |   |  |--〃b<6> | |   |  |--〃c<10> | |   | | |   FF-B---HH-a<4> | |   |  |--〃c<5> | |   |  |--〃f<8> | |   | | |   FF-C---HH-c<4> | |   |  |--〃d<5> | |   |  |--〃e<8> | |   |  |--〃f<14> | |   |  |--〃g<18> | | -BB-12---FF-A---HH-a<11> | |   |  |--〃b<14> | |   |  |--〃c<18> | |   | | |   FF-B---HH-b<7> | |   |  |--〃d<9> | |   |  |--〃f<12> | |   |  |--〃g<13> | |   | -      ・ |      ・ ※ < >の数字は掛ける時に必要な数字 <例>AA-1---BB-12---FF-A<12>×(20-HH-a<3>)×II÷2 という感じになります。 大変分かりにくいとは思いますが、ご教授の程よろしくお願いします。

  • access adoのトランザクション

    access2003でSQLServer2008へのリンクテーブルを作成し、 vbaでadoを使ってデータ更新処理をしようとしています。 以下のように記述していますが、 実行後、BやCのテーブルが開かなくなります。 (正確にはインサートしたデータが表示されるであろうページがロックされているような動きです。) また、その状態からAccessを一旦終了し、再度起動すると、データがインサートされていない状態です。 コミットが効いてないように感じます。 こちら原因としてどんなことが考えられるでしょうか? ちなみにDAOで動かしても同様でした。 宜しくお願い致します。 以下 コード============================ Set cn = CurrentProject.Connection Set rst = New ADODB.Recordset cn.BeginTrans rst.Open "select key from A", cn, adOpenForwardOnly, adLockReadOnly Do Until rst.EOF cne.Execute "insert into B ( aa, bb) select aa, bb from A where key = " & rst!key & " " cne.Execute "insert into C ( aa, bb) select aa, bb from A where key = " & rst!key & " " rst.MoveNext Loop rst.Close cn.CommitTrans cn.Close set rst = Nothing set cn = Nothing

  • 【PSP 英雄伝説空の軌跡セット】中身は全てのシリーズが入っているんですか?

    英雄伝説の絵柄に引かれて買ってみようと思ったんですが、 ちょうど、セットで売ってるのを見かけました。 http://www.amazon.co.jp/%E6%97%A5%E6%9C%AC%E3%83%95%E3%82%A1%E3%83%AB%E3%82%B3%E3%83%A0-13305661-%E8%8B%B1%E9%9B%84%E4%BC%9D%E8%AA%AC%E7%A9%BA%E3%81%AE%E8%BB%8C%E8%B7%A1%E3%82%BB%E3%83%83%E3%83%88/dp/B001GAQFRU/ref=sr_1_1?ie=UTF8&s=videogames&qid=1231573746&sr=1-1 商品説明の欄を見ると。 1作目『英雄伝説 空の軌跡FC』 2作目『英雄伝説 空の軌跡SC】 3作目『英雄伝説 空の軌跡 the 3rd』 説明通り、今までの全シリーズがこのセットに入っているんですよね? プレイするなら1作目からしたいんで、念の為に質問しました。 回答宜しくお願いします。

  • PDF取扱説明書の拡大印刷

    WIN7(64ビット)を使用しています。 AcrobatXでパナソニックのゴパンのPDF取扱説明書の印刷がうまくできません。 母の目が悪いため、取説をB4に拡大して印刷しようとしていますが、 2ー3ページがセットになっていて、拡大しても2ページ分が拡大されるだけです。 他の方法でも良いですので、1ページごとにB4に拡大できないでしょうか。 プリンターはEPSONのPM-3700Cです。 よろしくお願いします。

  • 印刷がうまいことできない

    こんにちは 状況をスクリーンショットで順を追って説明します。 1.印刷したいページです。全体が収まるよう縮小しています。 https://gyazo.com/a1aa07f2f03a5fa607df5535d6500391 2.印刷プレビューの状態です。 https://gyazo.com/6e31f44ae1d1372c5ffa97a6e517c7ee 3.ページ設定の状態です。 https://gyazo.com/771e97426b6d91159d325d64498be00c 4.出力された結果です。グレーの部分はなにかわかりません。 https://gyazo.com/da3bba03c1fb5c06c6116f7051a9a829 本件、プリンターのエプソンに問い合わせて、ドライバーを入れ直しましたが、うまいこといきません。 なお、ホームページを印刷するときは正常に出力されます。 エプソンの方から、それはワードの方に問題あるのではないかということです。 対処の仕方を教えてください。

  • sedで置換した値を変数にセットしたい。

    sedで置換した値を変数にセットしたい。 次のように変数aaにセットした文字列「abc」を「abd」に置換して、再度変数aaにセットしたいのですがうまくいきません。 # aa=abc # aa=`echo $aa | sed -e 's/c/d/'` sed: -e 表現 #1, 文字数 5: 「s」コマンドが終了していません # 宜しくお願いします。

  • sedで置換した値を変数にセットしたい。

    sedで置換した値を変数にセットしたい。 次のように変数aaにセットした文字列「abc」を「abd」に置換して、再度変数aaにセットしたいのですがうまくいきません。 # aa=abc # aa=`echo $aa | sed -e 's/c/d/'` sed: -e 表現 #1, 文字数 5: 「s」コマンドが終了していません # 宜しくお願いします。

専門家に質問してみよう