• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vbaでPDFファイルが印刷されない)

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

米沢 栄蔵(@YON56)の回答

回答No.1

提示されたマクロを書いたyon56です。 まさか私の書いたマクロを参考にして下さった方が在るなんて考えてもいませんでした。 何となく気恥ずかしいです。 このマクロは、参照設定にWindows Script Host Object Modelが有効になっていないと作動しません。 参照設定は、マクロが記述されたファイルのVBAエディターにて、ツール→参照設定とします。 このダイヤログボックスにて、 Windows Script Host Object Model(Excel2003では、かなり下の方にあります。)を探し、 チェック印を付けOKとします。 ちなみに、マクロが記述されたファイルを変更保存しないと、参照設定は保存されません。

yamayama456
質問者

お礼

YON56さま ご回答ありがとうございます。 でも、まだ印刷されないので、 よろしければ引き続きよろしくお願いいたします。

yamayama456
質問者

補足

YON56さま YON56さまからご連絡いただけて大変光栄です! 本当に驚きました!! そうです、YON56の最終報告をズバリいただきました^^; とてもスッキリされていて、初心者の私には手の入れようがありませんでした。 さて、教えてくださった通り、Windows Script Host Object Modelを有効にしましたが、やはり印刷実行されません。。。 現象は変わらず、PDFを開いて閉じて次へ進む です。 他に何か思い当たる点はございますでしょうか? 引き続きよろしくお願いいたします。

関連するQ&A

  • VBA 実行時エラー 2147024893

    下記のマクロを実行すると BBB.Save のところで、実行時エラー 2147024893(8007003)が発生します。 「ショートカット"C:\Documents and Settings\ユーザー名\MyDocuments\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\拡張子無しのファイル名.lnk"を保存できません。」 ヘルプをみると、オ-トメーションエラー(Error440)となっています。 いろいろ調べましたが解りません。助けて下さい。 Sub 自動起動設定() Dim AA, BB, CC, DD Dim AAA, BBB AA = ThisWorkbook.Path CC = ThisWorkbook.Name CC = Left(CC, Len(CC) - 4) Set AAA = CreateObject("WScript.Shell") DD = Left(AA, 2) & "Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ" Set BBB = AAA.CreateShortcut(DD & "\" & CC & ".lnk") BBB.targetPath = AA & "\" & ThisWorkbook.Name BBB.Arguments = "/n,/e," & AA & "\" BBB.WindowStyle = 1 BBB.WorkingDirectory = AA BBB.Save Set BBB = Nothing Set AAA = Nothing End Sub

  • 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

  • vba pdfファイル順番に印刷

    セルC5から、下にファイル名が入っています。上から順に印刷したいのですが、下記だとvbaが動かないです。 Dim z As Object Dim i As Long Dim f, p As String Set z=CreateObject("WScript.Shell") p=Application.ActivePrinter For i=5 To Range("C1").End(xlDown).Row f="C:¥フォルダパス" & Cells(i,1).Value & ".pdf" ここから、行ごとに進んだ時に、黄色くならず反応しませんでした↓ If Dir (f)<>""Then z.Run("Acrobat.exe /t" & f) ↓ここにとびました。 Else End if Next i Set z=Nothing End Sub それ以前に、adobe acrobatが、更新されてから動いていたバッチファイルですら反応しなくなりました Adobeの環境設定をネットで見た通り見直ししたりしたのですが、全く成功しません。フォルダ内のpdfファイルを、全て印刷するvba(Acrobat.exe)を記載しない方法は成功したのですが、どうすれば、上手くいきますか? 教えていただきたいです。印刷の順番を指定したいです。 初心者なのでお手柔らかにお願いします。ちなみに動いているほうのvbaは下記です。 フォルダ内のファイルを全て印刷する、(順番関係なし)です。 Dim FolderPath As String Dim Filename As String Dim objShell As Object Dim objFolder As Object Dim objFile As Object FolderPath=ThisWorkbook.Path Set objShell=CreateObject("Shell.Application") Set objFolder=objShell.Namespace(ThisWorkbook.Path) For Each objFile In objFolder.items If Right(objFile.Name,4)=".pdf"Then objFolder.ParseName(objFile.Name) .InvokeVerbEx("print") End If Next objFile Set objFile=Nothing Set objFolder=Nothing Set objShell=Nothing End Sub 上記は全てネットから引用しています。 adobe acrobatを使うと反応しないので下記、上記に付け足ししたりして自身で初めて考えました。 Sub Test() Dim FolderPath As String Dim Filename As String Dim objShell As Object Dim objFolder As Object Dim objFile As Object FolderPath=ThisWorkbook.Path Set objShell=CreateObject("Shell.Application") Set objFolder=objShell.Namespace(ThisWorkbook.Path) For i=5 To Range("C1")End(xlDown).Row ObjFile.Name=FolderPath&Cells(i,1).value&".pdf" If Dir objFile.Name<>""Then objFolder.ParseName(objFile.Name).InvokeverbEx("print") Else End if Next i Set objFile=Nothing Set objFolder=Nothing Set objShell=Nothing MsgBox"印刷が完了しました" 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でCSVファイルを分割したい

    VBAを利用して、あるCSVファイルを一定のレコード数ごとに新しいファイルにファイル分割したいです。 やりたいことは、以下のようなイメージです。 関連サイトなどを参考に自分なりに取り組んでみましたが、なかなかうまくいきません。 VBAでなくても実現できそうですが、ここまでやったので勉強のためにもVBAでやりたいです。 サンプルコードなど教えていただけるとうれしいです。 ヒントでも結構ですので、よろしくおねがいします。 (2レコードずつ分割する例) sample.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666 ↓↓↓ ☆sample_1.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4   →各ファイルにヘッダも入れたいです。 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ☆sample_2.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 ☆sample_3.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666

  • 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

  • エクセル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 お忙しいところ申し訳ございません どなたかご教示願います。

  • awkで別のファイルを参照して、検索結果を得たい。

    awk初心者です。 あるファイル(targetファイル)に、どのような属性があるのかを検索ファイル(objectファイル)を 使って調べたいのです。そこでawkを使って: targetファイル 5 a c objectファイル 1,aa 2,bb 3,cc 4,dd 5,aa 6,bb 7,cc 8,dd 9,aa 10,bb a,cc b,dd c,aa d,bb e,cc f,dd g,aa h,bb i,cc j,dd 以下のようなスクリプトを作成し mawk32 -f スクリプト target.txt object.txt としたのですが、動作しません。 何らかの御助言を頂ければ幸いです。 #targetファイル読み込み FILENAME == ARGV[1]{ dat1[FNR]=$1 no_dat1 = FNR } #objectファイル読み込み FILENAME == ARGV[2]{ dat2[FNR]=$0 no_dat2 = FNR } #相互に検索 END{ for (i = 1; i <= no_dat1; i++){ for (j = 1; j <= no_dat2; j++){ if (dat1[i]~/dat2[j]/) { print dat1[i],dat2[j] } }}}

  • 【VBA】任意のファイルの一括操作について

    こちらの識者の方々にはいつもお世話になっております。 VBAで教えていただきたいことがあり質問いたします。 C:\aaa\に下記のexcelファイルがあります。 【見本】東京.xls 【見本】埼玉.xls 【見本】神奈川.xls 【見本2】千葉.xls これを 1.C:\bbb\へコピーし、 2.ファイル名の【見本】と【見本2】の文字列を削除し、 3.拡張子の前に本日の日付をyyyymmdd形式で追加し、 4.それぞれのexcelファイルのsheet1のa1セルにyyyymmdd形式で本日の日付を入力する。 というマクロを組みたいと思っています。 一つ一つnameステートメントでファイル名を変更したり、 open→Range("A1").Value→closeとやってもできるんですが、 条件もすこぶる単純ですし、一括でできるようなコードはないかと思っています。 最終的な期待するファイルのフルパスは↓のようになります。 C:\bbb\東京20130426.xls C:\bbb\埼玉20130426.xls C:\bbb\神奈川20130426.xls C:\bbb\千葉20130426.xls C:\bbb\へコピーするところまでは調べてできたのですが、 その先がこれというものを見つけられず。 どなたかご教示いただけないでしょうか。 宜しくお願い致します。 Sub Test() Dim objFSO As FileSystemObject Const cnsSOUR = "C:\aaa\*.xls" Const cnsDEST = "C:\bbb\" Set objFSO = New FileSystemObject objFSO.CopyFile cnsSOUR, cnsDEST, True Set objFSO = Nothing 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