我遇到这个问题。我正在尝试粘贴一个范围,该范围根据用户表单中的选择而变化到新工作簿。粘贴不起作用。我得到了反馈,我需要消除活动表的使用,并命名具体的目标工作簿。如果它是一个新的工作簿,我不知道如何命名它。我也不知道如何将其保存到用户桌面。
反正。代码在这里失败(第1行):
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
下面是完整的代码,因此您可以看到我正在尝试的操作 - 从userform 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
答案 0 :(得分:0)
一般情况下:我会在每个可疑步骤后检查err.number。 详情:
当文件未打开或引用的工作表不存在时,VBA会丢弃下标错误。所以我会拆分工作簿(“餐厅经理-Master.xlsx”)。工作表(wsexport)。激活
工作簿(“餐厅经理-Master.xlsx”)。激活
工作表(wsexport).Activate
对于SaveAs,我会将所需的文件名放到变量中,看看它的外观。您可能还必须指定路径。你也可以看到错误的描述。
您可以通过几种方式找到桌面路径,例如所以:
sPath = environ $(“USERPROFILE”)& “\桌面\”
在此处详细了解:enter link description here