Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7全般 : Excel 2010)
Excel VBA でのPDFファイルの印刷について
投稿日時: 17/08/04 04:36:34
投稿者: VA_DEER

VBAの初心者です。ご存知の方がいましたら教えてください。
 
PDFのファイルでfillable(入力可能な欄を持つファイル)を、PDFの機能から、
 「印刷−プリンタの設定−Adobe PDF」を選択して、fillableの機能を除いた通常のPDFファイルにして保存するマクロを作成する必要があります。
デフォルトプリンタをAdobe PDFに設定しておいて、現在作成中のPDF印刷マクロ(未完成)から、ファイル名を入力するboxが表示されて、そこから保存は可能です。
 
マクロ内でファイル名を取得して、指定したフォルダに保存するところまでマクロで実行させるのが目的です。
 
 以下、とりあえず動いているコードです。
ShellExecute(0&, "print", ...) のところで、保存するファイル名を手入力すると、とりあえず目的の通常のPDFファイルが作成できますが、ここを自動化させるにはどう書いたらいいのでしょうか?
ファイル名は、例えばB2セルから取得する、などでもOKです。
 
よろしくお願いします。
ちなみに、下のコードで突っ込みどころがありましたら、あわせてご指摘頂けるとありがたいです。
 
 
Private Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" (ByVal hWnd&, _
 ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, _
 ByVal nShowCmd&) As Long
 Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
 Private Const WM_CLOSE As Long = &H10
 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
 Sub OpenPdf()
 Dim FileName As String
 Dim retval As Long
 Dim hWnd As Long
 Dim cnt As Long
 Const myFOLDER As String = "C:\Users\necuser2\Desktop\76\"
 Const ACR_CLASSNAME As String = "AcrobatSDIWindow"
 
 FileName = myFOLDER & Worksheets("Sheet1").Range("A1").Value & ".pdf"
 If Dir(FileName) <> "" Then
 retval = ShellExecute(0&, "print", FileName, vbNullString, vbNullString, 1)
 
 
 End If
 If retval = 0 Then Exit Sub
 Sleep 1000
 Do
 hWnd = FindWindow(ACR_CLASSNAME, vbNullString)
 DoEvents
 cnt = cnt + 1
 If cnt > 100 Then Exit Sub
 Loop Until hWnd <> 0
 
 Call SendMessage(hWnd, WM_CLOSE, 0&, 0&)
 End Sub

回答
投稿日時: 17/08/05 11:43:34
投稿者: simple

Acrobatは外部からアクセスできるObject Modelを提供していますから、
それを使うとよいのではないでしょうか。
「Acrobat VBA」などとすると関連情報がでてきます。
 
Windows APIを使いこなす"VBA初心者"さんは余り見かけたこともないが、
VBAは初心者というだけで、他はバリバリのようですから、
ご自身でトライすることをお奨めします。

投稿日時: 17/08/09 05:02:54
投稿者: VA_DEER

simple様
 
ご回答をありがとうございます。
Acrobat VBAで検索してみます。ありがとうございました。

トピックに返信