[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『メッセージ:ファイルが存在しません。』(のむじゅん)
皆様、こんばんは。
お忙しいところ、申し訳ございません。
一点、ご教示頂きたいことがございまして
書き込みをさせて頂きました。
以下のようなvbaを作りましたところ、作業用ファイルと言うファイルが存在しません。
指定のフォルダに該当のファイルを入れて実行し直してください。と言うメッセージが出てしまいます。
どこを、チェックすれば宜しいのでしょうか?
宜しければ、ご教示頂けましたら、幸いです。
本当に、お手数をお掛け致します。
sub sample3()
Dim Filepath As String Dim FileName As String Dim wb As Workbook
'ファイルの入っているフォルダをパス設定
Filepath = ThisWorkbook.Path & ”¥¥〇〇.〇〇.co.jp¥〇〇部門¥〜作業用” ’と言うように該当のファイルがある↑パスを入力 FileName = "作業用ファイル.xlsm"
'コピー元のブックが存在するか確認
If Dir(Filepath & "\" & FileName)=""Then
’既に開いていたら、メッセージを表示して、Subを抜ける。
MsgBox FileName & ”と言うファイルが、存在しません。” &vbCrLf &
"指定のフォルダに該当のファイルを入れて実行し直してください”
Exit SuB
End If
'既に開いているかをチェック
For Each wb In Workbooks
If wb.Name = FileName Then '既に開いていたら、メッセージを表示して、SUBを抜ける。 MsgBox FileName & ”は、既に開いています” Exit SuB End If Next wb
’コピー元のブックを開く
Workbooks.Open FilePath & "\作業用ファイル.xlsm”
’データをコピー
Workbooks(FileName).Worksheets(”Sheet3").Range("A2:T80").Copy_
Workbooks(ThisWorkbook.Name).Worksheets(”Sheet1").Range("A2")
"コピー元のブックを閉じる(セーブしない)
Workbooks(FileName).Close savechanges:=Falce
End sub
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
新しく始めないで こっちお片付けしようよ・・・
ところどころ全角だし、ファイルのアドレスもネットワークパスをThisworokbookのパスにつなげるようになってるし
確認の仕方であれば、どっかにStop入れて、ローカルウィンドウで Filepath の中身が、思った通りのパスなのかちゃんと確認してみてください。 https://www.excelspeedup.com/vbadebug/ (稲葉) 2023/02/13(月) 18:25:09
本当に、ご指摘有り難うございました。
(のむじゅん) 2023/02/13(月) 21:13:50
■1
提示されたコードはどうやって作成しましたか?
既に指摘があるように、大文字小文字がごちゃまぜになっているところを見ると、手打ちだったりしませんか?
可能ならば、VBE(エディタ)からコピペされると、つまらないタイプミスで手戻りとかしなくて済むと思います。
■2
また、実際のコードはどうなのか知りませんが、少なくとも提示されたコードはまともに【インデント】が付いていません。
最終的には個人の好きにすればよいですが、適切なインデントを付けると、コード全体の構造が把握しやすくなりご自身のデバッグ作業に寄与すると思いますので、とりあえず【インデント】を付けるようにされることをお勧めします。
とりあえず、提示されたコードを若干修正しつつ、私なりにインデントを付けてみました。
Sub sample3() Dim Filepath As String Dim FileName As String Dim wb As Workbook
'ファイルの入っているフォルダをパス設定 Filepath = ThisWorkbook.Path & "¥¥〇〇.〇〇.co.jp¥〇〇部門¥〜作業用" 'と言うように該当のファイルがある↑パスを入力
FileName = "作業用ファイル.xlsm"
'コピー元のブックが存在するか確認 If Dir(Filepath & "\" & FileName) = "" Then '既に開いていたら、メッセージを表示して、Subを抜ける。 MsgBox FileName & "と言うファイルが、存在しません。" & vbCrLf & "指定のフォルダに該当のファイルを入れて実行し直してください" Exit Sub End If
'既に開いているかをチェック For Each wb In Workbooks If wb.Name = FileName Then '既に開いていたら、メッセージを表示して、SUBを抜ける。 MsgBox FileName & "は、既に開いています" Exit Sub End If Next wb
'コピー元のブックを開く Workbooks.Open Filepath & "\作業用ファイル.xlsm"
'データをコピー Workbooks(FileName).Worksheets("Sheet3").Range("A2:T80").Copy_ Workbooks(ThisWorkbook.Name).Worksheets("Sheet1").Range ("A2")
'コピー元のブックを閉じる(セーブしない) Workbooks(FileName).Close savechanges:=Falce End Sub
■3
>「ファイルのアドレスもネットワークパスをThisworkbookのパスにつなげるようになってる」の意味が理解しきれず
Filepath = ThisWorkbook.Path & "¥¥〇〇.〇〇.co.jp¥〇〇部門¥〜作業用"
↑をよ〜〜〜く見て、「Filepath」に何が格納されるか考えてみてはどうでしょうか?
考えてもわからないなら、【ステップ実行】して「Filepath」に何が格納されるのか調べてもよいですね。(稲葉さん指摘済)
■4
>〜〜と言うメッセージが出てしまいます。
【ステップ実行】して、どのような処理の流れになっているか(想定通りの動きになっているか)確認されてはどうでしょうか?
※ステップ実行という言葉を聞いたことがなければ↓を読んでみてください。
【ステップ実行】 https://www.239-programing.com/excel-vba/basic/basic023.html http://plus1excel.web.fc2.com/learning/l301/t405.html
【ブレークポイント】 https://www.239-programing.com/excel-vba/basic/basic022.html https://www.tipsfound.com/vba/01010
また、↓も覚えておいて損は無いと思います。
【イミディエイトウィンドウ】 https://www.239-programing.com/excel-vba/basic/basic024.html https://excel-ubara.com/excelvba1/EXCELVBA486.html
【ローカルウィンドウ】 https://excel-ubara.com/excelvba4/EXCEL266.html http://excelvba.pc-users.net/fol8/8_2.html
(もこな2) 2023/02/13(月) 21:43:16
>ちなみに、ご指摘戴いた部分は、初心者でも、分かるレベルですか? 初心者と一括りにするのはいささか強引ではありますが・・・ 覚える速度も人それぞれですし、調べ方=デバッグさえわかればそのうちわかると思いますよ。
どんな達人でも、一発でミスなく書き上げるのは難しいと思うので、パスの確認あたりは イミディエイトウィンドウで ?ThisWorkbook.Path & "\\〇〇.〇〇.co.jp\〇〇部門\〜作業用" のように、「?」をつけて感じで打ち込んで、ほしい値が返ってくるかチェックしてると思います。
時間が取れないなら勉強時間をもらえるよう、上司にお願いするのも いいかもしれないですね! 自分が上司なら快く快諾すると思いますよ!結果出れば! (稲葉) 2023/02/14(火) 08:30:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.