下記のコードのように、 strFolderPath = Cells(2, 6).Value
の中に「見積」というキーワードが含まれるPDFファイルについて、印刷するような仕組みを作成しております。ここでDo While strPDFName <> ""
のループを加えるまでは実装ができたのですが、このループを加えることで、PDF処理が永久ループしてしまいます。
意図としては、 strFolderPath = Cells(2, 6).Value
の中に「見積」というキーワードが含まれるPDFファイルが複数存在する可能性があり、これらを全て出力するためにループさせたいということになるのですが、Do While strPDFName <> ""
でうまく実装ができず、ご相談させて頂きました。
アドバイスを頂けると幸いです。
宜しくお願い申し上げます。
vba
1Sub openFile() 2 3 Dim strPDFName As String 4 Dim strFolderPath As String 5 Debug.Print (Application.activePrinter) 6 7 8 Dim wshShellObj As IWshRuntimeLibrary.WshShell 'Shellオブジェクト 9 Set wshShellObj = New IWshRuntimeLibrary.WshShell 10 Dim strShellCommand As String 'Shellコマンド 11 Dim printFilePath As String 12 13 'Printerの処理------------------------------------------------ 14 Dim activePrinter As String 15 activePrinter = Application.activePrinter 16 If activePrinter = "" Then 17 MsgBox "プリンター情報が取得できませんでした" & Chr(13) & "プリンターが接続されていることを確認してください" 18 End 19 End If 20 Dim intPoint1 As Long 21 intPoint1 = InStr(activePrinter, "on") - 2 22 Dim usePrinter As String 23 usePrinter = Left(activePrinter, intPoint1) 24 Debug.Print (userPrinter) 25 '------------------------------------------------ 26 27 'Loop処理------------------------------------------------ 28 strFolderPath = Cells(2, 6).Value 29 strPDFName = Dir(strFolderPath & "*見積*") 30 31 If strPDFName = "" Then 32 Cells(2, 7).Value = "×" 33 Else 34 Do While strPDFName <> "" 'Folder内に複数の「見積」ファイルがある場合のループ 35 printFilePath = strFolderPath & "\" & strPDFName 36 strShellCommand = "AcroRd32.exe /t " & printFilePath & " " & userPrinter 37 wshShellObj.Run (strShellCommand) 38 Cells(2, 7).Value = "○" 39 Loop 40 End If 41 '------------------------------------------------ 42 43 44 'オブジェクトを強制開放 45 Set wshShellObj = Nothing 46 47 48End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/01 03:04
2021/02/01 03:22
2021/02/01 03:29
2021/02/01 04:05