先ほど質問して一度は出来ましたが、2度目出来なくなりました。
https://oshiete.goo.ne.jp/mypage/history/question/
数百あるフォルダーがあります。
20190802-1、20190802-2,20190802-3,20190802-終
頭8桁が変更します。
枝番を除外して頭8桁のフォルダー名を作成し、同じ8桁のフォルダー作成したフォルダーに移動させたいのですができません。
'-------------------------------------汚いコードですが
Dim A, folSample,sourceFolder,destinationFolder As String
Dim Path As String
Dim fso As New Scripting.FileSystemObject
Dim i As Long
For i = 2 To Range("B2").End(xlDown).Row
Dim FolderName As String
FolderName = Cells(i, 2).Value
移動元 = Range("A2").Value 'D:\Data
移動先 = Range("A3").Value 'D:\Data\ 移動先
A = FolderName
移動フォルダ= 移動先 & "\" & FolderName
移動先フォルダ= 移動元 & "\" & FolderName & "*"
folSample = Dir(移動元 & "\" & A, vbDirectory)
If Len(folSample) <> 0 Then
MsgBox (folSample & "の存在を確認しました"), vbInformation
sourceFolder = 移動先フォルダ
destinationFolder = 移動フォルダ
fso.MoveFolder sourceFolder, destinationFolder
Set fso = Nothing
Else
MsgBox (folname & "は存在しません"), vbCritical
End If
Next i
MsgBox "終了しました"
End Sub
エラーはでません。フォルダーが存在するのに無いとなります。
宜しくお願い申し上げます。
No.2
- 回答日時:
質問1:
移動元のフォルダに以下のフォルダがあるとして
20190802-1
20190802-2
20190803-1
20190803-2
移動先に移動すると
移動先に
20190802のフォルダが作成され、その下に下記のフォルダが作られる
20190802-1
20190802-2
20190803のフォルダが作成され、その下に下記のフォルダが作られる
20190803-1
20190803-2
となれば、よいのでしょうか。
質問2:
そうすると、
>先ほど質問して一度は出来ましたが、2度目出来なくなりました。
ということですが、移動元のフォルダはなくなるので、2度目はできなくなるは当たり前かと思いますが・・・
No.3ベストアンサー
- 回答日時:
No2です。
No2の返信がないので、こちらで仮定して、マクロを作成します。①移動元に20190802*に該当するフォルダがない場合は、そのフォルダの移動はエラー表示せずにスキップする。
②移動先に20190802に該当するフォルダがない場合は、そのフォルダを作成する。
③移動元=20190802* 、 移動先=20190802 としてフォルダの移動を行う。
上記条件で作りました。
尚、1回実行した後、そのままのシートの状態で、もう一度、実行すると、移動元のフォルダがないので、処理がスキップされ、「終了しました」だけが表示されます。
-----------------------------------
Option Explicit
Sub フォルダ移動()
Dim fso As New Scripting.FileSystemObject
Dim i As Long
Dim 移動元 As String
Dim 移動先 As String
Dim 移動元フォルダ As String
Dim 移動先フォルダ As String
移動元 = Range("A2").Value 'D:\Data
移動先 = Range("A3").Value 'D:\Data\ 移動先
If Dir(移動元, vbDirectory) = "" Then
MsgBox ("移動元フォルダ<" & 移動元 & ">が存在しません")
Exit Sub
End If
If Dir(移動先, vbDirectory) = "" Then
MsgBox ("移動先フォルダ<" & 移動先 & ">が存在しません")
Exit Sub
End If
For i = 2 To Range("B2").End(xlDown).Row
Dim FolderName As String
FolderName = Cells(i, 2).Value
移動元フォルダ = 移動元 & "\" & FolderName & "*"
移動先フォルダ = 移動先 & "\" & FolderName
If Dir(移動元フォルダ, vbDirectory) <> "" Then
If Dir(移動先フォルダ, vbDirectory) = "" Then
MkDir 移動先フォルダ
End If
fso.MoveFolder 移動元フォルダ, 移動先フォルダ
End If
Next i
MsgBox "終了しました"
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Excel(エクセル) 【マクロ】ファイルを古い順に、1個ずつ移動する 1 2022/09/06 20:30
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
同一フォルダ内の別ブックから...
-
集めたシートのシート名を変更...
-
VBA フォルダ名に特定の文字を...
-
excelマクロ 冒頭3文字が一致す...
-
ファイルとフォルダのどちらも...
-
パス名に2バイト文字(マルチバ...
-
ExcelのVBA:フォルダ内のファイ...
-
PHPで、指定フォルダ(サブフォ...
-
フォルダ内のファイルの作成日...
-
Excelのハイパーリンクについて...
-
Dreamweaverでイメージを挿入す...
-
VBA 最新のフォルダ取得
-
VBScriptで作るファイル移動プ...
-
C++のコンソールアプリケーショ...
-
VBAで行うフォルダ・ファイル検...
-
Let’s Encryptでwebroot設定な...
-
exclude xcopy 除外フォルダ指...
-
ツリービューを使って、エクス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報
tatu99様
はいそうです。
D列にフォルダー名を書き出し
C列にフォルダーをD列から取り出し(関数が入っています。LEFT(D2,8))
B列に(C列の重複を除いたもの)なければフォルダー作成
一度できたのですが、最終報がなければ移動しないと言うのを追加しようと試行錯誤している
うちにおかしくなりました。
宜しくお願い申しあげます。