【发布时间】:2016-10-07 02:17:07
【问题描述】:
我有一个 Excel 文件,其中列 (icol) 每个单元格都包含一些文件的路径,如下所示:
column A column B column c
P:\Desktop\Source\Test1-folder\file1.txt empty column P:\Desktop\Source\Test1-folder\filetest.txt
P:\Desktop\Source\Test1-folder\file2.txt .....
我需要遍历这些单元格以将单元格中的文件复制到目标文件夹中,但我无法成功。谁能帮忙怎么做?
Dim strSlash As String, destinationFolder As String
Dim lastcolumn As Long, icol As Long, lastLigne As Long
Dim rngCell As Range, rngFiles As Range
Dim FSO As New FileSystemObject
destinationFolder = "P:\Desktop\folderdestination"
Dim maListe As Object
Dim workboo As Workbook
Dim worksh As Worksheet
Set workboo = Workbooks.Open(P:\Desktop\Source\excelfile.xlsx)
Set worksh = workboo.Worksheets("path_files")
lastcolumn = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
If Dir(destinationFolder, 16) = "" Then MkDir (destinationFolder)
For icol = 1 To lastcolumn Step 2
lastLigne = Cells(Rows.Count, icol).End(xlUp).Row
Set rngFiles = Cells(1, icol).Resize(lastLigne)
For Each rngCell In rngFiles.Cells
If Dir(rngCell.Value) <> "" Then
strFile = Right(rngCell.Value, Len(rngCell.Value) - InStrRev(rngCell.Value, "\"))
If Dir(destinationFolder & "\" & Left(strFile, 5) , 16) = "" Then
FSO.CopyFile rngCell.Value, destinationFolder & "\" & Left(strFile, 5)
End If
End If
Next rngCell
Next icol
结束子
【问题讨论】:
-
那里有一大堆语法错误。 destinationFolder 需要在引号内,您从未声明或设置 dercol 任何内容,您似乎在使用 FSO 对象而没有创建或设置它,您缺少第一个
For循环的Next.. . 你确定发布了所有的代码吗?好像少了一点…… -
@Dave 我编辑它,因为我一开始只放了一部分代码
-
好的。首先,将
destination folder的声明更正为destinationFolder,变量中不能有空格。然后将worksh的任何实例替换为ws,因为这就是您声明并设置为工作表的内容。我仍然没有看到 dercol(在For k = 1 To dercol行中)在任何地方定义,因此它将初始化为零并阻止循环执行。您仍然缺少Next,因为您有两个For循环,每个循环都需要自己的Next... -
并将 Option Explicit 放在页面的最顶部;这将告诉 VBA 确保您已声明所有正在使用的变量。
-
我只放了一部分代码,因为我的程序下面还有代码。但主要问题是它不会复制任何这些文件@Dave