VBAを使ってPDFを印刷すると1枚しか出てこない

このQ&Aのポイント
  • エクセルvbaを使って、PDFを印刷しようとしていますが、2枚続けて印刷ができず、1枚だけが印刷されて終わってしまいます。
  • 印刷される1枚は2枚目にあたります。
  • どうしたら2枚全てが印刷されるのでしょうか?
回答を見る
  • ベストアンサー

VBAを使ってPDFを印刷すると1枚しか出てこない

エクセルvbaを使って、PDFを印刷しようとしていますが、 セルC1・C2に記載してあるファイルの保存場所+ファイル名をリスト化してあるのですが、 2枚続けて印刷ができず、1枚だけが印刷されて終わってしまいます。 印刷される1枚は2枚目にあたります。 どうしたら2枚全てが印刷されるのでしょうか? エクセル2010で、vbaは初心者です。 ご存知の方、なにとぞ教えてください。 よろしくお願いいたします。 Sub PrintTest() Dim i As Long For i = 1 To 2 PrinterName = Application.ActivePrinter fileName = Range("C" & i + 1).Value Set myShell = CreateObject("WScript.Shell") myShell.Run ("AcroRd32.exe /t " & fileName) Next i End Sub

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

>セルC1・C2に記載してあるファイルの保存場所+ファイル名をリスト化してあるのですが fileName = Range("C" & i + 1).Value なぜ+1しているのですか? これだと 一周目:セルC2 二周目:セルC3 の内容を読み込みます

yamayama456
質問者

お礼

web2525 さま あ。。。 本当ですね。 気づかせてくださってありがとうございます^^;

関連するQ&A

  • EXCElのVBAからPDFを開き印刷する。

    エクセルのフォームからダイヤグロボックスを開いて、pdfファイルを選択し開き印刷したいのですが、いろいろやったのですが、ファイルが開きません。単純にファイル名を指定して開き印刷するのは出来るのですが。ダイヤグロボックスから開きたいのでどなたかご指導いただけませんか? 1.直接アクロバットリーダーからファイルを開き印刷   Private Sub CommandButton2_Click()    PrinterName = Application.ActivePrinter    Filename = "C:\○○\××××.pdf" Set myShell = CreateObject("WScript.Shell") myShell.Run ("AcroRd32.exe /t " & Filename) End Sub 2.ダイヤグロボックスからファイルを開く Private Sub microbe_Click() ChDrive "R" ChDir "R:\○○\××\△△" OpenFileName = Application.GetOpenFilename("PDF Documents,*.pdf")   ??? end sub よろしくお願いします。

  • vbaを使ってエクセルリストからPDFを印刷する

    エクセルシートA列に"ファイル場所+ファイル名.pdf"を合体させたリストを作成しました。 リストの上から順にPDFファイルを開き印刷するコードを作成しました。 印刷はされますが、リストの順番に印刷されず、ものすごくランダムに印刷されてしまいます。 このエラーについて、 「次々に実行させるから、ファイルの容量順に印刷されてしまうのでは? PDFを開いて、一旦閉じるコードを入れればよいのでは?」 というアドバイスをもらいましたが、どう対応したらよいか分かりません。 他に考えられる原因があるかもしれません。 教えて下さい。よろしくお願いします Dim i As Long 'セルC2に繰り返し数(ファイルの数)が入力されています For i = 1 To Range("C2").Value 'セルB**に印刷フラグを立て、「空欄」なら印刷、「1」なら印刷しないとしています '印刷フラグ「空欄」は印刷実行 If Cells(i + 1, 2).Value = "" Then PrinterName = Application.ActivePrinter fileName = Range("A" & i + 1).Value Set myShell = CreateObject("WScript.Shell") myShell.Run ("AcroRd32.exe /t " & fileName) '印刷フラグ「1」は印刷しない ElseIf Cells(i + 1, 2).Value = "1" Then End If Next i End Sub

  • エクセルVBAでPDFを1枚目のみ印刷したい

    下記のVBAに複数PDFが重なっている場合は、一枚目のみ印刷する文面を 挿入したいのですがうまくいきません Sub Test() Dim z As Object Dim i As Long Dim f, p As String Application.ScreenUpdating = False Set z = CreateObject("WScript.Shell") p = Application.ActivePrinter For i = 1 To Range("A1").End(xlDown).Row f = "h:\hozei\" & Cells(i, 1).Value & ".pdf" If Dir(f) <> "" Then z.Run ("AcroRd32.exe /t " & f) Else Cells(i, 2).Value = Cells(i, 1).Value Cells(i, 1).Value = "" End If Next i Set z = Nothing End Sub お忙しいところ申し訳ございません どなたかご教示願います。

  • 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

  • PDFファイルを開き、印刷し、閉じるマクロ

    Excel 2003 VBAにて、 PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。 Dim AA, AAA AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\20131101160734050_001.pdf" AAA = Shell(AA, vbNormalFocus) にて、PDFファイルを開くことは出来ました。 このPDFファイルを、「印刷し、閉じる」ためには、 このPDFファイルを指定する必要があると思いますが、 その構文が判りません。 知っている方、教えて下さい。

  • vba pdfを手前に開きたい  Shell

    Sub Sample() Dim myFile As String myFile = "C: \test.pdf" Shell """C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"" " & myFile End Sub vbaからこれでPDFファイルを開くことができるのですが アクセスの後ろで開いてしまいます。 このコードを実行したら、開いたPDFファイルを画面の手前に表示したいので 何を付け足せばいいのでしょうか?

  • [VBA] セル内の文字を取得してファイルOPEN

    EXCEL VBAにてご質問があります。 セル A  1 C:\001.PDF  2 C:\002.PDF     ・     ・     ・ セル:A1~に入っている文字列を実行する(PDFを開く)にはどうすればよろしいでしょうか。 A1だけであれば、 Sub TEST() Dim aTE As String aTE = Range("A1").Value If Dir(aTE) <> "" Then With CreateObject("WScript.Shell") .Run """" & aTE & """" End With End If End Sub 上記で、いけると思いますが、複数(任意)になるとわかりません。 VBAは、始めたばかりで、まだ、右も左も分からない超初心者ですが、 どなたか、教えて頂けないでしょうか。 よろしくお願いいたします。

  • Execl VBA UserForm1の印刷先

    Execl VBA UserForm1の印刷先を変更したいのですが Execl VBAで困っています。 UserFormの印刷を条件を変えてプリンター1とプリンター2に振り分けたいのですが ネットを検索してもいい方法が見つかりません。 UserFormはOSのプリンターを参照するため思うように印刷できません。 一度下記を試しましたが、試通常使うプリンターでしか印刷出来ません UserFormのプリンター切替方法のご伝授宜しくお願い致します。 =========================================== Sub チェンジプリンター() Dim myPrinter As String myPrinter = Application.ActivePrinter '現在のプリンターを記憶 If Worksheets("DeviceRead-Write").Cells(6, 11).Value = 2 Then 'I6が2ならEPSON_2プリンターに印刷する Application.ActivePrinter = "EPSON_2 on Ne02:" 'プリンターを切り替える Range("A4").Value = Application.ActivePrinter 'プリンターの確認 UserForm1.PrintForm 'フォームの印刷 Application.ActivePrinter = myPrinter 'プリンターを元に戻す Range("A2").Value = Application.ActivePrinter 'プリンターの確認 End If If Worksheets("DeviceRead-Write").Cells(6, 11).Value = 1 Then 'I6が2ならEPSON_1プリンターに印刷する Range("D2").Value = Application.ActivePrinter 'プリンターの確認 UserForm1.PrintForm 'フォームの印刷 End If End Sub

  • pdfをvbaで開いて、さらにサイズを指定する

    pdfをvbaで開いて、さらにサイズを指定することは可能ですか? Sub Sample() Dim myFile As String myFile = "C:\\問い合わせ.pdf" Shell """C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"" " & myFile End Sub これでPDFを開くことは出来るのですが 縦横、高さ、幅を指定したいのですが、可能ですか?

  • Excel2007VBAを使ってPDF保存するには

    宜しくお願い致します。 あるサイトを参考に自分の設定を下記情報に設定しました。 保存の画面が出るのですが、【OK】しても実際にはデスクトップには保存されません。 ちゃんとデスクトップに保存をするにはどうしたら良いでしょうか? VBAの知識はなく、さっぱりわかりません。 どうぞご教授をお願い致します。 Sub SaveFileSample011() Dim SaveFileName Dim wScriptHost As Object, strInitDir As String 'カレントディレクトリをデスクトップに変更 a = Range("a2").Value b = Range("c9").Value Set wScriptHost = CreateObject("WScript.Shell") ChDir wScriptHost.SpecialFolders("Desktop") SaveFileName = Application.GetSaveAsFilename(a & "様" & b, "PDFとして保存,*.pdf") If SaveFileName <> False Then MsgBox "入力されたファイル名は、" & SaveFileName & " です。", vbInformation Else MsgBox "キャンセルがクリックされました。", vbInformation End If End Sub

専門家に質問してみよう