Set BBB = Nothing この前こちらでExcel VBAを使ってPDF保存するマクロをメモしました。今回はこのマクロを使ったちょっとした応用バージョンのマクロをメモします。 このマクロでできること まずはじめに、ここに載せる... 印刷範囲の .PrintArea = “A$1:$E$41” は$A$1じゃなくても大丈夫なんでしょうか? ' Dim WShell As Object Sleep waitTime SendKeys "%{F4}" If IsMissing(printerName) Or IsMissing(printerDriver) Then よって、ループ処理の条件を「fileName <> ""」とし、「ファイルを全て取得するまで」としている Excel 2003 VBAにて、 http://officetanaka.net/excel/vba/statement/SendKeys.htm Terminateで原因不明のエラーが出るのでWebを漁っいて下記をみつけました。64bit環境でエラーが出るのはこれも関係しているのでしょうか?少々無理をしている様なので、ご使用時はご注意下さい。 ■ポイント②:13行目でプリンター名をセット ※「on Ne00:」の前までがプリンター名, ■ポイント③:プリントアウト用のコマンド設定 End If Print #5, AA oExec.Terminate 'これは試験の便宜上 http://msdn.microsoft.com/ja-jp/library/cc364387.aspx, 度重なるご教示ありがとうございました。 Readerがアクティブの状態で Sub printPdf(pdfFullPath As String) InputBox("印刷する対象フォルダの日付を8桁で入力してください" & vbCrLf & "例) 20190801") Dir関数は対象ファイルを全て取得すると空文字("")を返す Left関数で第1引数に対象の文字列、第2引数で取得する文字数をセット, ■ポイント①:6行目のDir関数でフォルダが存在するかをチェック End Sub Set objWShell = Nothing Dim AAA, BBB Sub test() A lot more people have to look at this and understand this side of your story. Excel VBAを使用して、既存のPDFファイルをMicrosoft print to PDFの形式で出力(PDF作成)したいと考えています。また、出力後PDFのファイル名には「変換後_」をつけることで、基ファイルと区別できるようにしたいです。環境は、OS:Win Set AAA = CreateObject("WScript.Shell") ' printPdf2 GetDesktopPath & "\test.pdf" Dim oExec As Object 印刷まではできましたが、アクロバットリーダー本体を閉じることができません。 私のパソコンではAdobe Readerの9を使っているのですが BBB.Terminate ブックをPDFに変換するには、ExportAsFixedFormat メソッド使用します。 構文:オブジェクト. お世話になります。以前、以下のリンク先の質問でA1セルに入力されたファイル名(フルパスの)を取得しPDFを開くマクロを頂きました。※ご解答頂いたWindFallerさん、maiko0333さん、ありがとうございました。このマクロはすごくシンプルで On Error Resume Next ■ポイント④:プリントアウト実行 ↓ Dim cmdLine As String では、PDFファイルが開くのみで、SendKeysが機能しませんでした。 cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"" ""printerName"" ""printerDriver"""   完成品を見て頂きたく、記載させてもらいます。 Sub TTT() printSheetがPDF印刷するシート名、customerNameは作成するPDFのファイル名に使う引数, Worksheet.ExportAsFixedFormat メソッド | Microsoft Developer Network, 1行目:Sub printPDF(ByVal printSheet As String, ByVal customerName As String), 14行目〜23行目:With Sheets(printSheet).PageSetup, 25行目:Sheets(printSheet).ExportAsFixedFormat Type:=xlTypePDF, _ …. プリンター名がわからない場合 End Sub Set AAA = Nothing Sleep関数の使い方は以前より知っていたのですぐ理解できました。   というわけで、マクロで指定フォルダのPDFを一気に全部印刷する方法をご紹介します。, PDFを印刷するマクロを作成する前にいつもと違う準備を2つしておく必要があります。, PDFを自動で印刷する際、プリンタ名を指定する必要があるため、プリンタ名を確認します。, イミディエイトウィンドウに「application.ActivePrinter」と入力してエンターを押すとプリンター名が表示されます。, 今回はサンプルとしてデスクトップにある’請求書’という名前のフォルダを指定しています。, これが例えばDドライブ直下にある’領収証’というフォルダであった場合、以下のようになります。, 先ほどイミディエイトウィンドウで確認をしたプリンタ名を「printerName=~~」に入力します。, 以上、2点を自分用にカスタマイズするだけで、指定フォルダのPDFファイルを一気に印刷してくれます。, たった、6行のコードでPDF印刷を自動化できてしまいました。今回紹介したコードがマクロでPDFを印刷する基本形となります。, なので、例えば印刷したファイル名をエクセルに転記していくといった拡張をしていきたい場合はこのコードを基礎にやっていけばOKです。, 「~~~on Ne01:」の「on Ne01:」部分はプリンタ名ではないので無視する。~~~の部分がプリンタ名, 会社と上司と同僚、全部嫌い。 日々、副業とプログラミングに汗を流す。仕事では汗流さない。少しでも仕事で楽をする方法と独学プログラミングでアプリを作る方法を紹介していくぜ。, https://zangyou-macro.com/wp-content/uploads/2020/05/残業減らす部のコピーのコピー-1.png. (adsbygoogle=window.adsbygoogle||[]).push({}); ここでいう連続印刷は決まったフォーマットに対して一部を切り替えて(名前など)連続で印刷することを指します(^^)/, 下記にサンプルコードを載せさせていただきました、下記のコードでは画像の黄色の部分にマスターに記入査定ている名前が順番に入れ替わり印刷されます(^^)/, 連続印刷のサンプルコードはいたってシンプルな作りになっています(^_-)-☆ おせっかいかもしれませんがPDF出力するコードも記載してありますのでご自由に編集してお使いください(^^♪, 連続印刷はいろいろな応用ができる可能性をもっています(-ω-)/ 私が仕事で使っっているシステムでは登録者の情報一覧を決まったフォーマットで連続で印字できますし、今の時代の紙で情報を共有する時代ではありませんよね(笑), PDFであればメールやLINEなど様々な状況でシェアができますし、そしてスマートフォンやタブレット端末、PCなど様々なデバイスで確認ができます(-ω-)/ いままで紙でしか伝えることができなかった書類が離れている同僚へ瞬時に送れるファイルに変身するわけです(^^)/. You certainly know how to bring an issue to light and make it important. こんにちは Dim wScriptHost As Object, strInitDir As String cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath) Dim myFile As String AAA = Shell(AA, vbNormalFocus) SendKeys "^p", True Excelで指定したシートの指定範囲を自動で大量に印刷したい場面に遭遇し、PDF印刷するためのマクロを作ったので備忘録を兼ねてメモします。以下のマクロでは、PDF印刷するシート、印刷範囲、ファイル名の指定が可能です。, 以下のマクロは、PDF印刷したいシート名とそのPDFファイルの名前を引数として受け取って、指定したフォルダに保存することができます。何かをインストールしないといけないとかはなく、Excel2010以降であれば以下のマクロをコピペして実行するだけで使用できると思います。, なお、以下のマクロではPDF印刷するシートの印刷範囲を「.PrintArea = “A$1:$E$41″」というように、A1からE41の範囲に固定していますが、必要であればこの印刷範囲自体も引数として取得するようにすればいいと思います。, 「printSheet」がPDF印刷するシート名です。また、上記では、PDFファイル名に使うために「customerName」という引数を指定していますが、これは私の用途で必要だったので指定しているだけです。, 保存するPDFのファイル名を指定しています。VBAでは文字列の結合に「&」を使います。上記の場合、例えば変数printSheetに「PDFfile」、変数customerNameに「virtualiment」がそれぞれ格納されていた場合は、「PDFfile for virtualiment」というPDFファイルが作成されます。作成される場所は次の行にある「Chdir」で指定できます。, これはカレントフォルダを指定しています。ここで指定したフォルダにPDFが作成されます。以下参照。 上記のコードだとCドライブ直下の「ExcelPDF」というフォルダに保存されます。, 行目から行目では、With構文を使って、PDF印刷のオプションを指定しています。With構文については下記がわかりやすく参考になりました。また、ここで指定しているオプションの意味については上記のコメントの通りです。, この行で印刷を実行しています。ここでも印刷に関するパラメータをいくつか指定しています。指定できるパラメータと内容については以下を参照して頂ければと思います。また、この行を1行で書くと非常に長くなり見難いので、継続行である「_」(アンダースコア)でつないで複数行に分けて記述しています。VBAにおける継続行とアンダースコアについては以下が参考になりました。, Worksheet.ExportAsFixedFormat メソッド | Microsoft Developer Network 継続行の書き方 | 超やさしいVB2012文法, 簡素過ぎて使用例というほどのものではないですが、以下が一番簡単な使い方かと思います。これだけでは実用性はないですが、これを基にいろいろできると思います。以下のマクロをExcelのVisual Basic Editorに貼り付けて実行すれば、「Sheet1」の「A1:E41」の範囲のPDFが作成されます。作成されるPDFの名前は「Sheet1 for test」になります。, ##### 2014/6/23追記 こちらにこの記事に載せたマクロを使った応用例をメモしたので必要な方は見てみてください。Excel VBAで別シートへの値挿入とPDF保存を自動化するマクロ. VBAから実行するにはSendKeysでReaderを操作するのが一番簡単な方法 ■ポイント②:14行目の「.pdf」で拡張子が「pdf」、ファイル名はワイルドカード「」でどのようなファイル名でも良いようにしている ■ポイント⑥:32行目の「Dir()」で次のファイルを取得 ファイルを全て取得した場合は空文字("")を返す, ■ポイント①:6、7行目でWshShellクラスのインスタンス変数をセット 「この文書を開くときにエラーが発生しました... Excel VBAで取得したデータをPDF変換ソフトを使わずPDF化するプログラムはあるのでしょうか? ... Sub test() ※都合上、コメントアウトを「//」としているのでコピペする場合は「’」に置換してください, ■ポイント:参照設定をする AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\20131101160734050_001.pdf" SendKeys "%{F4}" I really like what you’ve acquired here, really like what you are saying and the way in which you say it. 今一度ご教示をお願いします。, 参照先が繋がっていた 'ここは調整の必要がありそう ExportAsFixedFormat( Type, Filename ) パラメータの説明: ・オブジェクト:ブックやシート、セルを指定します。 I cant wait to read far more from you. エクセルのシートをPDFに変換して保存したい場合には、PrintOutメソッドを使います。PDF出力用の仮想プリンタ名は、仮想プリンタを現在使用しているプリンタに設定した後、イミディエイトウインドウに「?Application.ActivePrinter」と入力することで確認できます。 Can I simply say what a comfort to find a person that truly understands what they’re talking about on the net. ■ポイント④:26行目の下記記述でPDFファイルを開く VBA画面で「ツール」⇒「参照設定(R)」⇒「Windows Script Host Object Model」にチェック, ■ポイント:PDFファイルが格納されているフォルダのパスを「fullFolderPath」でグローバル変数で宣言することにより、全てのプロシージャで使用することを可能にしている, 後記する「FolderSearch」と「OpenFile」のプロシージャをCallステートメントで呼び出している, ■ポイント:5行目と7行目の「PDFファイルが格納しているフォルダを探す」という処理と「PDFファイルを開く」という処理を分けて記述することによってプログラムの可読性と汎用性を高めている, ■ポイント①:16行目のInputBox関数によりPDFファイルが格納しているフォルダを動的に選択できるようにしている cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument) SendKeys "{ENTER}" で終了できます http://pdf-file.nnn2.com/?p=752http://www.f3.dio … Dim myFile As String Dim AA, BB, CC, DD http://www.f3.dion.ne.jp/~element/msaccess/AcTipsAdobeReader.html Dir関数の第2引数で「vbDirectory」を指定してフォルダが存在するかをチェックしている AAA = Shell(AAA, vbNormalFocus) Set BBB = AAA.exec(DD) End Sub を作りました。 Set WShell = CreateObject("WScript.Shell") Dim AA, AAA   Set wScriptHost = CreateObject("Wscript.Shell") cmdLine = "AcroRd32.exe /n /s /o /h /t " & pdfFullPath & " " & printerName & " " & driverName このPDFファイルを、「印刷し、閉じる」ためには、 エクセルマクロで、特定シートをPDFで保存するVBAコードをご紹介します。 このページのマクロコードは、コピペで使えます。 ぜひお試しください! シートをPDF保存(特定シート) 以下のExcelVBAを実行すると、特定のシートをPDF保存します。 「Sheet1」シートをPDFで保存します。 Windows Script Host Object Model を追加せよとのことなんですよね。 ■ポイント③:24行目の「Do While ~ Loop」でフォルダ内のファイル名が空文字になるまでループ処理 あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪. 趣味 アニメ・ゲーム、PCやスマートフォンについての情収集という典型的なオタク(^_-)-☆ 苦手な分野 英語がどうしても覚えられません( ;∀;), WEBサーバー:エックスサーバー WordPressテーマ「ストーク」 使用OS:Windows10 Home 使用ソフト:Office365, 企業様との共同企画! 【IT企業てどんな感じ?ブラックが多いの?実際に社長に聞いてきた!」】. Excel 2003 VBAにて、PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。Dim AA, AAAAA = "C:\Program Files\Adobe\Reader 11BIGLOBEなんでも相談室は、みんなの「相談(質問)」と「答え(回答)」をつなげ、疑問や悩みを解決できるQ&Aコミュニティサイトです。 Private Function GetDesktopPath() As String I have understand your stuff previous to and you are just extremely wonderful. いま少し、お知恵を拝借させてください。, PDFファイルの印刷はReader上で行うので、Excelから直接実行はできません Excelのシートを自動で大量に印刷したい場面に遭遇し、PDF印刷するためのマクロを作ったので備忘録を兼ねてメモします。印刷するシート、印刷範囲、ファイル名も指定可能です。   スポンサーリンク.   Excelで作成したドキュメントに対しVBAを使ってPDF化して保存することが出来ます。(Excel2007SP2以前は「2007MicroSoft Officeプログラム用MicroSoft PDF/XPS保存アドイン」が必要)ブック全体や特定シート、ページ指定も出来ますので、その方法について書いてみたいと思います。 BB = "C:\Scan\MX-4111FN_20131003_162711.pdf" GetDesktopPath = wScriptHost.SpecialFolders("Desktop") VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日; VBA 日付で令和を簡単に判定してみよう - 2019年5月7日 Dim cmdLine As String 本当にありがとうございました。, このViewの中に同様の質問が二つあるのに、灯台もと暗しというか面白いですね。質問者様のコードに、コマンドラインオプションを追加するだけなのですが、関数化したので使いやすいかもしれません。 obj.Run (printOutCommand) Set oExec = WShell.exec(cmdLine) https://app.box.com/shared/jisind0q7l 私も、はじめ内容がよくわからなかったけど、Reader開かずにVBA上から直接印刷できるなど、理解できると結構便利に使えます, Copyright ©2020 OKWAVE, Inc. All Rights Reserved. ポイント③で設定したコマンドをWshShellのRunメソッドで実行してプリントアウト IEでP... http://msdn.microsoft.com/ja-jp/library/cc364387.aspx, http://pdf-file.nnn2.com/?p=752http://www.f3.dio, http://www.f3.dion.ne.jp/~element/msaccess/AcTipsAdobeReader.html, http://officetanaka.net/excel/vba/statement/SendKeys.htm, http://www.moug.net/tech/exvba/0150016.html, http://pdf-file.nnn2.com/?p=752http://www.f3.dion.ne.jp/~element/msaccess/AcTipsAdobeReader.html.   DD = AA & """" & BB & """" & " " & """" & CC & """" 「fileName = Dir(fullFolderPath & "¥" & "*.pdf")」でフォルダ内に存在するPDFファイルの1つを取得し、「fileName」にセット Else End Sub Set WShell = Nothing ■ポイント⑤:オブジェクトで使用していたメモリを開放 ファンクション内で使用する為に第1引数に「フォルダパス」、第2引数に「ファイル名」を指定   printerName = Chr(34) & "DocuWorks Printer" & Chr(34) Dim AA, AAA "AcroRd32.exe /t " & fullFolderPath & "¥" & fileName 試したところ、印刷まではできましたが AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\MX-4111FN_20131003_162711.pdf" VBAでPDFを同じフォルダに保存する方法 ブックをPDFに変換するには. Sub test() PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。 「Adobe Reader」を起動し、「/t」オプションで印刷ダイアログボックスを表示せずにPDFファイルを印刷するコマンド その他の方法として End Sub Acrobat 7.0ですとShell起動できるのですが、Acrobat 8.0ですと起動... Sub Sample() ココでダウンロードしたエクセルファイルに組み込まれています Const waitTime As Long = 1000 本来はこれに加えて全角半角もチェックするべきだが、ソースコードをシンプルにする為に割愛している cmdLine = Replace(cmdLine, "printeDriver", printerDriver) Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)