【问题标题】:Error when opening workbook by using VBA使用 VBA 打开工作簿时出错
【发布时间】:2014-12-12 07:16:26
【问题描述】:

我尝试了几种方法在一个工作簿中打开一个单独的工作簿,但总是收到错误消息 Application-defined or object-defined 错误,以下是我的代码:

Sub PrepaidImport()
Dim x As Workbook, y As Workbook, vals As Variant, MyFile1 As String, MyFile2 As String
MyFile1 = Application.GetOpenFilename()
Set x = Workbooks.Open(MyFile1)
End Sub

以下代码也会出现同样的错误:

Sub PrepaidImport()
Dim x As Workbook, y As Workbook, vals As Variant, MyFile1 As String, MyFile2 As String
Set x = Workbooks.Open("M:\Company\2014\YTD 2014 Prepaid Assets.xlsx")
End Sub

以下代码出现差异错误,因为我正在尝试打开二进制工作簿:

Sub PrepaidImport()
Dim y as Workbook
Set y = Workbooks.Open("Y:\Branch\Prepaid Assets Amortization Import Template.xlsb")
End Sub

这是我的全部代码:

Sub PrepaidImport()
Dim x As Workbook, y As Workbook, vals As Variant, MyFile1 As String, MyFile2 As String

Set x = Workbooks.Open("M:\Company\2014\YTD 2014 Prepaid Assets.xlsx")
Set y = Workbooks.Open("Y:\Branch\Prepaid Assets Amortization Import Template.xlsb")

vals = x.Worksheets("11.2014").Range("A6", "A" &x.Worksheets("11.2014").Range("A6").End(xlDown)).Value
Set y.Worksheets("Journal_Details").Range("Y1").Value = vals

x.Close

End Sub

文件已打开,但弹出错误消息,使我无法运行后续代码。我在 Excel 2007 上。

请帮忙!

【问题讨论】:

  • 如果“文件已打开”,错误出现在哪一行?
  • 文件打开后立即弹出消息,并在我的第一个示例中停在 set x= Workboks.Open(MyFile1)
  • 是从某处调用PrepaidImport(),和/或后续代码试图做什么?你有从activeworkbook 运行的代码吗?
  • 我刚刚测试了filePath = Worksheets("Sheet1").Range("A1").Value: Set wkb = Workbooks.Open(filePath),当调用代码的workbookactive时它可以工作,但是当它不是active时得到1004错误
  • 不,PrepaidImport() 完全独立于空白的 excel 电子表格,随后的代码试图将范围从一个电子表格复制到另一个打开的电子表格,我正在从这个空白活动中运行代码工作簿

标签: vba excel


【解决方案1】:

问题出在倒数第二行,你不应该在赋值行前面有“set”语句,即它应该只是

y.Worksheets("Journal_Details").Range("Y1").Value = vals

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2023-04-01
    相关资源
    最近更新 更多