質問: CreateObject("WScript.Shell") ShellObj.Run "net use consSOUR, 0, True" ``` 分かる方、ご教示いただければと思います。 宜しくお願い致します。 【追記】 「Debug.Print ; consSOUR」と「Debug.Print ; consDEST」を「FSO.MOVEFILE consSOUR, consDEST」の直前に追加し、内容が以下になります。 \\space\kyouyu\各案件フォルダ\【201809分】\1インポート\*.xlsx \\space\kyouyu\各案件フォルダ\【201809分】\1インポート\old\0913 また、「fso.FileExists」を以下のような形で追加し確認したところ「consSOUR が存在しません」と表示されました。 ``` If FSO.FileExists(consSOUR) Then MsgBox consSOUR & "が存在します" If FSO.FileExists(consDEST) Then MsgBox consDEST & "が存在します" Else MsgBox consDEST & "が存在しません" End If Else MsgBox consSOUR & "が存在しません" End If ```
回答: コードをしっかりと読んでいませんでした。 consSOURの方はワイルカード指定で、consDESTはフォルダ指定だったのですね。 無駄な追記をさせて申し訳ございませんでした。 FileSystemObjectのMoveFileメソッドの第二引数「destination」ですが、ここにフォルダを指定する場合は、最後に\記号が必要となります。 (そうしないと拡張子の存在しないファイル名と判別できないですからね) 従って次のように修正してみてください。 ``` consDEST = dest & "\" & FolderName & "\" ``` 【2018/9/17 2:00:00追記】 実際にネットワーク上においてデバッグしてみました。 > > Dim sour, dest, consSOUR, consDEST As Long > > > この構文ですが本当にこう書いてます? VBAのDimは一度に型指定することは出来ないので、 ・sour,dest,consSOURは省略とみなされVariant型 ・consDESTだけがLong型 で定義されています。 ファイルパスであるconsDESTがLong型では動かないはずですが、本当はこうではないですか? ``` Dim sour As String, dest As String, consSOUR As String, consDEST As String Dim FolderName As String, Path As String, TargetPath As String ``` > > 'FSOによるファイルコピー > > > MoveFile使ってますが、移動じゃないんですか? consSOUR の該当ファイルが0件の場合に「ファイルが見つかりません」が出るようです。 ワイルドカードでファイルが1件以上存在するか確認する方法がfsoには無かったと思うので、下記通りDirを使ってチェックするように直したほうが良いと思います。 ``` For j = 7 To Cells(Rows.Count, "B").End(xlUp).Row sour = Cells(j, 2).Value dest = Cells(j, 3).Value consSOUR = sour & "\" & "*.txt" consDEST = dest & "\" & FolderName & "\" 'FSOによるファイル移動 If Dir(consSOUR) <> "" Then FSO.MOVEFILE consSOUR, consDEST Else Debug.Print consSOUR & "に該当ファイル無し" End If Next j ``` この修正で私の環境では問題なく動きました。一度ご確認ください。