我编写了一个有效的代码,一个循环遍历CSV文件的DIR循环,执行代码,然后调用下一个直到最后。当我在该循环中添加另一个循环(即DIR循环)以调用PDF的...时,问题就开始了。
我已经遍历了代码,问题是第一个外部循环没有调用下一个CSV(PDF循环工作正常)。我已经进行了一些研究,但无法进行任何调整。
感谢您的协助。如果您可以告诉我要解决的地方,我不介意没有得到答案。
Sub Coles_claims_consolidation()
'Coles Claims Import Macro
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(ThisWorkbook.Path & "\csv_macro\")
For Each oFile In oFolder.Files
Debug.Print oFile.Name
Next 'oFile
'Loop through each file in the folder
For Each oFile In oFolder.Files
If oFile.Name Like "*.pdf" Then
FileCopy oFile, ThisWorkbook.Path & "\" & FiName2 & ".pdf"
End If
Next oFile
Set oFile = Nothing
Set oFolder = Nothing
Set oFSO = Nothing
End Sub
答案 0 :(得分:3)
oFile
已包含文件路径。您应该在oFolder
中设置目标文件路径并在该目录中循环。
如果只需要.pdf
个文件,请保留If oFile.Name
行-否则,如果要所有文件,请删除if语句。
Set oFolder = oFSO.GetFolder(ThisWorkbook.Path & "\csv_macro\")
For Each oFile In oFolder.Files
If oFile.Name Like "*.pdf" Then
FileCopy oFile, ThisWorkbook.Path & "\" & FiName2 & ".pdf"
End If
Next oFile
答案 1 :(得分:0)
更改行
oFSO.GetBaseName(oFile) = FiName2
到
FiName2 = oFSO.GetBaseName(oFile)
编辑:
那么这是您的最终解决方案吗?
Sub Coles_claims_consolidation()
'Coles Claims Import Macro
Dim sPath As String
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim FiName2 As String
sPath = ThisWorkbook.Path & "\csv_macro\"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sPath)
For Each oFile In oFolder.Files
FiName2 = oFSO.GetBaseName(oFile)
If oFile.Name Like "*.pdf" Then
FileCopy oFile, ThisWorkbook.Path & "\" & FiName2 & ".pdf"
End If
Next oFile
Set oFile = Nothing
Set oFolder = Nothing
Set oFSO = Nothing
End Sub