「みんな教えて! 選手権!!」開催のお知らせ

お詳しい方、ご教授願います。

フォルダ内のすべてのブックの特定シートを一括印刷するマクロを作成しているのですが、Do While~からのループ処理が反映されず(F8キーで確認したところ、この部分の処理が丸々スルーされていました)、困っています。
2段目のIf~ではエラーが出ないので、ファイル自体は存在していることになっているかと思います。
初めて作ったものなのでおかしな部分が多々あるかもしれませんが、ご確認いただければ幸いです。

Option Explicit
Sub 一括印刷()

'ファイルを変数指定
Dim fPath As String
Dim fName As String
fPath = "C:\Users\NNN\Desktop\TestFolder1"
fName = Dir(fPath & "帳票*.xlsx")

'ファイルがあることを確認
If Dir(fName) = "" Then
MsgBox "ファイルが存在しません"
End If

'印刷ループ処理
Do While fName <> ""
Workbooks.Open fPath & fName
With ActiveWorkbook
Sheets(Array("取引A", "取引B", "取引C")).PrintOut. ActivePrinter"XXX"
.Close SaveChanges:=False
End With
Loop

End Sub

A 回答 (3件)

以下のようにしてください。



Option Explicit
Sub 一括印刷()

'ファイルを変数指定
Dim fPath As String
Dim fName As String
fPath = "C:\Users\NNN\Desktop\TestFolder1\"
fName = Dir(fPath & "帳票*.xlsx")

'ファイルがあることを確認
If fName = "" Then
MsgBox "ファイルが存在しません"
End If

'印刷ループ処理
Do While fName <> ""
Workbooks.Open fPath & fName
With ActiveWorkbook
.Sheets(Array("取引A", "取引B", "取引C")).PrintOut ActivePrinter:="XXX"
.Close SaveChanges:=False
End With
fName = Dir()
Loop

End Sub
    • good
    • 0
この回答へのお礼

助かりました

無事動きました。後ろから3行目の指摘がなければ、無限ループするところでした。ありがとうございました!

お礼日時:2022/08/10 00:40

おはようございます


>fName = Dir(fPath & "帳票*.xlsx")
\ お忘れでは無いでしょうか?

& "\帳票*.xlsx")

If Dir(fName) = "" Then ここは Dir不要では?
    • good
    • 0
この回答へのお礼

助かりました

いただいたアドバイスを参考に修正したところ、無事に作動しました。ありがとうございました!

お礼日時:2022/08/10 00:43

>fPath = "C:\Users\NNN\Desktop\TestFolder1"


>fName = Dir(fPath & "帳票*.xlsx")

寝ぼけてるからミスるかもだけど、パスとファイル名の境がない。

fPath = "C:\Users\NNN\Desktop\TestFolder1\" ' パスの最後に \ をつけるか
fName = Dir(fPath & "帳票*.xlsx") ' \帳票*~ ファイル名の頭に \ をつける。
    • good
    • 0
この回答へのお礼

助かりました

ご指摘のとおり、\が抜けておりました。迅速なご回答、ありがとうございました!

お礼日時:2022/08/10 00:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報