【发布时间】:2017-12-29 20:38:28
【问题描述】:
我在这方面遇到了一些麻烦。我正在尝试将一个范围粘贴到一个新工作簿中,该范围根据用户表单的选择而有所不同。粘贴不起作用。我收到反馈说我需要取消使用 activesheet,并命名特定的目标工作簿。如果是新工作簿,我不知道如何命名。我也不知道如何将它保存到用户桌面。
无论如何。代码在这里失败(第一行):
Workbooks("Restaurant Manager -Master.xlsx").Worksheets(wsexport).Activate
Workbooks("Restaurant Manager -Master.xlsx").Worksheets(wsexport).Unprotect
Workbooks("Restaurant Manager -Master.xlsx").Worksheets(wsexport).Range("BA6::BT200").Copy
下面是完整的代码,您可以看到我正在尝试执行的操作 - 从用户表单 cboExportInvoiceWeek 传递工作表名称变量。理想情况下,用户单击一个按钮并创建一个新的 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
Workbooks("Restaurant Manager -Master.xlsx").Worksheets(wsexport).Activate
Workbooks("Restaurant Manager -Master.xlsx").Worksheets(wsexport).Unprotect
Workbooks("Restaurant Manager -Master.xlsx").Worksheets(wsexport).Range("BA6::BT200").Copy
Set NewBook = Workbooks.Add
NewBook.Worksheets("Sheet1").Range("A1").PasteSpecial (xlPasteValues)
NewBook.SaveAs Filename:=NewBook.Worksheets("Sheet1").Range("E3").Value
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Application.CutCopyMode = False
Workbooks(CurrentFileName).Activate
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
将 Option Explicit 放在代码的顶部,您是否收到任何错误消息?并且您的 DISplayAlerts 代码原样没有做任何事情。
-
下标超出范围。
-
我在显示警报之间划出一条线来关闭活动工作簿。我已经把它全部拿出来了。
-
wsexport 失败时的值是多少?
-
也许尝试先激活工作簿,然后在该工作簿中的单独一行中激活工作表