ExcelブックからシートデータをPDFで保存する

このQ&Aのポイント
  • ExcelブックからシートデータをPDFで保存する方法について解説します。
  • Excel2000 VBAを使用して、ExcelブックからシートデータをPDFファイルとして保存する方法についてご説明します。プリンターをPDF作成ソフトに設定してプリンター出力として保存する方法や、フォルダとファイル名をセルに指定して一括保存する方法についてもご紹介します。
  • Excelブックからシートデータを簡単にPDFで保存する方法をご紹介します。プリンターをPDF作成ソフトに設定してプリンター出力として保存する方法や、フォルダとファイル名をセルに指定して一括保存する方法を使えば、手間を省くことができます。また、Excel2000 VBAを使用して自動化する方法もご紹介します。
回答を見る
  • ベストアンサー

ExcelブックからシートデータをPDFで保存する

ExcelブックからシートデータをPDFで保存する Excel2000 VBAで処理しています。 現在、プリンターをPDF作成ソフトにしてプリンター出力として保存しています。 コード: ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True これですと次の点で困っています。 1.通常使うプリンタにしないと出力できません  この点は別のプリンタでも出力するためにVB6.0と同じようにprinterオブジェクトを使おうとしましたが、参照設定でVisual Basic objects and proceduresを参照有に使用としましたがエラーになって出来ませんでした。 2.保存先のフォルダおよびファイル名をセルに指定しておいて、ワンクリックで保存できないでしょうか。 いちいち保存先のフォルダに移動して、ファイル名を書き込むのが手間です。 1,2回のことでしたら手間ではないのですが、毎日何十回と行うのでVBAで手間を省こうとしました。しかし、PDF保存の手間は省けていません。 よろしくお願いいたします。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

ANo.1です。 >BullZip PDF Printerというソフト 残念ながら使用した事はありません。 ただググって見たところ、 http://d.hatena.ne.jp/morningmist7/20080623/1214216982 が見つかりました。 保存先についてはセルから取得すれば対応できると思います。 (検証できずにすいませんけど、試してみて下さい。)

takuma_18
質問者

お礼

ありがとうございます。 簡単に出来ましたと書きましたが、動作確認してフォルダ・ファイル指定で出来ました。 ただ、使ったことのないソフトで評判が気になりました。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

ANo.1&2です。 >ただ、使ったことのないソフトで評判が気になりました。 ここについては、ソフト名でググってみてとしか言えないですね。 あとは使ってみて不具合があるようなら、他のソフトに切り替えるなりの 対応をとって頂くとか。。。 会社で使用されているのであれば、Acrobat等への検討もされてみては 如何でしょうか。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

1については、PrintOut メソッドのActivePrinterでプリンターの指定が出来ます。 2については使用しているPDFソフトによると思います。 保存先を指定しているのはExcelではなく、そのソフト側のはずですから。 ExcelVBA PDF でググってみると色々参考になるサイトも見つかります。 (大抵はAcrobatのようですけど。)

takuma_18
質問者

お礼

ありがとうございました。 1.出来ました。 ヘルプのPrintOut メソッドも見てないですみませんでした。 2.PDFのソフトごとということですね。 BullZip PDF PrinterというソフトでExcelVBAから出力できました。 ただ、このソフトの評判はどうなのでしょうか? すかしで文字化けとかの指摘は有りましたが、もし使われたことがあったりされたら参考までにご意見いただけますか。

関連するQ&A

  • エクセルVBA実行後にファイルを自動で閉じるVBA

    Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルを呼び出し各シートを自動印刷して保存して閉じるVBAです。 質問ですがボタンの配置されたあるエクセルファイルの上記VBAの処理を全て完了した後に上書き保存を自動で実行し、自動であるエクセルファイルを閉じるVBAはどの様に追加すれば良いでしょうか?

  • 指定する曜日の時に特定のエクセルファイルを印刷

    Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True  ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルの各シートを自動印刷して保存するVBAです。 ボタンが設置されているシートのK1には「TODAY()」の式が入っています。これは当日の日付を自動で表記する様になっています。 質問ですがボタンを押すと毎日印刷シート+K1に記入されている日付の曜日のシートのみを印刷するVBAはどの様にすれば良いでしょうか? 例えば今日(2016年9月10日)で言うと土曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+土曜日印刷のみ出力されると言う事です。 明日(2016年9月11日)は日曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+日曜日印刷シートのみが出力される形です。 よろしくお願いします。

  • エクセル VBA シート毎に同じ動作をしたい・・・

    エクセルVBAでシート毎に同じ動作をしたいのです。 例えば A・B・C・D・E とシートがあるのですが、A以外のものを全部印刷したいのです。 今までは Worksheets("B").Select Range("A1:AG44").Select Selection.PrintOut From:=1, To:=1, Copies:=1, Collate:=True Worksheets("C").Select Range("A1:AG44").Select Selection.PrintOut From:=1, To:=1, Copies:=1, Collate:=True と これを繰り返していたのです。 これをやると文章も長くなりますし、シート名が変わったときには、VBAもすべて書き直しと言う状況になってしまいます。 何か打開策はありますでしょうか? よろしくお願いいたします。

  • Excel VBAで自動印刷プログラムの作り方を教えて下さい。

    あるファイルにある全てのグラフを印刷するマクロを作りたいのですが、 どのようにすれば良いのでしょうか? Sub Macro2() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub に何を付け足せば良いのでしょうか? 何卒よろしくお願い致します。

  • Excel VBAを使用してエクセルシートをPDF化する方法を教えてく

    Excel VBAを使用してエクセルシートをPDF化する方法を教えてください。 【質問】 Excel VBAを使用してエクセルシートをPDF化し、指定したフォルダに自動的に保存されるようにしたいです。どういうコードを書けばよいか具体的にご教示いただけないでしょうか? 以下、参考資料 【参考:PSファイルを作成すべく自分で試したコード】 ******************************************************************************** Sub PDF_WRITE() Set objAcroPDDoc = CreateObject("AcroExch.PDDoc") Application.ActivePrinter = "Adobe PDF on Ne01:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "Adobe PDF on Ne01:", Collate:=True, PrintToFile:=True, PrToFileName:="C:\test.ps" End Sub ******************************************************************************** ↑を実行すると「postscript ファイルの作成時には、ホストフォントを送信する必要があります。」 とのエラーが表示されます。 しかしAdobe PDFの印刷設定から「フォントを送信しない」のチェックをはずしても、実行時に同じエラーが表示されます。 【使用ソフト&環境】 ・Acrobat Distiller 6.0 ・Adobe Acrobat 6.0 Standard ・Excel 2003 ・Windows XP 【不可】 ・業務用PCで使用するので、フリーソフト等、上記以外のソフトウェアのインストールはできません 【質問者スペック】 ・プログラミングは殆どできません。エクセルでマクロを作成する際も、自動記録をベースにして多少変更を加えることができるくらいです。 【今まで参考にしたウェブページ】 http://pdf-file.nnn2.com/  (↑いろいろ詳しく書いてあるのですが、(1)「PDF化する」という項目がピンポイントでは出てこない、(2)私のような初心者には「アレンジする」ということができないので、「コピペしたらすぐ使えるコード」でないと参考にできません。。。) http://www.asp-edita.jp/doda/one/doda1789_15.html (↑ExcelExecute4MacroでPDF化できるのかもしれませんが、コピペして動かすと「入力した数式は正しくありません」とのエラーがでます。)

  • エクセルで印刷画面までをマクロにしたい

    いつもお世話になっております。 ここで色々教わりながら複数の人が使う多数のエクセルブックの定常作業をマクロ化しています。 保存するファイル名を自動取得してPDFで保存するマクロと、下記の2行を組み合わせてマクロボタンのワンクリックで保存、印刷が出来る様になたのですが、印刷時に色々設定したい場合もあるので、印刷画面までで止めたいのですがNETで調べても「印刷」は一杯あるのですが手前で止めるコードが分かりません。 いつもの「マクロの記録」も使えずお手上げ状態です。 宜しくお願いします。 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False

  • エクセルのマクロの記述について

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • excel vba 印刷部数設定

    excel 2002を使用しています。 マクロで印刷および印刷プレビューせずに、印刷部数を設定する方法を探しています。 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True  ではプレビューしてしまいます。 ActiveWindow.SelectedSheets.PrintOut Copies:=1  では印刷してしまいます。 印刷およびプレビューしない方法はないものなのでしょうか。 よろしくお願いします。

  • エクセルマクロ印刷時にプリンタを指定できますか?

    エクセル2002を使用しています。VBAはまったくわかりません。 マクロの自動登録で印刷を記録すると、通常使うプリンタから 出力されるようですが、LANでプリンタ複数使用可能な環境です ので、いちいち通常使うプリンタを変更するのではなく、マクロ 実行時にプリンタを選択したく思います。  因みに、以下のマクロはSheet1に値を入力し、Sheet1の値をコピー したSheet2を印刷するというマクロです。このマクロのどの部分に コードを付け加えればプリンタをこのマクロ実行時に選択可能でしょうか? もしくはマクロではプリンタを選択できないのでしょうか? どうぞよろしくお願いいたします。 ****************************************************************** Sub 印刷() Sheets("Sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("Sheet1").Select End Sub *******************************************************************

  • Excel VBA 印刷設定

    印刷ページ設定で ActiveWindow.SelectedSheets.PrintOut From:=1, To:=3, Copies:=2, Collate :=True の式で、何ページまで印刷するかを、A1セルに入力して決定したいのですが、数式の書き方がわかりません。 A1に2と入力すれば、To:=2と認識するやり方を教えてください。 宜しくお願いします。

専門家に質問してみよう