• ベストアンサー

エクセルVBAでPDFを作成したいのですが

エクセルのマクロでPDFを作成したいのですが、作成できません。 エクセルの中のシート1だけをPDFファイルにしたいのですが、 マクロでは無理なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。Wend02です。 返事遅くなりました。 >VBAの内容は理解できたのですが >常駐させるとは、どのようにするのでしょうか? >初心者的質問ですいません。 通常、私は、(MsConfig内の)スタートアップで、「XeloPDFDriver.exe」を起動させておりません。そこで、一旦、エキスプローラで探して、XeloPDFDriver.exeをダブルクリックします。そうすると、メモリに常駐します。 ふつうは、クロセPDFをインストールすれば、そのままスタートアップに登録して、起動させているでしょうから、あまり気にしなくてよいと思います。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >あと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)の標準モジュールに登録してください。

umauma2
質問者

補足

細かい説明までありがとうございます。 まだパソコンを始めて日が浅い為、知識不足です。 'クロセPDF ドライバーを使った方法 'XeloPDFDriver.exeは、普段外しておいてよいのですが、 'このファイルを常駐し忘れると作成されません。 VBAの内容は理解できたのですが 常駐させるとは、どのようにするのでしょうか? 初心者的質問ですいません。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 私は、フリーソフトウェアなら、「クロセ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

umauma2
質問者

補足

早速の返事ありがとうございました。 他のアプリケーションを動かすVBAは知識不足で、理解が出来ていませんが、これで出来そうです。 あとPDFにファイル名までを自動入力したいのです。 教えていただけないでしょうか、よろしくお願いします。

回答No.1

出来ます。 Adobe Acrobat を使うか、 ベクターとかでソフトを探してみてください。 次期のエクセルは、PDFに対応してるらしいけど 未確認情報です。

関連するQ&A