• ベストアンサー

VBAでのファイル操作について

「Aフォルダ」内のファイル名が*1から始まる複数のファイルを、「Bフォルダ」のサブフォルダである「1フォルダ」に移動するマクロ、*2を「2フォルダ」へと「9フォルダ」まで繰り返すための記述方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

質問の答え=プログラムを作成するということになるので ポイントだけ教えます。 まず、FSO(FileSystemObject)を用います。 ____________________________________________ フォルダ選択ダイアログは 以下のコードで簡単に取得できます。 Dim Fs as Object DIm Fd as Object SET FS = CreateObject("Shell.Application") SET FD=fs.BrowseForFolder(0,"フォルダを選択してください。",&h1,"Aフォルダのパス") ____________________________________________ ファイル名の取得は以下のとおりです。 Dim Fs as Object DIm Corfiles as Object Dim ObjFolder Dim StrFile as string Dim Cnm as string SET FS = CreateObject("scripting.FilesystemobJect") SET ObjFolder = FS.Getfolder(~指定されたパス) SET ObjFolder = ObjFolder.files StrFile =EMPTY Cnm=Empty For each ObjFiles In Corfiles   StrFile = strFile & Cnm & Objfile.Name   Cnm="," Next あとは取得したファイル名を split関数で 配列変数に変換し、 その値を 検査してゆけばよろしいかと思います。 ___________________________ ファイル名の調査 DIM aryFname as Variant DIM I as integer DIm L as integer DIm strwk as string DIM strMoji as string aryfname = split(strfile,",") For I=0 to ubound(aryfname) strwk = aryfname(I) FOR L=1 to len(strwk) strMoji= MID(strwk,L,1) select case strMoji case = "." exit for case = "1" Call File_Move("~指定されたパス",strwk,"Bフォルダ\1フォルダ) case = "2" 以下 case = "1" と同じ要領 "9"まで同じ end select next L next i ______________________________________________________ ファイル移動の処理 Private sub File_Move(P_PATH as string,P_Fname as string,P_MvFolder as string) ここに 処理を記述します。 以下は サンプルです。 '===================<サンプル>========' Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") ''C:\Tmp\Sub\フォルダをC:\Work\フォルダに移動します FSO.MoveFolder "C:\Tmp\Sub", "C:\Work\" '============================================ end sub ___________________________ 【コメント】 上記プログラムはあくまで参考です。 実際はデバッグしないと動作しないと思います。 参考のHPを手がかりにプログラムを作成してください。 XPのコマンドのバッチファイルでも実現できます。 copyコマンドとDir、fileExists でできます。 なお、このプログラムはメモ帳でファイル名の拡張子を VBS とすることでそのままwindows プログラムとして 動きます。 できれば今後はある程度は自分で作成してピンポイント で質問してください。 丸投げや学校などの問題の質問は 禁止されています。 __________________________________________________ 【参考】以下のURLは勝手ながらリンクさせていただきました。 http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm#MoveFile ___________________________

osietegoo-
質問者

お礼

ご回答ありがとうございました。 正直、これだけ長くて複雑だとは思いませんでした。 初心者で理解するのに時間がかかりそうですが ひとつずつひも解いて行きたいと思います。 この回答のために時間と労力を割いていただき感謝いたします。

関連するQ&A