前提・実現したいこと
前任者が作成したマクロを利用していましたが、突然「実行時エラー1004
ファイル◎◎にアクセスできません。」・・・エラーが発生するようになりました。
当該Excelマクロのエラー箇所を修正して、再実行させたく質問させていただきます。
<マクロの内容>
日々、Excelファイルに作業実績を入力しており、翌月月初にマクロを実行させ、
47都道府県のファイルに自動で転記させる仕組みになっています。
(マクロならびに47都道府県分のファイルは同じフォルダに保存しています。)
発生している問題・エラーメッセージ
実行時エラー 1004
エラーメッセージ 「ファイル◎◎にアクセスできません」 ### 該当のソースコード Sub Remote_check() ' ' Remote_checkマクロ ' ' '内部管理簿を開く ← 管理簿 Dim naibu As Workbook Set naibu = Workbooks.Open("\・・・・ネットワーク上のフォルダ・・・\管理簿.xlsx") 'PJWEB管理簿の格納場所を設定 Dim ProjectWebPath As Variant ProjectWebPath = ThisWorkbook.Path & "実績管理簿" Dim PJWebFileName As Object Set PJWebFileName = CreateObject("Scripting.Dictionary") PJWebFileName.Add "北海道", "01_北海道_実績管理簿_master.xlsx" PJWebFileName.Add "青森県", "02_青森県_実績管理簿_master.xlsx" PJWebFileName.Add "岩手県", "03_岩手県_実績管理簿_master.xlsx" PJWebFileName.Add "宮城県", "04_宮城県_実績管理簿_master.xlsx" PJWebFileName.Add "秋田県", "05_秋田県_実績管理簿_master.xlsx" PJWebFileName.Add "山形県", "06_山形県_実績管理簿_master.xlsx" PJWebFileName.Add "福島県", "07_福島県_実績管理簿_master.xlsx" PJWebFileName.Add "茨城県", "08_茨城県_実績管理簿_master.xlsx" PJWebFileName.Add "栃木県", "09_栃木県_実績管理簿_master.xlsx" PJWebFileName.Add "群馬県", "10_群馬県_実績管理簿_master.xlsx" PJWebFileName.Add "埼玉県", "11_埼玉県_実績管理簿_master.xlsx" PJWebFileName.Add "千葉県", "12_千葉県_実績管理簿_master.xlsx" PJWebFileName.Add "東京都", "13_東京都_実績管理簿_master.xlsx" PJWebFileName.Add "神奈川県", "14_神奈川県_実績管理簿_master.xlsx" PJWebFileName.Add "新潟県", "15_新潟県_実績管理簿_master.xlsx" PJWebFileName.Add "富山県", "16_富山県_実績管理簿_master.xlsx" PJWebFileName.Add "石川県", "17_石川県_実績管理簿_master.xlsx" PJWebFileName.Add "福井県", "18_福井県_実績管理簿_master.xlsx" PJWebFileName.Add "山梨県", "19_山梨県_実績管理簿_master.xlsx" PJWebFileName.Add "長野県", "20_長野県_実績管理簿_master.xlsx" PJWebFileName.Add "岐阜県", "21_岐阜県_実績管理簿_master.xlsx" PJWebFileName.Add "静岡県", "22_静岡県_実績管理簿_master.xlsx" PJWebFileName.Add "愛知県", "23_愛知県_実績管理簿_master.xlsx" PJWebFileName.Add "三重県", "24_三重県_実績管理簿_master.xlsx" PJWebFileName.Add "滋賀県", "25_滋賀県_実績管理簿_master.xlsx" PJWebFileName.Add "京都府", "26_京都府_実績管理簿_master.xlsx" PJWebFileName.Add "大阪府", "27_大阪府_実績管理簿_master.xlsx" PJWebFileName.Add "兵庫県", "28_兵庫県_実績管理簿_master.xlsx" PJWebFileName.Add "奈良県", "29_奈良県_実績管理簿_master.xlsx" PJWebFileName.Add "和歌山県", "30_和歌山県_実績管理簿_master.xlsx" PJWebFileName.Add "鳥取県", "31_鳥取県_実績管理簿_master.xlsx" PJWebFileName.Add "島根県", "32_島根県_実績管理簿_master.xlsx" PJWebFileName.Add "岡山県", "33_岡山県_実績管理簿_master.xlsx" PJWebFileName.Add "広島県", "34_広島県_実績管理簿_master.xlsx" PJWebFileName.Add "山口県", "35_山口県_実績管理簿_master.xlsx" PJWebFileName.Add "徳島県", "36_徳島県_実績管理簿_master.xlsx" PJWebFileName.Add "香川県", "37_香川県_実績管理簿_master.xlsx" PJWebFileName.Add "愛媛県", "38_愛媛県_実績管理簿_master.xlsx" PJWebFileName.Add "高知県", "39_高知県_実績管理簿_master.xlsx" PJWebFileName.Add "福岡県", "40_福岡県_実績管理簿_master.xlsx" PJWebFileName.Add "佐賀県", "41_佐賀県_実績管理簿_master.xlsx" PJWebFileName.Add "長崎県", "42_長崎県_実績管理簿_master.xlsx" PJWebFileName.Add "熊本県", "43_熊本県_実績管理簿_master.xlsx" PJWebFileName.Add "大分県", "44_大分県_実績管理簿_master.xlsx" PJWebFileName.Add "宮崎県", "45_宮崎県_実績管理簿_master.xlsx" PJWebFileName.Add "鹿児島県", "46_鹿児島県_実績管理簿_master.xlsx" PJWebFileName.Add "沖縄県", "47_沖縄県_実績管理簿_master.xlsx" 'チェック月を設定 Dim CheckDate As String CheckDate = "2018/08/01 00:00" Dim Ken As Variant Dim Message As Variant Dim tesMe As Variant '--------------------------------------------------' 'チェック処理 '--------------------------------------------------' Dim Rownaibu As Integer Rownaibu = 6 Dim RowPJW As Integer RowPJW = 3 '内部管理簿の2列目(ステータス)が空欄になるまでループ Do While naibu.Worksheets("201804~").Cells(Rownaibu, 2).Value <> "" '内部管理簿の2列目(ステータス)が「完了・未登録」の場合はチェック If naibu.Worksheets("201804~").Cells(Rownaibu, 2).Value = "完了・未登録" Then '内部管理簿の42列目(開始日時)がの場合はチェック If StrComp(naibu.Worksheets("201804~").Cells(Rownaibu, 44).Value, CheckDate) >= 0 Then Ken = naibu.Worksheets("201804~").Cells(Rownaibu, 7).Value Dim PJWeb As Workbook Set PJWeb = Workbooks.Open(ProjectWebPath & PJWebFileName.Item(Ken)) ### 試したこと 現在マクロと当該Excelファイルはネットワーク上のフォルダにあるため、 自分のPCのローカルにコピーして実行してみましたが、エラーは同じものが出ました。 マクロ修正画面を表示させると、該当ソースコードの最下行、 Set PJWeb = Workbooks.Open(ProjectWebPath & PJWebFileName.Item(Ken)) が黄色くハイライト表示されています。 ### 補足情報(FW/ツールのバージョンなど) VBA 7.1 Excel 2016
エラーの出る行の直前に
Debug.Print ProjectWebPath & PJWebFileName.Item(Ken)
を入れて、ファイル名を確認してみるとどうなりますか。
アドバイスいただき、ありがとうございます。
エラーの出る行の直前に入れてマクロを実行してみましたが、やはり「実行時エラー1004
◎◎が見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。」
と表示されます。
先ほどの1行を入れることで、
イミディエイトウィンドウにファイルのフルパスが出力されていると思います。
そのファイルのフルパスが適切なものかどうかを確認してみたらどうかなと思い書きました。
なるほど、イミディエイトウィンドウですね。
イミディエイトウィンドウを確認したところ、ネットワークパスが表示され、\・・・・20210531_PJWeb未登録のチェック実績管理簿、と表示されました。
なお、ソース内の
'PJWEB管理簿の格納場所を設定
Dim ProjectWebPath As Variant
ProjectWebPath = ThisWorkbook.Path & "実績管理簿" ← 実績管理簿を"\"に変更した場合は、
イミディエイトウィンドウには、
ネットワークパスが表示され、
\・・・・20210531_PJWeb未登録のチェック実績管理簿
\・・・・20210531_PJWeb未登録のチェック\
と、2行が表示されました。
実際にマクロで書き出し(転記)をしたい47都道府県のファイルは、
\・・・・20210531_PJWeb未登録のチェック\ の中に保存されているものです。
では、 Debug.Print Ken, PJWebFileName.Item(Ken) ではどうなりますか。
Debug.Print Ken, PJWebFileName.Item(Ken) をマクロに追記した場合には、
イミディエイトウィンドウには、「 京都県 」と存在しない都道府県名が表示されました。
ということは管理簿.xlsx に京都県という誤記が混じっているのでしょう。
当然PJWebFileNameの辞書にも存在しないので
PJWebFileName.Item(Ken)は空白になり、ファイル名が取得できず、
ファイルのフルパスになるべきところがフォルダパスのみになり、
Openのところでエラーになったのだと思われます。
jinoji 様
このたびは丁寧かつ迅速なアドバイスをありがとうございました。
「まさか都道府県名・・・」と確認をしたところ、確かにご指摘通り「京都県」が存在しており。
データを修正したところ、問題なくマクロが実行できました。
(誤った都道府県名となっていた箇所は、データ入力者のタイプミスだと思います。)
困っていたところをお助けいただき、大変助かりました。
深く御礼申し上げます。
回答1件
あなたの回答
tips
プレビュー