[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ファイル名が一致したらフォルダ移動』(みち)
Aというフォルダに数百のエクセルファイルがあります。
その中から、ファイル名が入ったエクセルリストと一致するものだけを
Bのフォルダに移したいのです。コピーでもかまいません。
毎回これを手作業でやっているので、何か方法はないでしょうか?
WindowsVista
Excel2003
ファイル名は拡張子まで含めて正しく入力されているでしょうか。 ファイル名のリスト形式(セル位置)を提示してもらえると、解答しやすいと思い ます。 バッチでもできますし、マクロでもできますが、リストファイルというのは毎回 変わるのでしょうか。 また、Aというフォルダと、リストのあるファイルのフォルダは別ですか? (Mook)
ファイル名のリスト形式(セル位置)を提示、とはどういうことでしょうか?すみません、理解できません。
A フォルダは固定でしょうか。 リストファイルは毎回変わるということですね。 セル位置 というのは、「リストがSheet1 の A列にある」という情報のことです。 マクロは利用可能ですか? (Mook)
A フォルダは固定です。 リストファイルは毎回変わります。 セル位置 は、リストがSheet1 の A列にあります。 マクロは利用可能です。
マクロの例です。 移動元と移動先のフォルダは実際に併せてください。
Sub CheckAndMoveFiles() Const FolderA = "C:\Data\A" Const FolderB = "C:\Data\B"
Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject")
Dim ws As Worksheet Set ws = ActiveSheet
Dim lastRow As Long lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
Dim r As Long Dim fileName As String For r = 1 To lastRow If ws.Cells(r, "A").Value <> "" Then fileName = ws.Cells(r, "A").Value & ".xls" If fso.FileExists(FolderA & "\" & fileName) = True Then fso.moveFile FolderA & "\" & fileName, FolderB & "\" & fileName End If End If Next End Sub (Mook)
ファイル名:A00001-検査、A00002-表、A00003-検査表・・・
リスト:A00002、A00003・・・
ファイル名の頭6文字はちゃんと入っているのですが、途中からまちまちな入力のされ方をしているので、一致したと見なされずフォルダ移動しないのです。
上記では、ファイル名とリストファイルの内容が完全一致したものでしたが、ファイル名の頭6文字とリストファイルをマッチングさせることは可能でしょうか。
ファイル名:A00001-検査、A00002-表、A00003-検査表・・・リスト:A00002、A00003・・・
ファイル名の頭6文字はちゃんと入っているのですが、途中からまちまちな入力のされ方をしているので、一致したと見なされずフォルダ移動しないのです。
現在はA列を上から順番に、 If fso.FileExists(FolderA & "\" & fileName) = True Then でファイルがあるかの確認をしていますが、fso はワイルドカードは使えません。 Dir 関数はワイルドカードが使えるので、上記の部分を dFileName = Dir( FolderA & "\" & left(filename,6) & "*.xls") Do While dFileName <> "" 移動処理 dFileName = Dir() Loop のように書きかえれば対応可能でしょう。 下記、ご参考まで。 http://officetanaka.net/excel/vba/tips/tips95.htm (Mook)
あけみさん、回答者のみなさん、おはようございます。
回答者への参考として一応リンクしておきます。
http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=143406&rev=0
(マチルダ)
それって、
Sub CheckAndMoveFiles()
Const FolderA = "C:\Data\A" Const FolderB = "C:\Data\B"
Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject")
Dim ws As Worksheet Set ws = ActiveSheet
Dim lastRow As Long lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
Dim r As Long Dim fileName As String For r = 1 To lastRow If ws.Cells(r, "A").Value <> "" Then fileName = ws.Cells(r, "A").Value & ".xls"
dFileName = Dir(FolderA & "\" & Left(fileName, 6) & "*.xls") Do While dFileName <> "" 移動処理 dFileName = Dir() Loop
fso.moveFile FolderA & "\" & fileName, FolderB & "\" & fileName End If End If Next End Sub
でいいってことでしょうか?
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.