
No.3ベストアンサー
- 回答日時:
500個ほどのファイルを、そのファイルを基準に振り分ける例です。
マスタ(book)の
社員番号(ファイル名)に該当するセル範囲に『社員コード』、
部署に該当する範囲に『部署コード』の範囲名を付けます。
VBA内の2つのフォルダを設定します。
ただし、2つのフォルダが異なるドライブにあると使えません。
マスタ(book)の『社員コード』、『部署コード』が入っているシートのコードウインドウに貼り付けます。
実行する時は、元ファイルのコピー(バックアップ)を行った後、実行して下さい。
Sub Furiwake()
Const srcFolder = "A:\社員\" '*** Bookのあるフォルダ(指定する)
Const desFolder = "A:\部署\" '*** 振り分けるフォルダ(指定する)
Dim fileName As String 'Excelファイル名
Dim rg As Range '検索した社員コードのセル
Dim schCode As String '検索する社員コード
Dim schFolder As String '検索した社員コードに対するフォルダ
fileName = Dir(srcFolder & "*.xls")
While fileName <> ""
'ファイル名からコードを取り出す
schCode = Application.Substitute(fileName, ".xls", "")
'取り出したコードと一致するセルを探す
Set rg = Range("社員コード").Find(what:=schCode, LookAt:=xlWhole)
If Not rg Is Nothing Then
'取り出したコードと一致するセルと同じ行の部署を取り出す
schFolder = Cells(rg.Row, Range("部署コード").Column)
'フォルダ+ファイル名でファイル名前を変える
Name srcFolder & fileName As desFolder & schFolder & "\" & fileName
Else
'コードが見つからなかった時
MsgBox fileName & "の対象部署はありません"
End If
'次のExcelファイル
fileName = Dir
Wend
End Sub
No.2
- 回答日時:
こんな感じでしょうか・・・
あとは実際の条件に合わせて文字列関数の所を変化させる、
CASEの項目を増やすなどしてください。
当方はEXCEL2000で動作確認しました。
Sub FileMoveme()
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("500個ファイルがあるフォルダのパス")
Set fc = f.Files
For Each f1 In fc
Select Case Left(f1.Name, 1)'先頭の1文字で区別する場合
Case "A"
f1.Move "振り分けるフォルダAのパス" & f1.Name
Case "B"
f1.Move "振り分けるフォルダBのパス" & f1.Name
Case "C"
f1.Move "振り分けるフォルダCのパス" & f1.Name
Case Else
End Select
Next
Set fs = Nothing
Set f = Nothing
Set fc = Nothing
End Sub
No.1
- 回答日時:
マスタがどんな形なのか分からないのですが、例えばExcelのワークシートのA列にコードが、B列に部署名が、1行から500行まで並んでいる様なもので、ファイル名が123.xlsのとき、コードは123だとします。
そしてC:\ABCのフォルダにファイルが500個存在し、C:\DEFのフォルダに部署名のフォルダが、例えば C:\DEF\営業部 の様な形で存在しているとします。
マスタのワークシートで、以下のマクロを実行すればどうでしょうか。
Sub Macro1()
Dim i As Long
On Error Resume Next
ChDir "C:\ABC"
For i = 1 To 500
Name "C:\ABC\" & Cells(i, 1) & ".xls" As "C:\DEF\" & Cells(i, 2) & "\" & Cells(i, 1) & ".xls"
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダにリンクを貼りたい
-
Excel VBA マクロ リストボックス
-
エクセル 一つ上の階層の別フ...
-
フォルダ選択ダイアログ:ネッ...
-
ファイル保存時のダイアログ表...
-
VBAでOutlookのサブフォルダをm...
-
フォルダ内のPDFファイル名を変...
-
Hitachi Embedded Workshop (HE...
-
VBA active sheetをPDF化して指...
-
フォルダ配下のファイル作成日...
-
Access VBA で フォルダ権限...
-
EXCELのセルにフォルダのパスの...
-
VBプロジェクトでのフォルダ構...
-
C++Builder Ver6.0.でコンポー...
-
フォルダを開いて、閉じるのプ...
-
META-INFフォルダの置き場所に...
-
ファイル名と同名のフォルダを...
-
パスを通したはずなのに「パス...
-
vbsで選択ダイアログを表示した...
-
Excel VBAでフォルダ作成及び一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル名と同名のフォルダを...
-
Windows10でコマンドプロンプト...
-
会社のネットワーク上のファイ...
-
パス名に2バイト文字(マルチバ...
-
デスクトップの画像をhtmlに表...
-
ExcelのVBAでフォルダ指定がで...
-
C ファイル出力で、フォルダが...
-
Excelのハイパーリンクについて...
-
VBA 最新のフォルダ取得
-
【マクロ】フォルダにファイル...
-
【ExcelVBA】一覧表の記載に従...
-
【マクロ】ファイル名の日付に...
-
エクセルマクロで指定フォルダ...
-
フォルダにリンクを貼りたい
-
サーバ内のフォルダ名と各フォ...
-
Excelvbaでブックをコピー名前...
-
ThisWorkbookがあるフォルダ更...
-
excelマクロ 冒頭3文字が一致す...
-
VBA フォルダ名に特定の文字を...
-
Downloaded Program Filesはど...
おすすめ情報