【问题标题】:Excel VBA Copy and Pasting Variable Selection (changing worksheets) to a new Workbook and saving as CSVExcel VBA 复制和粘贴变量选择(更改工作表)到新工作簿并保存为 CSV
【发布时间】:2018-06-10 03:58:07
【问题描述】:

我几乎完成了这项工作,只是没有粘贴任何内容。 我的问题:导出和保存功能似乎可以工作,因为它会创建一个新工作簿并保存,但它是空的。

我让用户选择他们想要从中提取静态范围的工作表(变量是工作表)。每张工作表由周数(52 个单独的工作表)加上几个背景数据表命名,这将工作表可见名称与 excel 所称的工作表偏移 4。这意味着 sheet1 被称为“劳动”,而 sheet5 被称为“1 " - 一年的第一周。

无论如何,该变量是由用户通过 lstExportInvoiceWeek 组合框传递的。从该选择中,我想复制一个静态范围 (BA6:BT200),然后将其粘贴到 csv 文件中。

这是我的代码。 粘贴无效。 新工作簿保存为空白。

Private Sub cmbInvoicesExport_Click()

Application.ScreenUpdating = False

Dim CurrentFileName As String
CurrentFileName = ActiveWorkbook.Name
Debug.Print "Active File: " + CurrentFileName


Dim wsexport As String
wsexport = cboExportInvoiceWeek.Value
Worksheets(wsexport).Activate
Worksheets(wsexport).Unprotect

Range("BA6:BT200").Copy

Workbooks.Add Template:="Workbook"

Range("A1").Select

ActiveSheet.Paste

Dim file_name As Variant
file_name = Application.GetSaveAsFilename(FileFilter:="CSV (Comma delimited) (*.csv), *.csv")

If file_name <> False Then
    ActiveWorkbook.SaveAs Filename:=file_name
    MsgBox "File Saved!"
End If

Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
Application.CutCopyMode = False
Workbooks(CurrentFileName).Activate
Application.ScreenUpdating = True
End Sub

【问题讨论】:

    标签: excel vba csv


    【解决方案1】:

    避免使用ActiveSheet,而是使用Workbooks("YourWorkbook.xls").Worksheets("Sheet1").Activate

    您需要引用 Workbook 目标来粘贴数据。

    【讨论】:

    • 同意在使用多个工作簿或工作表时将它们分配给变量并在代码中明确命名。通过这种方式,您始终知道您将操作引用到哪个工作簿工作表。
    • 谢谢。我想我想具体了解我应该编辑的内容。在代码中,粘贴时我还不知道新工作簿的名称,那么如何在不知道的情况下引用它?
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多