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

このQ&Aのポイント
  • ExcelVBAを使用して、セルの値を利用してフォルダ間の移動を行いたいです。
  • 具体的には、フォルダAからフォルダBへの移動を行いたいですが、移動させたいファイルのファイル名はセルA1からA10に記載されている10個のファイルです。
  • ファイル名の先頭の4文字が一致していれば、それ以降の文字列はワイルドカード「*」で指定したいです。
回答を見る
  • ベストアンサー

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

  • pu-2
  • お礼率100% (1/1)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>ファイル名「1111*」となっている部分に セルのA1からA10にあるものを自動で取得させたい その通りに行います。 つまりA1以下に1111*などのように記入してあるとします。 sub macro1()  dim s1 as string  dim s2 as string  dim fso as object  dim h as range  s1 = "c:\Users\aaa\Desktop\A\"  s2 = "c:\Users\aaa\Desktop\B\"  set fso = createobject("Scripting.FileSystemObject")  for each h in worksheets("Sheet1").range("A1:A10")   fso.movefile s1 & h.value & ".xlsx", s2  next  set fso = nothing end sub #さくっと応用すれば,例えばセルには「1111」だけを記入しておき,「*.xlsx」をコードで継ぎ足すようなこともできますね。

pu-2
質問者

お礼

keithin様 すみません。  「1111」の後ろに「*」をつけ忘れていました。 出来ましたぁ(^O^)/ すごく、すごく助かりました。 すばらしいです。 ありがとうございました。

pu-2
質問者

補足

keithin様 早速のご回答すごくうれしいです。ありがとうございます。 ただ、上記で実行してみましたが、 >fso.movefile s1 & h.value & ".xlsx", s2 で デバック。 ファイルが見つかりません。に なります(>_<) 私の行った操作は ・Book1のSheet1のA1に「1111」         A2に「1112」 と データを入力 ・S1 S2 を実際のフォルダパスを入れた。         S1のフォルダには「1111東京太郎」                 「1112北海花子」                 「1113青森次郎」 ・range("A1:A2") と 以上の部分だけを編集し実施しました。 あと、私はVBA初心者で本当に初歩的な質問ですが、 >& h.value & ".xlsx" 上記の内容で セルには「1111」 実際フォルダ内は 「1111東京太郎」を 一致させることは できるのでしょうか? ワイルドカードなどの使用は必要ないのでしょうか? 本当にお手数おかけいたしますが、 数日 テキストやネットで検索し 自分なりに色々挑戦してみましたが、駄目なんです。 どうか どうか よろしくお願いします。

関連するQ&A

  • 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 お詳しい方ご教授願います。

  • 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"を 変数で記述するとエラーになってしまい、プログラムが通りません。 何かいい方法がございましたら、ご教授ください。 過去の質問を調べてもいまいちわかりませんでした。

  • ExcelVBAでセルに入力された値をみて複数のファイルコピーするマクロ

    VBA初心者です。関連する質問はみたのですが、組み合わせが他と違い うまくできませんでした。 EXCELのマクロを使って、それぞれ格納場所が異なる2つのエクセルファイル(格納元D:\AAA\123A.xlsと格納元D:\BBB\123B.xls)をコピーして指定のフォルダ(格納先D:\ZZZ\)内へ2つファイルを保存したいのですが・・ Private Const cnsSrc = "D:\AAA\123A.xls" Private Const cnsDst = "D:\ZZZ\123A.xls" Sub COPY_Func() ' ファイルをコピー FileCopy cnsSrc, cnsDst End Sub まで考えたんですが 複数のファイルまでコピーさせることができませんでした。 また、それぞれのフォルダ内には○○○A.xlsと○○○B.xlsが複数あるため コピーするファイル名は選択させたく、sheet1のA1セルに入力された"123"を みて123A.xls123B.xlsをコピーさせたいのですが、可能でしょうか? 宜しくお願い致します。

  • 【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

  • ファイルを移動先のフォルダへ移動させる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

  • セルの値を使ってファイルを保存

    1.現在以下の内容で"C8"セルの値を取得してファイルを保存しています。 Sub ファイル保存() C = Range("C8").Value ActiveWorkbook.SaveAs Filename:="C:\Users\moto\Desktop" & C & ".xls" End Sub 2.ファイル名保存時に"H1"の日付もプラスしたいです。 現在は"H1"セルには"2008/11/17"と記入されてますがこれを"20081117"と変更し、"20081117_A見積書"というファイル名で保存する。("C8"=A見積書)

  • EXcelでセルを移動

    EXCELでセルを移動させるにはどうすればいいでしょうか。教えてください。(A1のセルをB2へ移動させる) 例) A1セル 5678  A2セル 1234  ⇒ A2セル  B2セル              1234 5678 移動したいセルの量がかなり多いので単純に移動したいセルを指定してドラッグして移すのが大変なんです。 よろしくお願いします。

  • セルをダブルクリックすると、不特定のフォルダ内にある、セルの値を含む名前のファイルが開くマクロを教えて下さい。

    マクロ初心者です。 いろいろ検索してみましたが、見つけられなかったので教えて下さい。 セルをダブルクリックすると、そのセルの値を含むファイルが開くようにしたいのですが、ファイル名はセルの値と完全に一致してはいません。但し、必ずセルの値でファイル名は始まります。 例: セルの値="A"    開きたいファイル名は=  "AA 12345987.xls"とか"BCBB 657.xls 開きたいファイルは、C:\ww\001、C:\ww\022、C:\ww\303、、、いずれかのフォルダ内にあります。 C:\wwまでは同じです。 Private Sub Worksheet_BeforeDoubleClick _ (ByVal Target As Range, Cancel As Boolean) を使って、特定フォルダ内にある、セルの値と完全に一致する名前のファイルを開く方法は、検索をくりかえして見つけることができました。 ファイルが存在するパスを特定できず、 ファイル名が、セルの値と完全には一致していないファイルを自動的に開く方法がありましたら、教えて下さい。お願いします。

  • 数字部分のみ別のセルに移動したいです。

    複数のセルの、数字部分のみ別のセルに移動したいのですが、 教えていただけますでしょうか? 例 セルA aaa1234 bbb5678 ccc9874 ddd5642 ↓ セルA   セルB aaa     1234 bbb     5678 ccc     9874 ddd     5642 このように、文字と数字を分けたいです。 よろしくお願いします。

  • セルが移動した時に値の代入を行いたい

    「A1」にセルがあり、これがほかのセル(例えばA2とかB1とか)に移動したときに「A10」に値を代入すると云うことはできるでしょうか。 「A10」に代入式を書けば出来ますが、VBAで出来るのであれば教えて頂きたく、舌足らずの説明で申し訳ありませんがよろしくお願いいたします。

専門家に質問してみよう