質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

受付中

【 EXCELーVBA 】助けて下さい! リストの順にPDFファイルを印刷したい。

RANDS_CHANP
RANDS_CHANP

総合スコア14

印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

1回答

0評価

1クリップ

316閲覧

投稿2022/05/17 09:46

編集2022/05/20 23:53

現在、サンプルコードを参考にさせて頂いて、フォルダ内のPDF図面を自動で印刷するというVBAを作っています。

EXCELアクティブシートにA1からA2,A3…と下にファイル名が並んでおり、そのリストの上から1件ずつ順にフォルダ内にファイルがあるかを検索し、ファイルがあれば印刷してエクセルにあるファイル名を赤字に変更、ファイルがなければエクセルにあるファイル名に取り消し線を入れる。リストが空白になったらVBA終了という流れです。(その画面のイメージを下に添付致します)

[VBE]-[ツール]-[参照設定]で「Windows Script Host Object Model」にもチェックを入れてshell機能を使えるように設定し、下記コード的にもほぼ完成に近いところまできている状態と思っているのですが、マクロを実行するとリストのファイル名に取り消し線が入るだけで、肝心の印刷が実行されず困っております。

何か不要なコードが邪魔をしているのでしょうか。構文endまで有効にするにはどこを変えれば良いか、もしこれをご覧になってお判りになられる方いらっしゃいましたら、どうか添削やご教示お願い致します!

Sub ListPrint() '図面印刷VBA 'Shell実行用の変数設定 Dim wshShellObj As IWshRuntimeLibrary.WshShell 'Shellオブジェクト Set wshShellObj = New IWshRuntimeLibrary.WshShell Dim strShellCommand As String 'Shellコマンド Const folderPath = "C:\Users\Desktop\サンプル" 'フォルダパス(定数) Dim printFolderPath As String 'フォルダパス Dim printFileName As String 'ファイル名 Dim printFilePath As String 'ファイルパス Dim activePrinter As String '通常使うプリンターを取得 Dim printerName As String 'プリンタ名 Dim listname As String '印刷リスト Dim listFolder As String '印刷リストフォルダ名 Dim intPoint1 As Long 'プリンタ名を切り出す為の文字数 Dim i As Integer '印刷行カウンター '通常使うプリンターを取得 activePrinter = Application.activePrinter '取得できなかった時の処理 If activePrinter = "" Then MsgBox "プリンター情報が取得できませんでした" & Chr(13) & "プリンターが接続されていることを確認してください" End Exit Sub End If 'ファイル名(" on"の前まで)とポート名("on "の後から最後まで)を切り出す intPoint1 = InStr(activePrinter, "on") - 2 'プリンター名を指定 printerName = Left(activePrinter, intPoint1) 'ポートを除いたプリンタ名 'カウンターをセット A列1行目から i = 1 '行 '表紙の最初の図番を取得 listname = Cells(i, 1).Value Do While listname <> "" 'PDFファイルパスを設定 printFolderPath = folderPath & listFolder & listname '印刷するPDFフォルダパス 'PDFファイル名を取得(拡張子などをワイルドカードで検索して変数へ取込む) printFileName = Dir(printFolderPath & "*") 'ファイルがあるかを判定 If printFileName <> "" Then 'ファイルパスを指定 printFilePath = folderPath & listFolder & printFileName 'Shellコマンドを設定 strShellCommand = "AcroRd32.exe /t " & printFilePath & " " & printerName '設定画面を表示 'Shellコマンドを実行 wshShellObj.Run (strShellCommand) '文字を赤色に変更 Cells(i, 1).Font.Color = RGB(255, 0, 0) Else '文字に取り消し線を設定 Cells(i, 1).Font.Strikethrough = True End If '1行下がる i = i + 1 '次のリストを取得 listname = Cells(i, 1).Value Loop 'オブジェクトを強制開放 Set wshShellObj = Nothing End Sub

実行画面
イメージ説明

図面のあるフォルダ
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。