![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.2ベストアンサー
- 回答日時:
vbaでの実装例です。
以下のマクロを標準モジュールへ登録してください。-------------------------------------------
Option Explicit
Public Sub ファイル移動()
Const Folder As String = "d:\goo\data\goo214" 'DOC格納フォルダ
Const FORCE_REPLACE As Boolean = True '同一ファイルが存在するときの強制上書き(true=上書きする、false=上書きしない)
Dim FSO As Object 'Filesystem
Dim dicT As Object '連想配列
Dim RE As Object '正規表現
Dim dirName As String
Dim fileName As String
Dim result As Object
Dim mstr As String
Dim oldname As String
Dim newname As String
Dim count As Long
Dim atr As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set RE = CreateObject("VBScript.RegExp")
RE.Pattern = "^.*名前.*_"
RE.Global = True
dirName = Dir(Folder & "\*名前*", vbDirectory)
If dirName = "" Then
MsgBox (Folder & "内にフォルダが存在しません。")
Exit Sub
End If
'全てのフォルダを処理する
Do While dirName <> ""
'フォルダ名の記憶
If (GetAttr(Folder & "\" & dirName) And vbDirectory) <> 0 Then
dicT(dirName) = True
End If
dirName = Dir()
Loop
fileName = Dir(Folder & "\*名前*.doc", vbNormal)
If fileName = "" Then
MsgBox (Folder & "内にDOCが存在しません。")
Exit Sub
End If
'全てのファイルを処理する
count = 0
Do While fileName <> ""
Set result = RE.Execute(fileName)
If result.count > 0 Then
mstr = result(0).Value
mstr = Left(mstr, Len(mstr) - 1)
If dicT.exists(mstr) = True Then
oldname = Folder & "\" & fileName
newname = Folder & "\" & mstr & "\" & fileName
MsgBox ("<" & oldname & "><" & newname & ">") '移動前後のファイル名表示
If FSO.FileExists(newname) Then '移動先にファイルが存在するなら
If FORCE_REPLACE = True Then '同一ファイル存在時の上書き指定がtrueなら
FSO.deletefile newname '元のファイルを削除して
FSO.movefile oldname, newname '移動先に移動する
count = count + 1 '移動件数アップ
End If
Else '移動先にファイルが存在しないなら
FSO.movefile oldname, newname '移動先に移動する
count = count + 1 '移動件数アップ
End If
End If
End If
fileName = Dir()
Loop
MsgBox (count & "件のファイルを移動しました")
End Sub
-----------------------------------------------
使用時の注意
Const Folder As String = "d:\goo\data\goo214" 'DOC格納フォルダ
docが存在するフォルダです。あなたの環境にあわせて適切に設定してください。
Const FORCE_REPLACE As Boolean = True '同一ファイルが存在するときの強制上書き(true=上書きする、false=上書きしない)
同一ファイルが移動先に存在する場合の扱いです。
現在は、trueなので、強制的に移動(上書き)します。
これをflaseにすると移動しません。
実装例ありがとうございます。
説明が足らなかったようでごめんなさい。
名前のところは、処理した人の名前が入ります。
山田とか佐藤とか。。。
このあたりでどのように処理したらよいのか。。。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.4
- 回答日時:
すみません。
ますます、わからなくなってきました。
>実際のファイル名はもう少し複雑になってしまいます。
>*****(数字5桁)_場所_ファイル名_処理した人の名前.doc
>処理した人の名前フォルダがあるので、ファイル名にある名前部分と同様のフォルダへ振り分けたいと思っています。
1)最初に提示された日付の部分(20170801等)はどこなのでしょうか。
2)「ファイル名」のなかに名前の部分があって、「処理した人の名前」にも名前があるのですか。
具体的な、以下について実際の例を提示していただけませんでしょうか。
①実際のファイル名
②移動したいフォルダ名
すみません、実際のファイル名は仕事の内容が分かってしまう為、控えております。
やりたい事は、ファイル名に処理した人の名前が入っているので、同じ名前のフォルダへ移動したいのです。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.3
- 回答日時:
>名前のところは、処理した人の名前が入ります。
>山田とか佐藤とか。。。
そうなると、マクロでは、名前のところは、任意の文字として扱うので、
○△□●▲■_20170801.doc → ○△□●▲■フォルダへ
●○●_20170726.doc → ●○●フォルダへ
○△□_20170802.doc → ○△□フォルダへ
のような移動になります。
誤動作させない為には、以下の条件が必要です。
1)日付の部分(20170802等)は、必ず、8桁でしょうか。
2)日付の前の_(アンダーバー)は、必ず、半角のアンダーバーで、
○名前○の中にアンダーバーが含まれることはないと考えて良いですか。
つまり
△佐藤△_20170801.doc (全角のアンダーバー)
△_佐藤△_20170801.doc (アンダーバーが2つある)
上記のようなケースはないと考えて良いですか。
実際のファイル名はもう少し複雑になってしまいます。
*****(数字5桁)_場所_ファイル名_処理した人の名前.doc
処理した人の名前フォルダがあるので、ファイル名にある名前部分と同様のフォルダへ振り分けたいと思っています。
(名前の重複はありません。)
No.1
- 回答日時:
bat はわからないですがVBAなら可能ではないでしょうか?
ただわざわざ移動のためにVBA(Excelなどを起動)でやるのもどうかと思いますけど。
Yahoo!知恵袋とかにはVBSをメインに回答されている方もいるようですので、そっちを使う方が楽かな?
あと移動した時にファイル名にはフォルダ名が残っていても良いのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】甲子園での思い出の残し方
「球場の砂を持って帰る」はもう古いと思った高校球児が、甲子園で負けた際に、思い出に残そうと思って行ったこと
-
ファイル名と同名のフォルダを自動作成して移動させる方法はありますか?
Access(アクセス)
-
多量のファイルをフォルダに自動振り分けするマクロを教えて下さい。
PowerPoint(パワーポイント)
-
ファイル名を該当フォルダ内から検索して移動
その他(プログラミング・Web制作)
-
-
4
あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい
Visual Basic(VBA)
-
5
VBA フォルダ名に特定の文字を含むフォルダを別フォルダにコピーするコードを教えて下さい
Visual Basic(VBA)
-
6
同名フォルダを作成し、そのフォルダに移動するバッチ
その他(プログラミング・Web制作)
-
7
サブフォルダー内のPDFファイルを別フォルダにコピーするVBA
Excel(エクセル)
-
8
サブフォルダ含むフォルダ内の全ファイルから指定文字列を含んだファイルの情報を一覧出力させたい
Visual Basic(VBA)
-
9
バッチを用いたフォルダの自動移動
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名と同名のフォルダを...
-
Windows10でコマンドプロンプト...
-
Excelのハイパーリンクについて...
-
VBAで行うフォルダ・ファイル検...
-
VBA 最新のフォルダ取得
-
Let’s Encryptでwebroot設定な...
-
会社のネットワーク上のファイ...
-
Visual SourceSafeのソースは別...
-
vbsで選択ダイアログを表示した...
-
ファイルとフォルダのどちらも...
-
VBAで、ファイルを移動する方法...
-
フォルダ選択ダイアログ:ネッ...
-
Hitachi Embedded Workshop (HE...
-
セレクトボックスで選択された...
-
VBA フォルダ名と画像ファイル...
-
CreateFolderで別PCにフォルダ...
-
VBAでファイル名を指定して保存...
-
パス名に2バイト文字(マルチバ...
-
Downloaded Program Filesはど...
-
VB6.0 SHCreateDirectoryExの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
VBプロジェクトでのフォルダ構...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
パス名に2バイト文字(マルチバ...
-
Access VBA で フォルダ権限...
-
カレントフォルダって?
-
VBA フォルダ名に特定の文字を...
-
ExcelVBAでフォルダへのハイパ...
-
C ファイル出力で、フォルダが...
-
excelマクロ 冒頭3文字が一致す...
-
マクロVBAのフォルダ階層別で検...
-
保存先のフォルダ名を指定した...
-
Excelで指定したフォルダに保存...
-
ディレクトリ名変更してコピー...
-
フォルダ内のPDFファイル名を変...
おすすめ情報