【问题标题】:Copy from one workbook to another workbook从一个工作簿复制到另一个工作簿
【发布时间】:2021-01-18 13:54:48
【问题描述】:

子 create_files_add_data(get_input)

lastrow1 = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row 'This is to get a count of rows in the source file.

' Sheet2.Range("A1:K1").Copy ' 这个标题行的副本有效。但是for循环中的数据行的副本不起作用!!!

Dim target_workbook As Workbook
Dim target_worksheet As Worksheet
Set target_workbook = Workbooks.Add
Set target_worksheet = target_workbook.Worksheets("Sheet1")

       For r = 2 To lastrow1 ' This is where we use the row count to loop through all the rows to check the deptid and copy the rows
            
            If Worksheets("Sheet1").Range("B" & r).Value = get_input Then
            
               Worksheets("Sheet1").Rows(r).Copy
                 
                       ' lastrow2 = target_worksheet("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
                                  
                       ' target_worksheet("Sheet1").Range("A" & lastrow2 + 1).Select
              
               target_worksheet.PasteSpecial xlPasteValues ' pasting here into the target workbook (but doesn't work!!!)
               
               'ActiveCell.PasteSpecial xlPasteValues
                       
            End If
            
        Next r
        
 With target_workbook
    .SaveAs filename:="C:\Users\" & get_input & ".xlsx"
     target_workbook.Close
 End With

结束子

【问题讨论】:

  • 从设置的工作簿中删除 .Sheets,您在下一行分配工作表。
  • 谢谢,但这没有帮助。仍然给我同样的错误。
  • 那么字符串可能不正确

标签: excel vba


【解决方案1】:

如果工作簿已经打开,您可以从 workbooks-collection 按名称访问工作簿,但没有路径。

target_file = get_input & ".xlsx"
Set target_workbook = Workbooks(target_file)

如果要打开工作簿,需要使用Open-方法并指定完整路径:

target_file = "C:\Users\" & bu_to_process & "\" & get_input & ".xlsx"
Set target_workbook = Workbooks.Open(target_file)

要创建一个全新的工作簿,请使用Add-方法创建它并使用SaveAs-方法保存:

target_file = "C:\Users\" & bu_to_process & "\" & get_input & ".xlsx"
Set target_workbook = Workbooks.Add
' (do your work here)
' ...
target_workbook.SaveAs target_workbook, xlOpenXMLWorkbook

您也可以将其另存为 CSV,但文件扩展名应反映文件类型:

target_file = "C:\Users\" & bu_to_process & "\" & get_input & ".csv"
target_workbook.SaveAs target_workbook, xlCSV

【讨论】:

  • 谢谢。现在,如果您能说明为什么会发生这种情况,我会在下面给出: 运行时错误“1004” Excel 无法打开文件“xxx.xlsx”,因为文件格式或文件扩展名无效。验证文件没有损坏,并且文件扩展名与文件格式匹配。
  • 我看到您首先创建了一个空文本文件 - 我想这就是问题所在。您不能将空文本文件作为 Excel 文件打开。相反,创建一个新工作簿并使用正确的名称保存它。我更新了我的答案
  • 谢谢,如果成功了会在这里更新。
  • FunThomas - 感谢您的意见。我克服了错误。现在,这些行没有从我的源文件复制到新创建的文件中。只有标题行正在复制。你能检查一下我哪里出错了吗?我已经更新了新代码。非常感谢。
  • 只是想提供一个更新,该副本可以复制到辅助工作簿。我使用了错误的变量,它没有调用副本。感谢您的投入和您的时间。
猜你喜欢
  • 1970-01-01
  • 2013-10-21
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多