Excel VBAでフォルダ作成及び一括移動

このQ&Aのポイント
  • 特定のフォルダの中身を別フォルダに一括移動させるVBAを作成する方法について教えてください。
  • 実行のたびに移動先のフォルダ内に年月日時分秒のフォルダを作成し、ファイルを移動させたいです。
  • 固定フォルダで一括移動のVBAはできたのですが、フォルダの作成方法がわかりません。
回答を見る
  • ベストアンサー

Excel VBAでフォルダ作成及び一括移動

特定のフォルダの中身を別フォルダに一括移動させるVBAを作りたいと思っています。 実行の都度、移動先のフォルダ内に年月日時分秒のフォルダを作成して、そこに ファイルを移動させたいのですが、フォルダの作り方がわかりません。 固定フォルダで一括移動はいろいろなサイトを回って以下のような感じでできたのですが。 Const cnsSOUR = "C:\Users\abc\Desktop\SAMPLE\*.*" Const cnsDEST = "C:\Users\abc\Desktop\SAMPLE2\" Dim objFSO As FileSystemObject Set objFSO = New FileSystemObject ' FSOによるファイルコピー objFSO.MoveFile cnsSOUR, cnsDEST Set objFSO = Nothing お詳しい方ご教授願います。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

format(now,"yyyymmdd\-hhnnss") でどうぞ。 \- を付け加えたのはこの方が見やすいかな? と思っただけですので不要なら無くて可。

edwardmax
質問者

お礼

早急のご回答ありがとうございます。 想定した通りの動きをしました。 重ねてお礼申し上げます。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

フォルダ作成は、VBAにも mkDir ステートメントが有りますし、 FileSyatemObject なら、objFso.createFolder("フォルダーパス") でできますよ。 Office2010 ではFileSystemObject関連もヘルプで見られるのですが http://okwave.jp/qa/q7891560.html の後半にある方法で用意すればもう少し詳しく載ってますし 探しやすいので便利です。

edwardmax
質問者

お礼

回答ありがとうございます。 単純にフォルダを作成(年月日で)するだけであれば  Dim SaveDir As String  SaveDir = "C:\Users\abc\Desktop\SAMPLE2\" & Format(Date, "yyyymmdd")  MkDir SaveDir のような感じで出来ると思うのですが、時分秒を付加した形でフォルダ名を作成しないと日に数回処理するため問題があります。 ヘルプは見てみましたが、探し方が良くないのかそれらしいものを見つけられません。 年月日時分秒でフォルダを作る方法をご教授願えますでしょうか。

関連するQ&A

  • ExcelVBAでセルの値利用してフォルダ間の移動

    フォルダ「A」から「B」への移動は以下の内容で実施できることまではわかりましたが、移動させたいファイルはセルA1からA10にあるものを参照して計10個のファイルを「A]から「B」に移動したいのです。(ファイル名は先頭の4文字のみが一致すればそれ以下の文字列はワイルドカード「*」で実施したいのです。 以下の 内容で ファイル名「1111*」となっている部分に セルのA1からA10にあるものを自動で取得させたいのです。 Sub 番号一致の移動() '一つ目 Const cnsSOUR = "C:\Users\aaa\Desktop\A\1111*.xlsx" Const cnsDEST = "C:\Users\aaa\Desktop\B\" Dim objFSO As FileSystemObject Set objFSO = New FileSystemObject objFSO.MoveFile cnsSOUR, cnsDEST Set objFSO = Nothing End Sub

  • VBA初心者です.文字を抽出しファイルを移動したい

    セルA1に表示された文字(例,CK001など)の右から3番目までの文字を拾って,その文字を含むファイルをAからBに移動したいのですが,上手く作動しませんでした.パス内に変数は使用できないのか(ここではZ)「ファイルが見つかりません」となってしまいます.良い方法をご教授いただければ幸いです.下記は自分が作成したプログラムです. Sub Sample() Dim fso As Object Set fso = CreateObject("scripting.filesystemobject") Dim A As String Dim B As String Dim Z As Variant Z = Right(Range("A1"), 3) A = "C:\Users\abc\Documents\test\*Z*" B = "C:\Users\abc\Desktop\1\2\" fso.MoveFile A, B End Sub

  • ファイルを移動先のフォルダへ移動させるVBA教えて

    とあるシートのB列の値かつAM列の値と、とあるフォルダ内にあるファイルの名称が部分一致したときに、 そのファイルを移動先のフォルダへと移動させるVBAを教えていただけないでしょうか? この内容のVBAを作ったのですが、エラーが出てしまいます(エラーの箇所はコード内に示している)、またこのエラーが影響しているか分からないのですが分別されているのですが上手くいっていません VBA初心者なのでどうか分かりやすくお教えお願い致します Sub 分別() '移動元のフォルダの設定 Const xFrm As String = "C:\before\" '移動先のフォルダの設定 Const xTo As String = "C:\after\" 'アクティブになっているシートのB列の値かつAM列の値と、C:\before内のファイルの名称が部分一致した時、そのファイルをC:\afterへと移動する '((例)B列:M123456、AM列:789、C:\before内のファイル:M123456-789-C12.csv) Dim i As Long, xFile As String With ActiveSheet For i = 3 To .Cells(Rows.Count, 1).End(xlUp).Row With .Cells(i, 2) xFile = Dir(xFrm & "*" & .Value & "*") Do While xFile <> "" If xFile Like "*" & .Offset(, 37).Value & "*" Then Name xFrm & xFile As xTo & xFile End If xFile = Dir() Loop End With Next i End With 'C:\before内に残っているファイルを、C:\after2に移動 Dim fso As Object Dim MFir As String Dim SFir As String Set fso = CreateObject("Scripting.FileSystemObject") MFir = "C:\before\*.*" SFir = "C:\after2\" fso.MoveFile MFir, SFir →ここでエラー出る Set fso = Nothing MsgBox "終了" End Sub

  • ファイルの移動について

    いつもお世話になっております。 ファイルの移動についてです。 A列にファイルの一覧があります。 この一覧にあるファイルを全てTドライブのフォルダに同じ配下で移動したいのです。 A列 ファイル S:\未完成\data\DA00001146.xls S:\未完成\test\data\DA00001147.doc S:\未完成\test\DA00001148.ppt 逆スラッシュは実際には半角の¥で表示されています。 ファイル T:Sドライブ\未完成\data\DA00001146.xls T:Sドライブ\未完成\test\data\DA00001147.doc T:Sドライブ\未完成\test\DA00001148.ppt movefile を使うとFileObjectSystemを使うことになり 私には変数をどのように設定していいかわかりません。 Sub test() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") ''C:\Tmp\フォルダ内の*.xlsをC:\Work\フォルダに移動します FSO.MoveFile "C:\Tmp\*.xls", "C:\Work\" Set FSO = Nothing を探してきて、何とかしようと思ったのですが、うまく 使えませんでした。 ご教授ください。 よろしくお願いします。

  • Excel vba ファイルの移動について

    excelのvbaでファイルを管理するツールを作り始めました。vba自体初めて間もないのですが、ファイル移動に関してわからなかった点がありますので、質問させていただきます。 インターネットで調べたところ、固定のファイルを移動及びファイル名の変更をする場合には以下の記述でできそうなんですが、 ************************************************ Option Explicit Private Const cnsSOUR = "C:\AAA\SAMPLE1.txt" Private Const cnsDEST = "C:\BBB\SAMPLE2.txt" Sub MOVE_SAMPLE1() Name cnsSOUR As cnsDEST End Sub ************************************************** この"C:\AAA\SAMPLE1.txt"及び"C:\BBB\SAMPLE2.txt"を 変数で記述するとエラーになってしまい、プログラムが通りません。 何かいい方法がございましたら、ご教授ください。 過去の質問を調べてもいまいちわかりませんでした。

  • サブフォルダからエクセルブックをとりだすマクロ

    特定のフォルダからエクセルブックのみを抽出し別のフォルダに集める(コピーする)マクロを作りたいと思い、以下のように作成しました。 (AAAフォルダ⇒移動元、BBBフォルダ⇒移動先) ただしこれだと、AAAフォルダ内にあるサブフォルダからは拾ってこれないようです。 AAA内の全てのサブフォルダからエクセルブックを拾ってくるにはどう修正すればよろしいでしょうか。 ――――――――――― Sub sample1() Dim FSO As Object, fld As Variant, bk As Variant Const Fld1 As String = "C:\AAA" Const Fld2 As String = "C:\BBB\" Const tgt As String = "*.xlsx" Set FSO = CreateObject("Scripting.FileSystemObject") For Each fld In FSO.GetFolder(Fld1).SubFolders For Each bk In fld.Files If bk.Name Like tgt Then bk.Copy Fld2 End If Next bk Next fld End Sub

  • 変数で新しいフォルダを作成する方法

    aspでpostされた際に、レコードID(RecID)を名前としたフォルダを 作成したいのですが、下記のように記述しても作成しません。 RecID = 1001 Dim objFSO Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.CreateFolder "c:\Inetpub\wwwroot\testdir\files\" & RecID 動的なフォルダの作成はどのようにしたら実現できますでしょうか。 それとも、そもそも不可能なのでしょうか?よろしくお願いします。

  • 【VBA】任意のファイルの一括操作について

    こちらの識者の方々にはいつもお世話になっております。 VBAで教えていただきたいことがあり質問いたします。 C:\aaa\に下記のexcelファイルがあります。 【見本】東京.xls 【見本】埼玉.xls 【見本】神奈川.xls 【見本2】千葉.xls これを 1.C:\bbb\へコピーし、 2.ファイル名の【見本】と【見本2】の文字列を削除し、 3.拡張子の前に本日の日付をyyyymmdd形式で追加し、 4.それぞれのexcelファイルのsheet1のa1セルにyyyymmdd形式で本日の日付を入力する。 というマクロを組みたいと思っています。 一つ一つnameステートメントでファイル名を変更したり、 open→Range("A1").Value→closeとやってもできるんですが、 条件もすこぶる単純ですし、一括でできるようなコードはないかと思っています。 最終的な期待するファイルのフルパスは↓のようになります。 C:\bbb\東京20130426.xls C:\bbb\埼玉20130426.xls C:\bbb\神奈川20130426.xls C:\bbb\千葉20130426.xls C:\bbb\へコピーするところまでは調べてできたのですが、 その先がこれというものを見つけられず。 どなたかご教示いただけないでしょうか。 宜しくお願い致します。 Sub Test() Dim objFSO As FileSystemObject Const cnsSOUR = "C:\aaa\*.xls" Const cnsDEST = "C:\bbb\" Set objFSO = New FileSystemObject objFSO.CopyFile cnsSOUR, cnsDEST, True Set objFSO = Nothing End Sub

  • エクセル2010のVBAを使ってバックアップ

    エクセル2010のVBAを使ってバックアップを取れる仕組を作っています。 Sub backup() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile "C:\data\*.xls", "C:\back\" Set FSO = Nothing End Sub 実際にバックアップを取りたい元データはマイドキュメントにあります。 また、複数のパソコンで実行したいのですが、 C:\Documents and Settings\ログインユーザー名\MyDocuments\ このログインユーザー名がバラバラです。 データ元のパスはどのように取得すれば良いでしょうか? 教えて下さい。

  • VBSでフォルダ、ファイル作成時のエラーコード

    フォルダ、ファイルが存在しないとき、作成するスクリプトをVBSで作成していますが、疑問点があるのでご教示ください。 objFSO.CreateFolder、objFSO.CreateTextFileを実行が、正常に行われた場合、 Err.Numberに0がセットされると思っていましたが、実際は違っていました。 objFSO.CreateFolderでフォルダが作成される場合、Err.Numberに13が返されます。 objFSO.CreateTextFileでファイルが作成される場合、Err.Numberに438が返されます。 このスクリプトを実行後、フォルダ、ファイルが存在しない場合、作成されることも確認しています。 フォルダ作成後、作成されたフォルダに対して、ファイルの作成/データの書き込みのアクセス権を拒否にすると返されるErr.numberに70がセットされることも確認しています。 なぜ、フォルダ、ファイルが作成された場合、0が返されないのかご存知の方がいらっしゃいましたらご教示ください。 また、その情報が記載されている書籍およびサイトがあれば、お教えいただければ、幸いです。 Option Explicit Dim objFSO Dim objFile Const strFolderName = "C:\VBS" Const strFileName = "C:\VBS\test.txt" On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then WScript.Echo "FSOオブジェクトを作成しました" Else WScript.Echo "FSOオブジェクトを作成できませんでした" WScript.Quit(1) End If If objFSO.FolderExists(strFolderName) Then WScript.Echo "フォルダが見つかりました" Else WScript.Echo "フォルダが見つかりませんでした" If objFSO.CreateFolder(strFolderName) Then If Err.Number = 13 Then WScript.Echo "フォルダを作成しました" Else WScript.Echo "フォルダを作成できませんでした" WScript.Quit(1) End If End If End If If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else Script.Echo "ファイルが見つかりませんでした" If objFSO.CreateTextFile(strFileName) Then If Err.number = 438 Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If End If

専門家に質問してみよう