Excel VBA将范围粘贴到新工作簿中

问题描述 投票:0回答:1

我遇到这个问题。我正在尝试粘贴一个范围,该范围根据用户表单中的选择而变化到新工作簿。粘贴不起作用。我得到了反馈,我需要消除活动表的使用,并命名具体的目标工作簿。如果它是一个新的工作簿,我不知道如何命名它。我也不知道如何将其保存到用户桌面。

无论如何。代码在这里失败(第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
excel vba excel-vba
1个回答
0
投票

一般来说:我会在每个可疑步骤后检查err.number。详情如下:

  1. 当文件未打开或引用的工作表不存在时,VBA会丢弃下标错误。所以我会拆分工作簿(“餐厅经理-Master.xlsx”)。工作表(wsexport)。激活到 工作簿(“餐厅经理-Master.xlsx”)。激活 工作表(wsexport).Activate
  2. 对于SaveAs,我会将所需的文件名放到变量中,看看它的外观。您可能还必须指定路径。你也可以看到错误的描述。
  3. 您可以通过几种方式找到桌面路径,例如所以: sPath = environ $(“USERPROFILE”)&“\ desktop \”

在这里查看更多信息:enter link description here

© www.soinside.com 2019 - 2024. All rights reserved.