- ベストアンサー
エクセルVBAでPDFを作成したいのですが
エクセルのマクロでPDFを作成したいのですが、作成できません。 エクセルの中のシート1だけをPDFファイルにしたいのですが、 マクロでは無理なのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。Wend02です。 返事遅くなりました。 >VBAの内容は理解できたのですが >常駐させるとは、どのようにするのでしょうか? >初心者的質問ですいません。 通常、私は、(MsConfig内の)スタートアップで、「XeloPDFDriver.exe」を起動させておりません。そこで、一旦、エキスプローラで探して、XeloPDFDriver.exeをダブルクリックします。そうすると、メモリに常駐します。 ふつうは、クロセPDFをインストールすれば、そのままスタートアップに登録して、起動させているでしょうから、あまり気にしなくてよいと思います。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >あとPDFにファイル名までを自動入力したいのです。 通常は、ブックのファイル名がそのまま使われています。それを、ファイル名を入れられるように、手直ししてみました。 私のほうではうまくいきました。なお、マクロの中にも書きましたが、私の場合は、通常、「クロセPDF」のプログラムは、StartUpで常駐させておりませんので、手動で立ち上げています。マクロという方法もあるのですが、常駐チェックから始まり、かなり大げさになりますので、それは割愛しております。 Sub PdfMakingR() 'クロセPDF ドライバーを使った方法 'XeloPDFDriver.exeは、普段外しておいてよいのですが、 'このファイルを常駐し忘れると作成されません。 Dim PresentPrinter As String Dim Fname As Variant Fname = Application.InputBox("ファイル名を入れてください。", Type:=2) If VarType(Fname) = vbBoolean Then Exit Sub If InStr(Fname, "pdf") = 0 Then Fname = Fname & ".pdf" PresentPrinter = Application.ActivePrinter Application.ActivePrinter = "クセロPDF on C:\クセロPDF\Xelo PDF Port" ActiveSheet.PrintOut Application.Wait Now + TimeValue("00:00:03") With CreateObject("Wscript.Shell") .SendKeys Fname .SendKeys "%S" End With Application.ActivePrinter = PresentPrinter End Sub なお、なるべく、標準モジュールに入れたほうが負担が軽く済みます。標準モジュールへの取り付け方は、 Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、上のコードを貼り付けて、Alt + Q で、画面を閉じます。 その後は、ツールバーの「フォーム」を出して、ボタンをワークシートに貼り付け、マクロの登録で、このマクロ名を選択すれば出来上がりです。ただし、印刷範囲内には、ボタンは入れないほうがよいと思います。 もしくは、ユーザー設定で、ツールバー等にボタンをつけてマクロの登録をしますが、その場合は、マクロは、「個人用マクロブック」(PERSONAL.XLS)の標準モジュールに登録してください。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 私は、フリーソフトウェアなら、「クロセPDF」で、以下のようにして使っています。 下の >"クセロPDF on C:\クセロPDF\Xelo PDF Port" の部分は、インストール先ですから、一度、記録マクロなどで試してみると良いと思います。 後は、Acrobat のDistiller ですが、持っていれば、ここでお訊ねになりませんよね。 Sub PdfMaking() 'クロセPDF ドライバーを使った方法 Dim PresentPrinter As String PresentPrinter = Application.ActivePrinter Application.ActivePrinter = "クセロPDF on C:\クセロPDF\Xelo PDF Port" ActiveSheet.PrintOut Application.Wait Now + TimeValue("00:00:03") CreateObject("Wscript.Shell").SendKeys "%S" Application.ActivePrinter = PresentPrinter End Sub
補足
早速の返事ありがとうございました。 他のアプリケーションを動かすVBAは知識不足で、理解が出来ていませんが、これで出来そうです。 あとPDFにファイル名までを自動入力したいのです。 教えていただけないでしょうか、よろしくお願いします。
- chibita_papa
- ベストアンサー率60% (127/209)
出来ます。 Adobe Acrobat を使うか、 ベクターとかでソフトを探してみてください。 次期のエクセルは、PDFに対応してるらしいけど 未確認情報です。
補足
細かい説明までありがとうございます。 まだパソコンを始めて日が浅い為、知識不足です。 'クロセPDF ドライバーを使った方法 'XeloPDFDriver.exeは、普段外しておいてよいのですが、 'このファイルを常駐し忘れると作成されません。 VBAの内容は理解できたのですが 常駐させるとは、どのようにするのでしょうか? 初心者的質問ですいません。