こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

エクセルのマクロでPDFを作成したいのですが、作成できません。

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

投稿日時 - 2006-01-27 01:58:59

QNo.1923977

すぐに回答ほしいです

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

こんにちは。Wend02です。

返事遅くなりました。

>VBAの内容は理解できたのですが
>常駐させるとは、どのようにするのでしょうか?
>初心者的質問ですいません。

通常、私は、(MsConfig内の)スタートアップで、「XeloPDFDriver.exe」を起動させておりません。そこで、一旦、エキスプローラで探して、XeloPDFDriver.exeをダブルクリックします。そうすると、メモリに常駐します。

ふつうは、クロセPDFをインストールすれば、そのままスタートアップに登録して、起動させているでしょうから、あまり気にしなくてよいと思います。

投稿日時 - 2006-02-01 13:37:20

ANo.4

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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)の標準モジュールに登録してください。

投稿日時 - 2006-01-28 13:07:42

補足

細かい説明までありがとうございます。
まだパソコンを始めて日が浅い為、知識不足です。

'クロセPDF ドライバーを使った方法
'XeloPDFDriver.exeは、普段外しておいてよいのですが、
'このファイルを常駐し忘れると作成されません。

VBAの内容は理解できたのですが
常駐させるとは、どのようにするのでしょうか?
初心者的質問ですいません。

投稿日時 - 2006-01-30 18:25:27

ANo.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

投稿日時 - 2006-01-27 19:33:36

補足

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

投稿日時 - 2006-01-27 21:11:15

ANo.1

出来ます。

Adobe Acrobat を使うか、
ベクターとかでソフトを探してみてください。

次期のエクセルは、PDFに対応してるらしいけど
未確認情報です。

投稿日時 - 2006-01-27 09:24:57

あなたにオススメの質問