ExcelVBAでPrimoPDを制御する方法

このQ&Aのポイント
  • Excelのブックをマクロを使ってPDF化する方法をご紹介します。
  • PrimoPDFを活用することで、手動操作なしで大量のファイルをPDF化することが可能です。
  • また、Excelのバージョンによっては「PDFで保存」の機能が使えない場合でも、PrimoPDFを利用することで問題を解決することができます。
回答を見る
  • ベストアンサー

ExcelVBAでPrimoPDを制御したい

いつも楽しく勉強させていただいております。 環境はwin7でExcel2003です。 Excelのブックをマクロを使ってPDF化したいのですが、問題はOfficeのバージョンが2003なのでPDF形式でで保存という機能がありません。 そこでPrimoPDFというフリーソフトをインストールして、マクロの自動保存で下記のプログラムを作りました。 Sub Macro1() Application.ActivePrinter = "PrimoPDF on Ne08:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "PrimoPDF on Ne08:", Collate:=True End Sub 問題はこれを実行するとPrimoPDFのダイアログボックスが出てきてしまうことです。 PDF化したいファイルは1000以上あるのでいちいち手動でボタンをクリックすることはできません。 できれば保存する場所やポストプロセス(PDFを開くなど)を「なし」にするなどの設定もマクロで行いたいのですが、相手がPrimoPDFでは無理でしょうか。どうしてもPrimoPDFを使いたいわけではありません。もしそれ以外でお勧めの方法があればそれでもいいのですが。 ただ、Excelはどうしても2003でやりたいのです。2007だと「PDFで保存」の機能を使用できるのですが、どういうわけか2007だとレーダーチャートの形が崩れてしまうので

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

  • ベストアンサー
  • angel_Z
  • ベストアンサー率66% (12/18)
回答No.1

こんにちは。 >PrimoPDFでは無理でしょうか そうみたいです。 http://www.accessclub.jp/bbs2/0117/beginter34924.html で、これ使えませんか? 参考URL http://gigazine.net/news/20080116_bullzip_pdf_printer/ http://michitoshi.blogspot.jp/2011/08/excel-vba-bullzippdf.html

meglin888
質問者

お礼

回答ありがとうございます。 やはりPrimoPDFでは無理なようですね。 Bullzipも興味ありますが、社内の規定で自分でインストールできないので簡単には試せないのです。 年内は手動でPDF化し、年明けに有償のPDFソフトを買ってもらうことになると思います。 余談ですが、三つ目のURLのサイトのタイトルが今の自分の心情にぴったりで泣けました。

関連するQ&A

  • VBでプリンターを選ぶ

    プリンターが数台あり、用紙によって、プリンターをVBで選ぶことをしていますが、一度OKになったVBが、数日立つとなぜかエラーになってしまいます。プログラムは、オートで作成したのですが下記のようになっております。下記で、[']の命令は、前回はOKであったのですが、本日はエラーになった分です。どなたかどうすればよいか教えてください。 Application.ActivePrinter = _ "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS on Ne04:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS on Ne04:", Collate:=True 'Application.ActivePrinter = ' "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS on Ne03:" 'ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ ' "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS on Ne03:", Collate:=True

  • エクセル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はどの様に追加すれば良いでしょうか?

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

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

  • マクロ 連続印刷

    マクロ初心者です。 ピボットテーブルでマクロを使って連続印刷をしようと思いました。 一応やってみて連続で印刷は出来たのですが番号がないときエラーになってしまします。 たとえば"562"という番号がないときエラーになって止まってしまいます。 番号がないときは飛ばして印刷するにはどのようにしたらよいでしょうか? よろしくお願いします。 Sub 連続印刷() ' ' 連続印刷 Macro ' ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "562" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "947" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "950" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "952" End Sub

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

    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を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • PDF化に関するマクロを教えてください。

    初めまして。どなたかご親切な方、教えてください。 エクセルのファイルに、約50のシートがあります。すべて同じ形式で、A4縦1枚に収まるサイズです。それぞれのシートに、外部からのリンクで数値が入るようになっています。このファイルを開いて、 ・シートごとに ・シートの名前をファイル名として ・PDF化 したいのです。 例)シート「A商事」→「A商事.pdf」 シートごとにPDF化するところまでは自力で組めたのですが、シートの名前を自動でPDFファイルの名前にする工程がうまく行きません。 なお、作業環境はWindows2000pro、Microsft Office Excel 97、Adobe PDF Writerです。派遣社員で、派遣先の環境のため、バージョンアップしたり新しいソフトを(フリーソフトでも)ダウンロードすることはできません。注文が多くて申し訳ありません。 下記に自分で組んだマクロを記述します。アドバイスよろしくお願いいたします。 Sub PDF化() Application.ActivePrinter = "Adobe PDF on Ne01:" For i = 1 To ActiveWorkbook.Sheets.Count Sheets(i).Activate ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "Adobe PDF on Ne01:", Collate:=True Next i End Sub

  • VBAでA3サイズに印刷したい

    Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2007/5/23 ユーザー名 : Administrator ' ' Sheets("印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub マクロの自動作成でこのように作りました これをA4からA3に拡大印刷したいのですが、どのようにしたら良いのでしょうか教えてください、よろしくお願いします。

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

    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ファイルの毎日印刷シート+日曜日印刷シートのみが出力される形です。 よろしくお願いします。

  • excel vba 印刷部数設定

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

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

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

専門家に質問してみよう