質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

991閲覧

Excelマクロにて実行時エラー1004が発生

Happy87

総合スコア3

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/08/04 06:58

前提・実現したいこと

前任者が作成したマクロを利用していましたが、突然「実行時エラー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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jinoji

2021/08/04 09:07

エラーの出る行の直前に Debug.Print ProjectWebPath & PJWebFileName.Item(Ken) を入れて、ファイル名を確認してみるとどうなりますか。
Happy87

2021/08/04 09:13

アドバイスいただき、ありがとうございます。 エラーの出る行の直前に入れてマクロを実行してみましたが、やはり「実行時エラー1004 ◎◎が見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。」 と表示されます。
jinoji

2021/08/04 09:17

先ほどの1行を入れることで、 イミディエイトウィンドウにファイルのフルパスが出力されていると思います。 そのファイルのフルパスが適切なものかどうかを確認してみたらどうかなと思い書きました。
Happy87

2021/08/04 09:22

なるほど、イミディエイトウィンドウですね。 イミディエイトウィンドウを確認したところ、ネットワークパスが表示され、\・・・・20210531_PJWeb未登録のチェック実績管理簿、と表示されました。
Happy87

2021/08/04 09:39 編集

なお、ソース内の 'PJWEB管理簿の格納場所を設定 Dim ProjectWebPath As Variant ProjectWebPath = ThisWorkbook.Path & "実績管理簿"  ← 実績管理簿を"\"に変更した場合は、 イミディエイトウィンドウには、 ネットワークパスが表示され、 \・・・・20210531_PJWeb未登録のチェック実績管理簿 \・・・・20210531_PJWeb未登録のチェック\ と、2行が表示されました。 実際にマクロで書き出し(転記)をしたい47都道府県のファイルは、 \・・・・20210531_PJWeb未登録のチェック\ の中に保存されているものです。
jinoji

2021/08/04 09:40

では、 Debug.Print Ken, PJWebFileName.Item(Ken) ではどうなりますか。
Happy87

2021/08/04 09:52

Debug.Print Ken, PJWebFileName.Item(Ken) をマクロに追記した場合には、 イミディエイトウィンドウには、「 京都県 」と存在しない都道府県名が表示されました。
jinoji

2021/08/04 10:07

ということは管理簿.xlsx に京都県という誤記が混じっているのでしょう。 当然PJWebFileNameの辞書にも存在しないので PJWebFileName.Item(Ken)は空白になり、ファイル名が取得できず、 ファイルのフルパスになるべきところがフォルダパスのみになり、 Openのところでエラーになったのだと思われます。
Happy87

2021/08/04 10:22

jinoji 様 このたびは丁寧かつ迅速なアドバイスをありがとうございました。 「まさか都道府県名・・・」と確認をしたところ、確かにご指摘通り「京都県」が存在しており。 データを修正したところ、問題なくマクロが実行できました。 (誤った都道府県名となっていた箇所は、データ入力者のタイプミスだと思います。) 困っていたところをお助けいただき、大変助かりました。 深く御礼申し上げます。
guest

回答1

0

自己解決

jinoji様からアドバイスをいただき、

エラーとなっている行の直前に

Debug.Print Ken, PJWebFileName.Item(Ken) をマクロに追記しました。
イミディエイトウィンドウには、「 京都県 」と存在しない都道府県名が表示されたことから、
管理簿.xlsxのファイル内の入力された文字列を確認したところタイプミスが判明しました。

タイプミス箇所を正しい都道府県名に修正したところ、マクロが正常動作したことが
確認できました。

投稿2021/08/04 10:31

編集2021/08/04 10:34
Happy87

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問