お世話になっております。
初心者の質問失礼いたします。
今現在 前任者のexcelをメンテナンスしています。
VBA
1Sub deleteFile_Click() 2 Dim copyDirFiles As String 3 copyDirFiles = Range("B3").Value & "*.xlsx" 4 With CreateObject("Scripting.FileSystemObject") 5 If .FileExists(copyDirFiles) Then 6 .DeleteFile copyDirFiles 7 End If 8 End With 9End Sub
というVBAがふと気がつくと動作しなくなったのです……
このVBAがあるexcelのB3には
\192.168.2.79\gyoumu\200_事業\来期ファイル格納
とちゃんと値があるのです……
どういう語句で調べれば良いのかご助力頂けないでしょうか?
”Scripting.FileSystemObject”やら”VBA ファイル削除”などで調べたのですが
それっぽい情報にHITしなかったのです……
お忙しい所大変申し訳ないのですが何か情報をお持ちな方はコメント頂けますと嬉しく思います。
どういう語句で調べれば良いのかご助力頂けないでしょうか?
[2. 質問をする前に自分で何がわからないのかを把握しましょう]
https://teratail.com/help/question-tips#questionTips2
> 人に質問をするには、自分が何を尋ねたいかを知っている必要があります。
> これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです。
> 一見簡単なようですが、実はとても難しいことです。
動作しなくなった、とは何が動作しなくなったんですか?
エラーは発生しているんですか?
それぞれの処理を一行づつ実行させた場合、どこまで正しく動作しているんですか?
変数の値はどうなっていたんですか?
体調が悪い、だけで病気を診断できる医者は居ません。
自分の言葉で、自分で考えて他人に判るように質問に追記して説明してください。
少なくとも、今質問に記載されている ”Scripting.FileSystemObject”や”VBA ファイル削除” であなたの言う「それっぽい情報」は出てくる筈ですが。出てきた情報を自分で実際に試してみて、ファイルが実際に削除されるかどうかくらいは試す事が出来るでしょう。何を調べて、何を試して、試した結果がどうだったかすら書かれていないのでは、こいつ何も調べてないなと判断するしかないのです。
なるほど仰る通りですね……
もうちょっとまとめます。
大変失礼しました。
ステップインは使用されていますか?
1行ずつ動作してみると「.DeleteFile copyDirFiles」の行は実行されていません。
なぜ実行されていないかというと「If .FileExists(copyDirFiles) Then」がFalseになるからです。
となると「copyDirFiles」に問題がある可能性が高いので「Range("B3").Value & "\*.xlsx"」
に原因があるのでは無いかと予想されます。
とすると試しに「Range("B3").Value」だけにしてB3にファイル名まで含めたパスを入力して試すなどすれば答えに近づいてくるのではと思います。
bebebe_ 様
ありがとうございます。
仰るように
copyDirFiles = Range("B3").Value
としてB3に
\\192.168.2.7\gyoumu\事業管理\来期ファイル格納\*.xlsx
としてみたのですが駄目でした……
With CreateObject("Scripting.FileSystemObject")
If .FileExists(copyDirFiles) Then
にて ↑がFalseとなるので.FileExistsにて
見つけようとしているファイル名もあるのになんでか迷っております……
もう少し調査してみます。
コメントありがとうございました。
FileExistsにワイルドカードは使えない。
下記をご参考に。
https://vbabeginner.net/check-for-file-existence/
hatena19様
ありがとうございます。
>FileSystemObjectを利用した方がよいでしょう。
と記載があるので
With CreateObject("Scripting.FileSystemObject")
にて使用しているつもりなのです……
何か私は基本的な事が抜けている気がしますがもう少し調べてみます。
コメントありがとうございました。
*の意味は理解されていますか?
>単純にファイルの存在をチェックする場合はワイルドカードが指定できるDir関数を利用した方がよいです。
>FileSystemObjectのFileExists関数はワイルドカードは指定できず固定ファイル名しか判定できません。
B3に\\192.168.2.7\gyoumu\事業管理\来期ファイル格納\*.xlsxではなく実際に削除してもいいファル名にしてその名前のファイルを置いて試してみると原因が特定できると思います。
> どういう語句で調べれば良いのかご助力頂けないでしょうか?
「ワイルドカード」の意味を調べてみてください。それが理解できたら、
「VBA 削除 ワイルドカード」で検索するとご希望の情報がヒットするでしょう。
回答1件
あなたの回答
tips
プレビュー