Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1205 / 13645 ツリー ←次へ | 前へ→

【75693】フォルダの検索、一致した場合のコピー方法 ペンネーム船長 14/6/15(日) 1:38 質問[未読]
【75694】Re:フォルダの検索、一致した場合のコピー... γ 14/6/15(日) 4:51 回答[未読]
【75697】Re:フォルダの検索、一致した場合のコピー... ペンネーム船長 14/6/15(日) 21:04 お礼[未読]

【75693】フォルダの検索、一致した場合のコピー方...
質問  ペンネーム船長  - 14/6/15(日) 1:38 -

引用なし
パスワード
   初めてお世話になります。

【やりたい事】
・Aフォルダーの中に複数のフォルダーがあります。
 エクセルのA列にフォルダー名が列挙してあります。
 このフォルダー一覧とAフォルダーの中を照合し、合致したフォルダーがあれば そのフォルダーをBフォルダーへコピーする。
 マクロは、一覧表のあるエクセルに記述するものとします。

【コードを記述しましたが上手く動きません】
以下のコードを実行させたのですが、1フォルダーだけコピーが成功し、「CopyFrom = FSO.BuildPath(FolPath1, Folder.Name)」の行が黄色になって止まってしまいました。
間違っているところを指摘して下さると助かります。

Private Sub CommandButton1_Click()

Dim FSO As Object, Folder As Variant
Dim ws As Worksheet
Dim Rist As Variant
Dim i As Integer
Dim FolPath1 As String
Dim FolPath2 As String
Dim CopyFrom  As String
Dim CopyTo   As String
  
Set ws = Worksheets("一覧表")
Set FSO = CreateObject("Scripting.FileSystemObject")

FolPath1 = "C:\Users\○△□\Desktop\Aフォルダー"
FolPath2 = "C:\Users\○△□\Desktop\Bフォルダー"

  For Each Folder In FSO.GetFolder(FolPath1).SubFolders
    For i = 1 To 1000
  Set Rist = ThisWorkbook.Worksheets("一覧表").Cells(i + 1, 1)
    If Folder.Path = FolPath1 & "\" & Rist Then
     'Aフォルダーの中のフォルダー名がリストと一致した場合、そのフォルダーをBフォルダーへコピーする
     CopyFrom = FSO.BuildPath(FolPath1, Folder.Name)
     CopyTo = FSO.BuildPath(FolPath2, Folder.Name)
     FSO.CopyFolder CopyFrom, CopyTo
     Set FSO = Nothing
    End If
    Next i
  Next Folder
 
End Sub

【75694】Re:フォルダの検索、一致した場合のコピ...
回答  γ  - 14/6/15(日) 4:51 -

引用なし
パスワード
   Set FSO = Nothing
の位置がおかしいです。
# 全体をよく見ていませんが。

【75697】Re:フォルダの検索、一致した場合のコピ...
お礼  ペンネーム船長  - 14/6/15(日) 21:04 -

引用なし
パスワード
   下記コードで思う通りの動きになりました。
ご指摘のコード
Set FSO=Nothig
を削除したら上手くゆきました。
有難う御座いました。

Private Sub CommandButton1_Click()
Dim FSO As Object, Folder As Variant
Dim ws As Worksheet
Dim Lst As Variant
Dim i As Integer
Dim FolPath1 As String
Dim FolPath2 As String
Dim CopyFrom As String
Dim CopyTo As String
Set ws = Worksheets("一覧表")
Set FSO = CreateObject("Scripting.FileSystemObject")
FolPath1 = "C:\Users\○△□\Desktop\Aフォルダー"
FolPath2 = "C:\Users\○△□\Desktop\Bフォルダー"
 For Each Folder In FSO.GetFolder(FolPath1).SubFolders
  For i = 1 To 100
   Set Lst = Workbooks(1).Worksheets(1).Cells(i + 1, 1)
   If Folder.Path = FolPath1 & "\" & Lst Then
    CopyFrom = FSO.BuildPath(FolPath1, Folder.Name)
    CopyTo = FSO.BuildPath(FolPath2, Folder.Name)
    FSO.CopyFolder CopyFrom, CopyTo
   End If
  Next i
 Next Folder
End Sub

1205 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free