【问题标题】:Excel VBA Pasting a Range into New WorkbookExcel VBA将范围粘贴到新工作簿中
【发布时间】: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 失败时的值是多少?
  • 也许尝试先激活工作簿,然后在该工作簿中的单独一行中激活工作表

标签: vba excel


【解决方案1】:

通常:我会在每个可疑步骤后检查 err.number。 详情:

  1. 当文件未打开或引用的工作表不存在时,VBA 丢弃下标错误。所以我会将 Workbooks("Restaurant Manager -Master.xlsx").Worksheets(wsexport).Activate 拆分为

    Workbooks("餐厅经理 -Master.xlsx").Activate

    工作表(wsexport).Activate

  2. 对于 SaveAs,我会将所需的文件名放入一个变量中,然后查看它的外观。您可能也必须指定路径。你也可以看到 err.description。

  3. 您可以通过几种方式找到桌面的路径,例如所以:

    sPath=environ$("USERPROFILE") & "\desktop\"

在此处查看更多信息:enter link description here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多