仕事と子育てを両立。働くママを、もっと笑顔に!>>

エクセルの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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

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さまに差し上げたいと思います。

ありがとうございました^^/

補足日時:2013/12/16 11:17
    • good
    • 0
この回答へのお礼

YON56 さま

ご回答ありがとうございます。
プリンターの名前を貼り付けたところ、印刷できました!
ありがとうございます。

実は、その続きがありまして、印刷リストがあるのですが、その順番に沿って印刷してなくて困っています。(恐らくファイル容量順にソートされてしまう?)

それを回避する案として、PDFを開いては閉じるというマクロを検索していたところ、YON56 さまのに出会いましたが、現象は同じでした・・・。

もし何か思いつく点がありましたら、ぜひお知らせください。
ひとまずこの質問に対しての回答は完璧にいただいたので、CLOSEするべきかもしれないですけど・・・。

お礼日時:2013/12/13 12:19

人気の無い元コードを書いた(切り貼りした)者です


http://oshiete.goo.ne.jp/qa/8346776.html

こんなのをみつけました。
http://support.microsoft.com/kb/891594/ja

VBA側の問題ではなさそうですね。
MSのサイトの情報も時々リニューアルと称して消えてしまいますので、記しておきます。
試して無いので結果が出たら教えて下さい。
スプールに時間がかかる様になるかもしれませんので、Sleepのところのmsec数を調節願います。

>回避策
>ドキュメントを確実に順番通り印刷するためには

>・「全ページ分のデータをスプールしてから 印刷データをプリンタに送る」
>・「スプールされたドキュメントを最初に印刷する」

>を ON に設定します。

なお、Windows7のサポートサイトを見ろと表示されたので、検索してみましたが見当たりませんでした。
Windows7の設定ダイアログの画像を添付いたします。
「vbaでPDFファイルが印刷されない」の回答画像4

この回答への補足

mitarashiさま

>人気の無い元コードを書いた(切り貼りした)者です
mitarashiさま。。。。そんなことないですよ。
構文がちょっと長かったので^^;

mitarashiさまやYON56さまにお会いできて光栄でした♪

補足日時:2013/12/16 11:13
    • good
    • 0
この回答へのお礼

mitarashi さま

・全ページ分のデータをスプールしてから 印刷データをプリンタに送る →ONにチェック
・スプールされたドキュメントを最初に印刷する →元々ONだった
Sleepのところのmsec数を調節は変更せず、1000のまま

で、結果は・・・・・
*** 順番通りに印刷実行されました!! ***


「こんなのをみつけました。」と画像の添付で、内容も設定もすぐに分かりました。
本当にありがとうございます!!

mitarashi さまもベストアンサーにしたいのですが、
当初の「印刷されない」問題を解決してくださった方に差し上げたいと思います。。。

今回の質問にご回答くだり、私にとって皆さまベストアンサーです。
本当にありがとうございますm(__)m

お礼日時:2013/12/16 10:57

途中から失礼します。


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 で止めてください。
トナーや紙の無駄遣いをしても責任持てませんので悪しからず。
    • good
    • 0
この回答へのお礼

nicotinism さま

確実な方法の構文を教えてくださり、ありがとうございます。
スマートすぎたら初心者の私では手も足もでないので、
皆さまの回答を参考に、少しずつ勉強していきたいと思います。

お礼日時:2013/12/16 11:07

提示されたマクロを書いたyon56です。



まさか私の書いたマクロを参考にして下さった方が在るなんて考えてもいませんでした。
何となく気恥ずかしいです。

このマクロは、参照設定にWindows Script Host Object Modelが有効になっていないと作動しません。
参照設定は、マクロが記述されたファイルのVBAエディターにて、ツール→参照設定とします。
このダイヤログボックスにて、
Windows Script Host Object Model(Excel2003では、かなり下の方にあります。)を探し、
チェック印を付けOKとします。

ちなみに、マクロが記述されたファイルを変更保存しないと、参照設定は保存されません。

この回答への補足

YON56さま

YON56さまからご連絡いただけて大変光栄です!
本当に驚きました!!
そうです、YON56の最終報告をズバリいただきました^^;
とてもスッキリされていて、初心者の私には手の入れようがありませんでした。

さて、教えてくださった通り、Windows Script Host Object Modelを有効にしましたが、やはり印刷実行されません。。。
現象は変わらず、PDFを開いて閉じて次へ進む です。
他に何か思い当たる点はございますでしょうか?
引き続きよろしくお願いいたします。

補足日時:2013/12/12 14:24
    • good
    • 0
この回答へのお礼

YON56さま

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

お礼日時:2013/12/12 14:25

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

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ファイルを指定する必要があると思いますが、
その構文が判りません。
知っている方、教えて下さい。

Aベストアンサー

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional printerDriver As Variant)
Dim cmdLine As String
Dim WShell As Object
Dim oExec As Object
'ここは調整の必要がありそう
Const waitTime As Long = 1000
'Windows7 Home 64bitの場合です
Const pgmFullPath As String = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"

Set WShell = CreateObject("WScript.Shell")
If IsMissing(printerName) Or IsMissing(printerDriver) Then
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
Else
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"" ""printerName"" ""printerDriver"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
cmdLine = Replace(cmdLine, "printerName", printerName)
cmdLine = Replace(cmdLine, "printeDriver", printerDriver)
End If
Debug.Print cmdLine
Set oExec = WShell.exec(cmdLine)
Sleep waitTime
'Windows7Home/64bit環境ではここで実行時エラーが出るので無理矢理先に進めていますが
'Adobe Readerは閉じられる様です
On Error Resume Next
oExec.Terminate
Set WShell = Nothing
End Sub

Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function

Terminateで原因不明のエラーが出るのでWebを漁っいて下記をみつけました。64bit環境でエラーが出るのはこれも関係しているのでしょうか?少々無理をしている様なので、ご使用時はご注意下さい。
Terminate メソッドは最後の手段としてのみ使用します。これは、アプリケーションによっては適切にクリーンアップできない場合があるためです。通常は、プロセスを途中で中断せず、プロセス自身で実行を終了させるようにします。Terminate メソッドは WM_CLOSE メッセージを使ってプロセスを終了しようとします。これで終了できない場合は、通常のシャットダウン手順を実行せずに、プロセスを強制終了します。
http://msdn.microsoft.com/ja-jp/library/cc364387.aspx

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional prin...続きを読む

Q【EXCEL-VBA】PDFファイルを開いて印刷したい

お世話になります。
以前、以下のリンク先の質問でA1セルに入力されたファイル名(フルパスの)を取得し
PDFを開くマクロを頂きました。
※ご解答頂いたWindFallerさん、maiko0333さん、ありがとうございました。
このマクロはすごくシンプルで使いやすいので今でも仕事で使っております。

で、、、今回、これをカスタマイズして「印刷もしたい」と思ったのですが、
印刷するためのコードの追加方法がわかりませんでした。

このコードに固執してないので、別の方法でもかまいません。
ですが、ネットで調べたところ複雑なコードばかりでした。
リンク先のようなシンプルなコードでPDFファイルを開いて
印刷することって出来ないのでしょうか?

すいませんが詳しい方、説明の上手な方、
直接、コードで説明できる方、マクロでPDFファイルを開いて印刷するための
コードを教えて下さい。よろしくお願いします。


リンク先:PDFファイルを開くマクロ
「PowerShellを使って関連付けられたアプリケーションでファイルを開く時のエラー」
https://oshiete.goo.ne.jp/qa/9338065.html

追記
1)開いたPDFファイルを閉じる必要はありません。
開けっ放しでOKです

2)前述していますし、リンク先を見て頂ければわかると思いますが、
A1セルに入力するファイル名はフルパスです。
※詳細はリンク先の説明、画像をご覧ください

3)PDFファイルはどれも1枚だけです。
※複数ページのPDFはありません。

以上です。すいませんがよろしくお願いします。

お世話になります。
以前、以下のリンク先の質問でA1セルに入力されたファイル名(フルパスの)を取得し
PDFを開くマクロを頂きました。
※ご解答頂いたWindFallerさん、maiko0333さん、ありがとうございました。
このマクロはすごくシンプルで使いやすいので今でも仕事で使っております。

で、、、今回、これをカスタマイズして「印刷もしたい」と思ったのですが、
印刷するためのコードの追加方法がわかりませんでした。

このコードに固執してないので、別の方法でもかまいません。
ですが、ネットで調...続きを読む

Aベストアンサー

こちらを参考にして
https://www.moug.net/tech/acvba/0130005.html
こんな感じで動きました。(Windows7 64ビット , Excel2010 32ビット)

Option Explicit

Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" (ByVal hwnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long

Public Sub PrintPDF()
 Dim strPath As String

 strPath = Range("A1").Value
 ' 現在の位置とサイズで表示 5(SW_SHOW)
 Call ShellExecute(Application.hwnd, "open", strPath, vbNullString, vbNullString, 5)
 ' 印刷
 Call ShellExecute(Application.hwnd, "print", strPath, vbNullString, vbNullString, 5)
End Sub

こちらを参考にして
https://www.moug.net/tech/acvba/0130005.html
こんな感じで動きました。(Windows7 64ビット , Excel2010 32ビット)

Option Explicit

Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" (ByVal hwnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long

Public Sub PrintPDF()
 Dim strPath As String

 strPath = Range("A1").Value
 ' 現在の位置とサイズで表示 5(SW_SHOW)
 Call ShellExecute(Applica...続きを読む

QPDFファイルを開かずに印刷したい

幾つものPDFファイルを印刷したいのですが、
できればAdobeReaderを起動させずに印刷したいです。

ファイルのアイコン上で右クリック→印刷でも可能ですが、
数が多くなると、この作業も大変です。
そこでVisualBasic2008ExpressEditionを使って、
簡単なシステムを作りたいと考えています。

しかし、PDFを開かずに印刷する方法が、どうしてもわかりません。
ネット検索、教えてgoo内の検索でもヒットせず途方に暮れています。
参考になるホームページや書籍がありましたら教えてください。
「こんな手法があるよ」というものでも構いません。

宜しくお願いします。

Aベストアンサー

PDFを開く際にACRORD32.exeに対して以下のコマンドラインを指定してください。

ACRORD32.EXE /s /l /p /h [PDFのパス]

コマンドラインの解説は参照URLを。

参考URL:http://scripting.cocolog-nifty.com/blog/2007/07/adobe_reader_81_e41e.html

QエクセルのマクロでPDFファイルを印刷

フォルダの中にPDFファイルがあります。
そのファイルをマクロ上で印刷することは可能なのでしょうか?
自分で調べている限り、エクセルをPDF化の方法は見るのですが、印刷については、見当たりません。

もし、PDFファイルが印刷できないとしたら、マクロでエクセル以外のアプリケーションのファイルは印刷できないと考えたほうが良いのでしょうか?

わかるかたいらしたら、よろしくお願いします。

Aベストアンサー

Excel に印刷させることはできませんが、Shell を使って Acrobat とか
AcrobatReader にコマンドラインで印刷させることはできるのでは?

検索すればこんな記事がヒットしますね。
http://scripting.cocolog-nifty.com/blog/2006/12/pdf_4c95.html

QエクセルVBAで、PDFファイルを開きたい

セルに入力した値のブック(xls)を開く場合、
以下となりますが、↓

Sub セルに入力したブック名のブックを開く()
ブック名 = Cells(1, 2) 'B1セルの値を取り出す
Workbooks.Open Filename:=ブック名 & ".xls" '指定されたブックを開く
End Sub


これでPDFファイルを開きたいです。
記述をどうしたらよいでしょうか。
目的はPDFファイルの検索/照会をxlsにてしたいのです。
お手数ですがお願いいたします。

Aベストアンサー

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュールに
Sub test2()
Dim strFilePath As String
strFilePath = _
  Application.GetOpenFilename _
  ("PDFファイル,*.pdf", MultiSelect:=False)

If strFilePath = "false" Then
 Exit Sub
End If

Call Shell("explorer.exe " & strFilePath)

End Sub
でも?
ということかな?

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュー...続きを読む

QEXCEL VBAでPDFファイルを開いて印刷

Excel VBAで指定してフォルダのPDFファイルを開いて印刷したいです(できれば閉じるところまで)。
開くところまではできたのですが、その先に印刷するのはどのようにしたら良いか教えてください。
安直な考えで開いた後のコードに何か付け足せばいけるのかと思って色々調べてはみたのですが、
そもそも開く段階で別のコマンドを指定しないといけないのでしょうか。
ちなみに、フォルダは変動しませんがファイル名はA1に入っている文言を拾うようにしています。

現在のコード
Sub printpdf()
Dim keyword As String
Dim myPath As String
Dim fName As String

keyword = Worksheets("Sheet1").Range("A1").Value
myPath = "\\フォルダのパス\"
fName = Dir(myPath & keyword & ".pdf")

If fName = "" Then
MsgBox ("該当するファイルが存在しません。")
Exit Sub
End If

Shell ("explorer.exe " & myPath & fName)
fName = Dir()
End Sub

Excel VBAで指定してフォルダのPDFファイルを開いて印刷したいです(できれば閉じるところまで)。
開くところまではできたのですが、その先に印刷するのはどのようにしたら良いか教えてください。
安直な考えで開いた後のコードに何か付け足せばいけるのかと思って色々調べてはみたのですが、
そもそも開く段階で別のコマンドを指定しないといけないのでしょうか。
ちなみに、フォルダは変動しませんがファイル名はA1に入っている文言を拾うようにしています。

現在のコード
Sub printpdf()
Dim key...続きを読む

Aベストアンサー

#4の回答者です。

>ちなみにプリンターバッファの問題とはバッファにデータが残ってしまうのでしょうか?

ある一定量を越えると、プリンターがうんともすんとも反応しなくなってしまうことがありました。マクロはすごく速く処理してしまうのに、プリンターのほうは、実際に印刷時間がありますから、ギャップがあるのです。

Sleep 1000  '1秒
------------------
cnt = cnt + 1
If cnt > 100 Then Exit Sub

で、ほんのちょっとの時間稼ぎはしています。
ちなみに、
If cnt > 100 Then Exit Sub 
これは、ハンドルが取れない時の保護処理です。

なお、sendkeys は、例えば、エクセルで発生させると、エクセル内に関しては、うまくいくこともありますが、外部には働かないことが多いです。
もし、Sendkeys を試すなら、
  CreateObject("Wscript.Shell").SendKeys "%{F4}"
を試してみることですね。

>キーワードが頭に無い為調べ方すら分からないレベルだったので勉強になりました。
そういう私も、もう一度勉強し直します。WMで始まる命令って4個ぐらいしかないのですが、実は、他の定数で、もっと一杯あることを最近知りました。ネット検索でも、ぜんぜん出てこないのですね。(探し方にVB限定で検索するのが、問題があるようです)

#4の回答者です。

>ちなみにプリンターバッファの問題とはバッファにデータが残ってしまうのでしょうか?

ある一定量を越えると、プリンターがうんともすんとも反応しなくなってしまうことがありました。マクロはすごく速く処理してしまうのに、プリンターのほうは、実際に印刷時間がありますから、ギャップがあるのです。

Sleep 1000  '1秒
------------------
cnt = cnt + 1
If cnt > 100 Then Exit Sub

で、ほんのちょっとの時間稼ぎはしています。
ちなみに、
If cnt > 100 Then Exit Sub 
これは...続きを読む

QVBAで印刷スプール終了の判定をする

Excel97からWord98を操作して、Wordを連続印刷した後にWordを自動的に保存せず
に終了するようなマクロを組もうと考えています。しかし、Wordのスプール処理に時間が
かかる為、スプールしている間に印刷処理のマクロを抜けて終了処理のマクロを実行して
しまい、スプール処理の終わっていないデータが全て破棄されるという事態に
陥ってしまいました。ここでプリンタのスプール処理が終わったことを判定
出来れば、それを検知してからWordの終了処理を実行すれば、全て上手くいく
のです。環境はプリンタがLANで接続されているPCを使っています。
(あまり良く分かりません)
すみませんが、どなたか教えて下さい!

Aベストアンサー

"バックグラウンドで印刷する"をoffにすればよい
PrintBackgroundプロパティ参照

参考URL:http://www.microsoft.com/JAPAN/developer/library/off2000/vbawrd/woproPrintBackground.htm

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QAdobe Reader を閉じる

EXCEL2007のマクロでブックの全シートをPDF形式で保存する処理をしているのですが
保存の都度Adobe Readerのウインドウが残ってしまいます。
表示させない方法か閉じる方法を教えてください。
最後にマクロブック以外のウインドウを全部閉じることが理想です。

Aベストアンサー

PDFの作成は、MS社のアドインを使っていると仮定して・・
Excel2010では下記リンクの3 発行後にファイルを開くのチェックを外して
一旦適当なものを出力すれば、次回以降はチェックは外れたままでReaderは立ち上がりませんでした。
http://www.atmarkit.co.jp/fwin2k/win2ktips/908offpdf/offpdf.html

Excel2010のマクロの記録だと

ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="D:\DATA\123\Book1.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

が取得できました。
2007でも使えるかも?

これでもダメなら強制終了になってしまいますが
Sub rdDel()
Dim wProcess As Object
'アクロバットリーダーの強制終了
For Each wProcess In GetObject("winmgmts:root\cimv2") _
.ExecQuery("select * from Win32_Process where Name='AcroRD32.exe'")
wProcess.Terminate
Next
End Sub

強制終了は、ちょっとね・・でしたら、2007 ユーザーのご登場をお待ちください
以上ご参考まで。

PDFの作成は、MS社のアドインを使っていると仮定して・・
Excel2010では下記リンクの3 発行後にファイルを開くのチェックを外して
一旦適当なものを出力すれば、次回以降はチェックは外れたままでReaderは立ち上がりませんでした。
http://www.atmarkit.co.jp/fwin2k/win2ktips/908offpdf/offpdf.html

Excel2010のマクロの記録だと

ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="D:\DATA\123\Book1.pdf", _
Quality:=xlQualityStandard, _
IncludeDoc...続きを読む

QPDFファイルを順番通りに印刷するためには?

100個くらいのPDFファイルを一度に印刷するためにはどうしたらよいのでしょうか?
Acrobat ProfessionalにはExplorer上でファイルを選択することで複数ファイルを印刷する機能はあるのですが、これはなぜか順番がめちゃくちゃになって印刷されます。
一度一つのPDFファイルに結合してから印刷するという方法はありますが非常に時間も負荷もかかってしまいます。
もっと手軽に出来る方法があれば教えて下さい。

Aベストアンサー

こんにちは
ちょっと古いですが過去log
http://q.hatena.ne.jp/1147713104
が参考にならないですか。

では。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング