ExcelVBAのコードについて教えていただけないでしょうか。。

ExcelVBAのコードについて教えていただけないでしょうか。。 やりたいことは決まってますが、コードが思いつかず( ;∀;) やりたいこと ① フォルダを選択する ② ①のフォルダの中に入ってる.pdfを全て印刷する → 無ければ終了 ③ ①のフォルダ内に「済」フォルダを作成(既にある場合は作成しない) ④ ③のフォルダに②で印刷した.pdfを移動する。 ネットの例を参考に自分でやってみましたが上手くいきませんでした('_') よろしくお願いします。

Excel | Visual Basic19閲覧

ベストアンサー

0

1つの工程で全部を実現するのには少し問題が有ります。 ④が問題となります。 PDFを印刷するのにAdobeReaderを起動しますが、起動中にプログラムは進んでしまい、PDFファイルのフォルダ移動が起こってしまいます。 そのため、AdobeReaderが、いざ印刷を始めようとすると、ファイルが無いと言う事態に陥ります。 これを避けるためには、APIを使えば良いのですが、今回は③④と①②の工程順を入れ替えて対応します。 先に「済」フォルダを作成し、PDFを移動し、「済」フォルダから印刷します。 コマンドボタンを配置して、Clickイベントに以下を。 Dim FolderPath, FileName, FilePath Dim SumiFolderPath, SumiFilePath Dim ShellObj As IWshRuntimeLibrary.WshShell Dim ShellCommand '---------------------- フォルダ選択 With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then FolderPath = .SelectedItems(1) '-----済フォルダ作成 SumiFolderPath = FolderPath & "\済" If Dir(SumiFolderPath, vbDirectory) = "" Then MkDir SumiFolderPath End If Else Exit Sub End If End With '---------------------- 済フォルダへPDFを移動 FileName = Dir(FolderPath & "\*.pdf") Do While FileName <> "" FilePath = FolderPath & "\" & FileName SumiFilePath = SumiFolderPath & "\" & FileName FileCopy FilePath, SumiFilePath Kill FilePath FileName = Dir() DoEvents: Loop '---------------------- PDF印刷 Set ShellObj = New IWshRuntimeLibrary.WshShell FileName = Dir(SumiFolderPath & "\*.pdf") Do While FileName <> "" FilePath = SumiFolderPath & "\" & FileName ShellCommand = "AcroRd32.exe /t " & SumiFilePath ShellObj.Run (ShellCommand) FileName = Dir() DoEvents: Loop さらにこのコードだけではダメで事前準備が要ります。 下記のサイトの1.事前準備を参照して下さい。 https://www.sejuku.net/blog/99169 また、当然のことながらAdobeReaderはPCにインストール済みとします。

ThanksImg質問者からのお礼コメント

返信遅くなり申し訳ございません。 教えていただいたコードで試させていただきます! ありがとうございました!!

お礼日時:8/13 10:51