遅刻の「言い訳」選手権

下記のマクロは先日より教えて頂いたマクロです。
作業シート名「建築物(確認申請)(第1号様式)」の
セル値「AB1」の数字をワイルドカードで検索し
該当するファイルの指定シートを作業ブックのシートにコピーできますが、
作業シート名「建築物(確認申請)(第1号様式)」の
セル値「AB1」の数字が表示されていなくても
マクロを実行すると
指定フォルダ先のファイルを呼び込み、作業ブックにシートがコピーされてしまします。
マクロを実行し
作業シート名「建築物(確認申請)(第1号様式)」の
セル値「AB1」の数字が表示され、該当ファイルがある場合のみ
コピー元のシートを作業ブックにコピー出来る方法を教えてください。
宜しくお願い致します。
現状のマクロ
Application.DisplayAlerts = False
Dim srcFolderPath As String
Dim srcFileName As String
Dim srcSheetName As String
Dim destWorkbook As Workbook
Dim destSheet As Worksheet
Dim srcWorkbook As Workbook
Dim srcSheet As Worksheet

' コピー元のフォルダパスとファイル名を指定
srcFolderPath = "\\nas-sp01\share\確認部\行政報告フォルダ\☆確認済交付月別物件(完了検査対象)\2024年 【担当】確認番号 建物名称\03月\"
srcFileName = "*" & ThisWorkbook.Worksheets("建築物(確認申請)(第1号様式)").Range("AB1").Value & "*.xlsm"

' コピー先の作業ブックとシートを指定
Set destWorkbook = ThisWorkbook
Set destSheet = destWorkbook.Sheets("第4号様式(印刷用)")

' コピー元のファイルを検索
srcFileName = Dir(srcFolderPath & srcFileName)
' コピー元のブックを開く
Set srcWorkbook = Workbooks.Open(srcFolderPath & srcFileName)

'シート名の値を設定
arr = Array("受付", "青紙表", "1", "1号確認", "4号完了")

'シート名でループ
For Each sname In arr
' コピー元のシートを取得
Set srcSheet = srcWorkbook.Sheets(sname)
' コピー元のシート名を取得
srcSheetName = srcSheet.Name
' コピー元のシートをコピー先にコピー
srcSheet.Copy After:=destSheet
Next

' コピー元のブックを閉じる
srcWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = True
End Sub
以上となります。
宜しくお願い致します。

質問者からの補足コメント

  • うーん・・・

    どなたか、親切に教えて頂ける方、お願いいたします。

      補足日時:2024/04/02 16:32

A 回答 (2件)

セル値「AB1」が空白の場合、処理をしないようにしたい。

と理解しました。

以下の行をマクロの先頭に追加してください。
If ThisWorkbook.Worksheets("建築物(確認申請)(第1号様式)").Range("AB1").Value = "" Then Exit Sub
    • good
    • 0
この回答へのお礼

回答
ありがとうございます
早速試させていただきます
後ほどご連絡させて頂きます

お礼日時:2024/04/02 17:23

「○○の場合のみ」はIf ○○ Then で実現できます。

該当するファイルがあるかどうかはDir関数でわかります。Web検索してみてください。
    • good
    • 0

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


おすすめ情報