Excel VBA复制和粘贴变量选择(更改工作表)到新工作簿并保存为CSV

时间:2017-12-29 19:01:23

标签: excel vba csv

除了没有粘贴之外,我几乎已经完成了这项工作。 我的问题:导出和保存功能似乎可以正常工作,因为它会创建一个新工作簿并保存,但它是空的。

我让用户选择要从中提取静态范围的工作表(变量是工作表)。每个工作表都以周编号(52个单独的工作表)和几个背景数据表命名,这些数据工作表将工作表可见名称从excel调用工作表的位置偏移4.意思表单1被称为" Labor&#34 ;,而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

1 个答案:

答案 0 :(得分:0)

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

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