- 締切済み
エクセルのVBA ファイルの移動
同一のフォルダーに保存されたファイルを 異なるフォルダーに保存するマクロを作成したいです 例えば ファイル名 フォルダ名 あいう様 aaa → ア あいう様 あいう様 bbb → ア あいう様 いいい様 aaa → イ いいい様 かきく様 ddd → カ かきく様 さしす様 aaa → サ さしす様 たちつ様 ccc → タ たちつ様 保存先にフォルダ名がなければ作成して保存するマクロを 作りたい場合はどのようにすればいいでしょうか? 下記のURLを使い、ファイル名を変更したあと 上記の通りにフォルダー移動がしたいです https://www.relief.jp/docs/017844.html
- ba006082
- お礼率0% (0/2)
- オフィス系ソフト
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17068)
VBAというよりも、VBSのFSOという、エクセルVBAを補完してくれるソフトをつかえばわかりやすいのでは。VBAに含まれているとしている向きもあるが。 ーー 例えば、Googleで、「vbs fso ファイル移動」で照会し、出てくる記事の、例えば http://www.whitire.com/vbs/tips0087.html 「ファイルを移動する」 を使って、FROMとTOに当たる、ファイルのフルパスの文字列をプログラムで作成したら済むことではないか。 その時、現フォルダ(1つ?明記のこと)を、For Eachでループ処理してFROMに当たるファイルを、シートの該当テーブルを作っておいて、探して、見つければよい。 いっそのこと、シートにフルパスで移動前、移動後の対照表を手作業やプログラムなどで、作ってしまうのも、安心できるやり方だろう。
- HohoPapa
- ベストアンサー率65% (454/692)
こうでしょうか。 Option Explicit 'Microsoft Scripting Runtime を参照設定 Sub Test1() Const GetDir = "D:\Test\FDir" '複写元フォルダー Const PutDir = "D:\Test\TDir" '複写先フォルダー Const KeyTex = "様" Dim FSO As New Scripting.FileSystemObject Dim fl As Folder Dim f As File Dim PutFName As String Dim wsDir As String Dim KeyPos As Long Set fl = FSO.GetFolder(GetDir) For Each f In fl.Files ' フォルダ内のファイルを取得 wsDir = StrConv(Left(f.Name, 1), vbKatakana) If FolderExists(PutDir & "\" & wsDir) = False Then MkDir PutDir & "\" & wsDir End If KeyPos = InStr(f.Name, KeyTex) PutFName = Left(f.Name, KeyPos) PutFName = PutDir & "\" & wsDir & "\" & PutFName & "." & getExtxt(f.Name) FileCopy f.Path, PutFName Next Set FSO = Nothing End Sub '拡張子を取得する関数 Function getExtxt(FPath) As String Dim FSO As New Scripting.FileSystemObject Dim filePath As String Dim ExtentionName As String getExtxt = FSO.GetExtensionName(FPath) Set FSO = Nothing End Function 'フォルダーの有無判定 Function FolderExists(folder_path As String) As Boolean Dim FSO As New Scripting.FileSystemObject If FSO.FolderExists(folder_path) Then FolderExists = True Else FolderExists = False End If Set FSO = Nothing End Function
関連するQ&A
- Excel VBA サブディレクトリの取得について
Excel VBA についての質問です。 私は、VBAの初心者です。 フォルダ選択ダイアログを開き、あるフォルダを選択させます。 選択したフォルダ配下のファイルとサブフォルダにあるファイル一覧とそのファイルのパス取得したいです。 【例】D:\TEMP\AAA フォルダを選択 D:\TEMP\AAA D:\TEMP\AAA\BBB\CCC.txt D:\TEMP\AAA\BBB\DDD\EEE.txt D:\TEMP\AAA\BBB\DDD\FFF.txt GGG.txt が存在する。 まず、フォルダAAAまで選択されたら、 以下の結果がエクセルに出力したいです。 BBB CCC.txt BBB\DDD EEE.txt BBB\DDD FFF.txt GGG.txt うまく伝えないかもしれないですが、ご教授お願いいたします。
- ベストアンサー
- Visual Basic
- 【大至急】excel2003 VBAマクロの質問
excel2003でのVBAマクロを作っているのですが、いまいちよくわからないのです 下記条件を満たすサンプルコードのご教示をお願いします。 ■初期状態 仮にフォルダ、ファイル配置が下記の通りだとします C:\マクロ.xls C:\template.xls C:\aaa\ C:\bbb\bbb_test.xls C:\ccc\ . . . C:\nnn\ ■動作要件 (1)マクロ.xlsは自分のファイルパスを検索する (2)マクロ.xlsと同じフォルダにあるサブフォルダ配下に、各々フォルダ名_test.xlsというファイルを作成する (3)上記(2)で.xlsファイルを作成するとき、template.xlsをコピーして作成する (4)既にサブフォルダ配下に***_test.xlsファイルが存在する場合は作成しない <マクロ実行後の状態> C:\マクロ.xls C:\template.xls C:\aaa\aaa_test.xls ←template.xlsからコピー作成 C:\bbb\bbb_test.xls ←ファイル作成、上書きはしない C:\ccc\ccc_test.xls ←template.xlsからコピー作成 . . . C:\nnn\nnn_test.xls ←template.xlsからコピー作成 (5)上記(1)-(4)を、フォルダがなくなるまで繰り返す 以上です。よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセルのファイルを、A2セルに入っている日付をファイル名として、保存したい。
エクセルのVBAでファイルに名前を付けて、指定場所に保存したいのですが、過去の質問を読んでもよく分からなかったので教えてください。 A2セルに、2007/07/26 という日付が入っています。 この日付をファイル名として保存したいのですが、日付の形式は20070726とか、070726にしたいです。 ファイルの保存場所パスは、例えば、 S:\AAA\BBB\CCC\DDD というフォルダの中です。 ActiveWorkbook.SaveAs のあとにどのように続ければよいのでしょうか? 丸投げで申し訳ありませんがよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルでファイルをcsv形式で保存するマクロについて
同様の質問が以前にあったのですが、 どうやら私のは少し違うようなので新規質問として投稿させていただきます。 エクセルファイルを保存する際、保存形式を「テキスト(タブ区切り)(*.txt)」にして、 ファイル名の拡張子の部分だけ(.csv)にして保存するマクロを作成したいです。 しかし、エクセルに付いているオートマクロ機能で記録しようとすると、 ・ファイル名がオートマクロを作成した際に付けたファイル名になってしまう。 ・保存場所がオートマクロを作成した際に保存したフォルダになってしまう。 という問題が発生します。 なので、 ・保存する際のファイル名は現在作業しているファイルの名前をそのまま使用する。 ・保存する際のファイル名の拡張子部分は(.csv)に変更する ・保存場所は現在作業しているファイルがあるフォルダにする(もしくはプログラムで予めパスを指定できる)。 ・保存形式は「テキスト(タブ区切り)(.txt)」 の4つの条件を満たすマクロの作成方法をお教えいただけますでしょうか? すみませんが、よろしくおねがいします
- ベストアンサー
- オフィス系ソフト
- EXCEL(VBA)
EXCELVBAで指定したフォルダ内にtextファイルをまとめるマクロを作成したいと思っています。 条件としましては、フォルダ名の5文字とtextファイルの最初の5文字を照合させて一致した場合そのフォルダにtexitファイルを収納していくといった感じです。 できればソースを教えていただくと助かります。
- 締切済み
- Visual Basic
- EXCEL VBAで作成した ファイルを 複製できますか?
EXCEL VBAで 名簿を作成しました。 名簿はMOに 保存しました。 保存したファイルを デスクトップに コピーしました。 しかし、ファイルを開いても、マクロがうまく働きませんでした。 「同じファイル名のファイルがある・・・」のようなメッセージが出てしまいます。 1台のコンピューターだけでなく、複数で使えるようにするには、VBAで作 成したファイルはどのように保存すればよいのでしょうか。教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセル VBA ファイルをフォルダへ移動させる
エクセル VBA 手探り状態です。 001大企業.xls、001中小企業.xls、003大企業.xls、003中小企業.xls、008大企業.xls、008中小企業.xls・・・・というファイルが300ほど企業種類という名前のフォルダにあります。 VBAで企業種類という名前のフォルダの中に、001、003、008・・・というフォルダは作成しました。 (ネットで”フォルダ作成”を検索して、、、自力ではVBAは書けません) それを001という名前のフォルダへは、001大企業.xls、001中小企業.xlsのファイル、003という名前のフォルダへは003大企業.xls、003中小企業.xlsのファイルを、008フォルダへは008大企業.xls、008中小業.xlsファイルを・・・というように、マクロで移動させたいのです。 これらのファイル、フォルダは全て、企業種類というフォルダの中にあります。 VBAを教えていただけましたら嬉しいです。
- 締切済み
- その他MS Office製品
- シンクライアントでのVBAによるファイル保存
ExcelのテンプレートファイルにVBAマクロを記述しています。 VBAにより新しいブックを開き、データを作り込んだ後、テンプレートファイルが置かれているフォルダに保存するマクロを作成しました。 リッチクライアント上では問題なく動くのですが、シンクライアント上で実行すると、 ActiveWorkbook.SaveAs Filename:='フルパスのファイル名' ※フルパスのファイル名は、"C:\folder\file.xlsx"というような形式になっています。 のところでエラーになってしまいます。 パス付きのファイル名について、作法があるようでしたらお教えいただけますか。 よろしくお願い致します。
- 締切済み
- Excel(エクセル)
- エクセルのファイルが複数開いてしまう
エクセルのファイルを開くと何故か複数開いてしまいます。 詳しい状況は、ファイル名 aaa というデータが保存されています。 この aaa のファイルを開くと、何故か aaa1 と aaa2 と2つのデータが勝手に作成されてしまいます。 内容は一緒のようですが、今までにない事例なので早く解消したいのですがどうしたらいいですか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBA Application.GetSaveAsFilenameでのフォルダー名指定
いつも大変お世話になりありがとうございます。 早速ですが、教えてください。 以下のマクロでファイル名を指定して保存させようと思うのですが、デフォルトで表示するフォルダーをたとえば、Cドライブの「AAAAA」という指定はできますでしょうか? また、そのパソコンに「AAAAA」というフォルダーが無かったら、作るようにしたいのですがどう記述すればよいのでしょうか? Sub test() Dim aaa As String aaa = Format(Now, "MMDDHHmm") FName = Application.GetSaveAsFilename(InitialFilename:=aaa & ".csv", FileFilter:="CSVファイル(*.csv), *.csv") '以下略 End Sub
- ベストアンサー
- オフィス系ソフト