エクセルの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
No.2ベストアンサー
- 回答日時:
yon56です。
私の参照設定と同じにしてみて下さい。
Visual Basic For Applications
Microsoft Excel 11.0 Object Library
OLE Automation
Microsoft Office 11.0 Object Library
Microsoft Forms 2.0 Object Library
Windows Script Host Object Model
残りの点として、
マクロのプリンターの名称をApplication.ActivePrinterとしないで、
プリンタとFAXに表示されたプリンターの名前をコピー貼付してみて下さい。
Application.ActivePrinterが正しく機能していないこともあります。
この回答への補足
YON56さま
YON56さまの時に回答されたmitarashiさまも、これを見て回答くださりました!
つながりがすごいですね!! 感動しました。
皆さまそれぞれにベストアンサーを差し上げたかったのですが、
当初の「PDFが印刷されない」に対してお答えいただいた
元々の構文の作者さまでもあられますYON56さまに差し上げたいと思います。
ありがとうございました^^/
YON56 さま
ご回答ありがとうございます。
プリンターの名前を貼り付けたところ、印刷できました!
ありがとうございます。
実は、その続きがありまして、印刷リストがあるのですが、その順番に沿って印刷してなくて困っています。(恐らくファイル容量順にソートされてしまう?)
それを回避する案として、PDFを開いては閉じるというマクロを検索していたところ、YON56 さまのに出会いましたが、現象は同じでした・・・。
もし何か思いつく点がありましたら、ぜひお知らせください。
ひとまずこの質問に対しての回答は完璧にいただいたので、CLOSEするべきかもしれないですけど・・・。
No.4
- 回答日時:
人気の無い元コードを書いた(切り貼りした)者です
http://oshiete.goo.ne.jp/qa/8346776.html
こんなのをみつけました。
http://support.microsoft.com/kb/891594/ja
VBA側の問題ではなさそうですね。
MSのサイトの情報も時々リニューアルと称して消えてしまいますので、記しておきます。
試して無いので結果が出たら教えて下さい。
スプールに時間がかかる様になるかもしれませんので、Sleepのところのmsec数を調節願います。
>回避策
>ドキュメントを確実に順番通り印刷するためには
>・「全ページ分のデータをスプールしてから 印刷データをプリンタに送る」
>・「スプールされたドキュメントを最初に印刷する」
>を ON に設定します。
なお、Windows7のサポートサイトを見ろと表示されたので、検索してみましたが見当たりませんでした。
Windows7の設定ダイアログの画像を添付いたします。
この回答への補足
mitarashiさま
>人気の無い元コードを書いた(切り貼りした)者です
mitarashiさま。。。。そんなことないですよ。
構文がちょっと長かったので^^;
mitarashiさまやYON56さまにお会いできて光栄でした♪
mitarashi さま
・全ページ分のデータをスプールしてから 印刷データをプリンタに送る →ONにチェック
・スプールされたドキュメントを最初に印刷する →元々ONだった
Sleepのところのmsec数を調節は変更せず、1000のまま
で、結果は・・・・・
*** 順番通りに印刷実行されました!! ***
「こんなのをみつけました。」と画像の添付で、内容も設定もすぐに分かりました。
本当にありがとうございます!!
mitarashi さまもベストアンサーにしたいのですが、
当初の「印刷されない」問題を解決してくださった方に差し上げたいと思います。。。
今回の質問にご回答くだり、私にとって皆さまベストアンサーです。
本当にありがとうございますm(__)m
No.3
- 回答日時:
途中から失礼します。
Sleep 1000
On Error Resume Next ←なんのため?
BBB.Terminate
1秒おいてAcroRD32 をTerminate してますので
AcroRD32は仕事を完遂する前に消えてしまっているのでは?
無駄な時間が増えますが、Sleep 5000 や10000 などとすれば
取りあえずは出力されるかも?
なので、どん臭いけど多分確実な方法。
前提条件
PDFファイルをダブルクリックした時にアクロバットリーダーが立ち上がること。
Sheet1のA2からフルパスで下方に連続してリストがあること。
以下、標準モジュールに記載します。pdfPrint を実行してみてください。
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub pdfPrint()
Dim i As Integer
Dim oShell As Object
i = 2
Do
Sheets("sheet1").Cells(i, 1).Activate
If ActiveCell.Value = "" Then
Exit Do
End If
If Dir(ActiveCell.Value) = "" Then
MsgBox ActiveCell.Value & "が見つかりません。中止します"
Exit Sub
End If
i = i + 1
Loop
i = 2
Set oShell = CreateObject("Shell.Application")
Do
Sheets("sheet1").Cells(i, 1).Activate
If ActiveCell.Value = "" Then
Exit Do
End If
Call oShell.ShellExecute(ActiveCell.Value, , , "print", vbNormalFocus)
Do Until NowPrinting(ActiveCell.Value) = True
Sleep 200
DoEvents
Loop
Do Until NowPrinting(ActiveCell.Value) = False
Sleep 500
DoEvents
Loop
i = i + 1
Loop
Set oShell = Nothing
MsgBox "おまたせ"
End Sub
Private Function NowPrinting(ByVal DocName As String) As Boolean
Dim strComputer As String
Dim objWMIService As Object
Dim colPrintJobs As Object
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrintJobs = objWMIService.ExecQuery ("SELECT * FROM Win32_PrintJob")
If colPrintJobs.Count > 0 Then
NowPrinting = True
End If
Set colPrintJobs = Nothing: Set objWMIService = Nothing
End Function
注意点
印刷する前に、自身や他のPCで印刷中で無い事
このPDF印刷が行われている間は、自身で他の印刷や他のPCでの印刷は行わないこと
(誤動作します)
その他
1ファイルの印刷が完了してから次に行きますので処理が遅いです。
(選択中のセルが移動するので進捗状況は分かるかと思います)
何時までたっても終わらない場合は、Ctrl + Brake で止めてください。
トナーや紙の無駄遣いをしても責任持てませんので悪しからず。
nicotinism さま
確実な方法の構文を教えてくださり、ありがとうございます。
スマートすぎたら初心者の私では手も足もでないので、
皆さまの回答を参考に、少しずつ勉強していきたいと思います。
No.1
- 回答日時:
提示されたマクロを書いたyon56です。
まさか私の書いたマクロを参考にして下さった方が在るなんて考えてもいませんでした。
何となく気恥ずかしいです。
このマクロは、参照設定にWindows Script Host Object Modelが有効になっていないと作動しません。
参照設定は、マクロが記述されたファイルのVBAエディターにて、ツール→参照設定とします。
このダイヤログボックスにて、
Windows Script Host Object Model(Excel2003では、かなり下の方にあります。)を探し、
チェック印を付けOKとします。
ちなみに、マクロが記述されたファイルを変更保存しないと、参照設定は保存されません。
この回答への補足
YON56さま
YON56さまからご連絡いただけて大変光栄です!
本当に驚きました!!
そうです、YON56の最終報告をズバリいただきました^^;
とてもスッキリされていて、初心者の私には手の入れようがありませんでした。
さて、教えてくださった通り、Windows Script Host Object Modelを有効にしましたが、やはり印刷実行されません。。。
現象は変わらず、PDFを開いて閉じて次へ進む です。
他に何か思い当たる点はございますでしょうか?
引き続きよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
昨日見た夢を教えて下さい
たまにすごいドラマチックな夢見ること、ありませんか? 起きてからも妙に記憶に残っているような、そんな夢。
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
PDFファイルを開かずに印刷したい
Visual Basic(VBA)
-
VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません
Visual Basic(VBA)
-
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
-
-
4
PDFファイルを開き、印刷し、閉じるマクロ
Visual Basic(VBA)
-
5
EXCEL VBAでPDFファイルを開いて印刷
Visual Basic(VBA)
-
6
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
7
VBAでホルダー内のPDFを一括印刷したい
Excel(エクセル)
-
8
印刷要求順番と印刷出力順番が違う。
Visual Basic(VBA)
-
9
vbaでpdfを開いて1ページ目のみ印刷する。
PDF
-
10
Excel VBAでPDFファイルをMicrosoft Print to PDFで出力したい
Visual Basic(VBA)
-
11
excel マクロ PDF化の際のエラーについて
Visual Basic(VBA)
-
12
【EXCEL-VBA】PDFファイルを開いて印刷したい
Excel(エクセル)
-
13
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
14
印刷ダイアログを表示させない方法
Visual Basic(VBA)
-
15
印刷マクロ【エクセル】エクセルからワードを印刷する
その他(Microsoft Office)
-
16
UserForm1.Showでエラーになります。
工学
-
17
PowerShellを使って関連付けられたアプリケーションでファイルを開く時のエラー
Excel(エクセル)
-
18
Excel VBAによる連続印刷について処理の順番
Excel(エクセル)
-
19
フォルダ内のexcelファイルを順に開いて印刷して閉じるマクロを作りたいのでご教授お願いします。
Excel(エクセル)
-
20
Excel VBA のdebug(F8キー) がうまく動作しません(超初心者です)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseを使ってソースを印刷し...
-
PHPでPDFの自動印刷
-
vbaでPDFファイルが印刷されない
-
vba 時間の引き算 例えば 15:00...
-
Visual Studio 再起動時 “アウ...
-
ターミナルサービスでのクライ...
-
"ctrl" + "f" を、ボタンを押し...
-
VBで「ファイル名を指定して実...
-
VBSでExcelのUserFormをエクス...
-
角の丸いフォームの作り方
-
Visual Basicでつくる麻雀牌・...
-
VBSで起動したアプリが前面表示...
-
VB.NETでSPREADの設定方法
-
Windows10のVBAでDirectX 8が使...
-
Mac でのプロ達の PHP 開発環境...
-
VBが動かなくなりました・・・
-
Windows上のプログラム。「予め...
-
意味不明の実行時エラーで困っ...
-
「読み込み違反」が起きたとき...
-
C#で作ったプログラムの配布が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
印刷ダイアログを表示させない方法
-
印刷要求順番と印刷出力順番が...
-
VBでExcel印刷する時のプリンタ...
-
プリンターを指定して印刷するには
-
VBSでExcelファイル印刷時のプ...
-
VB.NET+ActiveReports で印刷...
-
2回以上PDFをコピーや印刷がで...
-
vbaでPDFファイルが印刷されない
-
A4の2枚をA3の1枚にする編集方法?
-
印刷ダイアログを表示させたくない
-
VB6上から印刷ダイアログを表示...
-
ACCESSで設定した帳票の用紙サ...
-
ActiveReportsを使って[印刷ダ...
-
VBAにて指定したセルをプルダウ...
-
VBAで印刷スプール終了の判定を...
-
クリレポのプリンタ設定について
-
PHPでPDFファイルの直接印刷
-
EXCELファイルの複数ダウンロー...
-
VBscriptでPDFファイルを直接印...
-
ファイルのパス指定での印刷方法
おすすめ情報