前提・実現したいこと
「ファイル名と同じフォルダ名に移動 」
ここに質問の内容を詳しく書いてください。
VBAでファイル移動システムを作っています。
ファイル名と移動先のフォルダ名が同じだった場合、それぞれ移動(複数)できる機能を実装中に以下のエラーメッセージが発生しました。
※説明不足で申し訳ございません。追記させていただきます。
・移動したいファイルはpsdデータです。
資料1.psd こちらを 資料1フォルダに格納させたいです。
同様に
資料2.psd こちらを 資料2フォルダに格納
…
こちらを繰り返します
拡張子があると反応しなかったので、一度拡張子(.psd)を外した状態の名前を抽出して
そちらを使ってmove.File で移動できればと思いました。
発生している問題・エラーメッセージ
Functionまたは変数が必要です。
該当のソースコード
Function 拡張子を取り除いたファイル移動() As FileSystemObject Dim myFileFullName As String Dim myFilePath As String Dim myFileName As String Dim myFileNameCut As String Dim fso As New FileSystemObject Dim f As file myFileFullName = ThisWorkbook.PATH & "*.psd" If myFileFullName = "*.psd" Then Exit Function myFileName = Dir(myFileFullName) Do While myFileName <> "" myFilePath = Left(myFileFullName _ , Len(myFileFullName) - Len(myFileName)) If InStr(myFileName, ".") = 0 Then myFileNameCut = myFileName Else myFileNameCut = Left(myFileName _ , InStr(myFileName, ".") - 1) Debug.Print "選択されたファイル" & myFileFullName _ & vbCr & "ファイル名:" & myFileName _ & vbCr & "パス:" & myFilePath _ & vbCr & "拡張子を除いたファイル名:" & myFileNameCut If Dir(myFileName) <> "" Then fso.MoveFile myFileFullName, ThisWorkbook.PATH & "\" & myFileNameCut Else: myFileFullName = myFilePath & "\" & myFileNameCut & ".psd" End If For Each f In fso.MoveFile(myFileFullName, ThisWorkbook.PATH & "\" & myFileNameCut) Next End If myFileName = Dir() Loop Set fso = Nothing End Function
試したこと
プロシージャを分けてCallで呼び出そうとしてみましたが、
「引数の省略ができません」と出ました。
(自分が理解できてない同じところで止まってます。。)
それと無限ループにもなってしまいました。
補足情報(FW/ツールのバージョンなど)
VBAまだよくわかってないので、コードは引用させてもらっています
SubとFunctionの使い分け、filesystemobjectを2種類同時に使う際に
皆さんどのようにされてますでしょうか。初歩的ですがCallで呼び出す場合の引数の書き方なども教えていただけると助かります。
回答1件
あなたの回答
tips
プレビュー