如何通过文件夹进行宏循环并将数据从一个 Excel 工作簿复制到另一个并另存为新名称?

什梅尔基

我有一个名为 !PaymentTemplate.xlsx 的文件和一个包含许多文件的名为“Output”的文件夹。我想遍历 Output 文件夹中的每个文件并将数据复制到 !PaymentTemplate.xlsx 文件中,然后保存该模板文件。我不想附加数据,只需复制并粘贴它,然后将该文件另存为新名称,然后从原始 !PaymentTemplate.xlsx 文件重新开始。示例:输出文件夹中名为“Sunrise.xlsx”的文件,宏应该打开它,将数据复制到 !PaymentTemplate.xlsx 并另存为 Sunrise_New.xlsx。然后转到下一个文件并在 !PaymentTemplate.xlsx 文件中执行相同的操作。

如果我在输出目录中有 10 个文件,那么应该有 10 个新文件以“_New”作为文件名的一部分。

下面是我编写的一个宏,但无法将 fileName 变量作为另存为导出的一部分并对其进行测试。

Sub Energy_Template()

'Loop through all files in a folder
Dim fileName As Variant
fileName = Dir("C:\Dan\Energy Commission\raw data\TEmplate for Upload\Output\")

While fileName <> ""
    Workbooks.Open fileName:= _
        "C:\Dan\Energy Commission\raw data\TEmplate for Upload\!PaymentTemplate.xlsx"
    Workbooks.Open fileName
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("!PaymentTemplate.xlsx").Activate
    Range("A3").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ChDir "C:\Dan\Energy Commission\raw data\TEmplate for Upload\new ouput"
    ActiveWorkbook.SaveAs fileName:= _
        "C:\Dan\Energy Commission\raw data\TEmplate for Upload\new ouput\Sunrise_New.xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
    ActiveWindow.Close
    
    'Set the fileName to the next file
    fileName = Dir
Wend

End Sub

谢谢!

雷蒙德·吴

试试这个代码:

Sub Energy_Template()        
    Const outputFolderPath As String = "C:\Dan\Energy Commission\raw data\TEmplate for Upload\Output"
    Const templateFilePath As String = "C:\Dan\Energy Commission\raw data\TEmplate for Upload\!PaymentTemplate.xlsx"
    
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    Dim loopFile As Object
    For Each loopFile In FSO.GetFolder(outputFolderPath).Files
        If FSO.GetExtensionName(loopFile.Name) = "xlsx" And Left$(loopFile.Name, 2) <> "~$" Then
            Dim outputWB As Workbook
            Set outputWB = Application.Workbooks.Open(loopFile.Path)
            
            Dim templateWB As Workbook
            Set templateWB = Application.Workbooks.Open(templateFilePath)
            
            Dim copyRng As Range
            Dim copyLastRow As Long
            copyLastRow = outputWB.Worksheets(1).Range("A2").End(xlDown).Row
            Set copyRng = outputWB.Worksheets(1).Range("A2:A" & copyLastRow).EntireRow
            copyRng.Copy
            templateWB.Worksheets(1).Range("3:3").Insert xlShiftDown
            
            Dim saveName As String
            saveName = Replace(outputWB.Name, ".", "_New.")
            Application.DisplayAlerts = False
            templateWB.SaveAs outputFolderPath & "\" & saveName
            
            templateWB.Close
            Set templateWB = Nothing
            
            outputWB.Close 0
            Set outputWB = Nothing
            Application.DisplayAlerts = True
        End If
    Next loopFile
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将Excel工作表复制到Python中的另一个工作簿

如何将Excel配色方案从一个工作簿复制到另一个工作簿

excel VB将单元格从工作表复制到另一个

我如何在excel中将范围从一个工作簿复制到另一个工作簿而不必在VBA中命名呢?

将数据从Excel工作簿复制到另一个工作簿,需要选择特定的行和列

Excel Interop:如何将工作表复制到另一个工作簿?

Excel VBA:将“形状”(图片)复制到另一个工作簿会使图片另存为JPEG而不是PNG

如何在Python中读取,编辑和另存为另一个excel文件?

Excel VBA通过循环将匹配信息从一个工作表复制到另一个工作表

将数据从许多Excel工作簿复制到另一个Excel工作簿

将整个工作表从一个Excel实例复制到另一个

excel-如何将所有工作表从一个工作簿复制到另一个工作簿

在Excel VBA中命名对象,以便将其复制到另一个工作表/工作簿后就可以选择它

不复制到A列时无法将数据从一个Excel工作表复制到另一个工作表

Excel 2013将工作表复制到另一个工作簿时创建外部链接

如何在Excel VBA中将所有单元格颜色从一个工作簿复制到另一工作簿?

将数据从一个Excel复制到另一个Excel

打开一个文件夹中的所有dbf文件,并将其另存为excel到另一个文件夹中

将两列从一个Excel工作表复制到另一个

查找并将单个列从一个Excel复制到另一个

将行从1个Excel工作表复制到另一个

需要根据第一库仑值将数据范围从一个Excel工作表复制到另一个工作表

excel 将形状从一个工作表复制到另一个工作表

从一个工作簿到另一个工作簿的 Excel 宏数据传输

将数据从一个 Excel 工作簿复制到另一个同时保留格式

如何使用c#将特定范围内的单元格从一个excel工作簿复制到另一个工作簿

如何将一个文件夹中的多个 Excel 工作簿中除工作表 1 和工作表 2 之外的所有工作表复制到另一个工作簿中

如何使用 Python 将数据从一个 Excel 工作表复制到同一工作簿的另一个工作表?

Excel VBA 复制到另一个工作表时跳过空白