Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-打开工作簿时出现运行时错误1004_Vba_Excel_Runtime Error_Filenames - Fatal编程技术网

Excel VBA-打开工作簿时出现运行时错误1004

Excel VBA-打开工作簿时出现运行时错误1004,vba,excel,runtime-error,filenames,Vba,Excel,Runtime Error,Filenames,对vba来说很陌生,但我编写了一段代码,该代码取消列中的行合并,从而复制单元格,然后粘贴到不同的宏工作簿中。当我第一次运行代码时,它运行得很好。然而,我今天试图使用它,我很震惊我有一个错误。此错误表示找不到目标文件名。这很奇怪,因为目标文件名没有更改或移动。下面是一个代码示例 错误显示在第行: Set book2=工作簿。打开(“2017财年”报告的跨座燃油 用法“.xlsm”) 代码如下: Public Sub Button6_Click() 'Change name of bu

对vba来说很陌生,但我编写了一段代码,该代码取消列中的行合并,从而复制单元格,然后粘贴到不同的宏工作簿中。当我第一次运行代码时,它运行得很好。然而,我今天试图使用它,我很震惊我有一个错误。此错误表示找不到目标文件名。这很奇怪,因为目标文件名没有更改或移动。下面是一个代码示例

错误显示在第行:

Set book2=工作簿。打开(“2017财年”报告的跨座燃油 用法“.xlsm”)

代码如下:

Public Sub Button6_Click()
       'Change name of button

       Worksheets("7500").Buttons("Button 6").Text = "Send"
       With Sheets("7500")

       'Unmerge cells
       .Range("AI3:AI92").Select
       With Selection
        For Each rCell In Selection
         With rCell
         If .MergeCells Then
          .MergeArea.UnMerge
         End If
        End With
       Next rCell
       End With
      End With

      'open destination workbook

       Dim book1 As Workbook
       Dim sheet1 As Worksheet
       Dim book2 As Workbook
       Dim sheet2 As Worksheet
       Application.ScreenUpdating = False
       Set book1 = ThisWorkbook
       Set book2 = Workbooks.Open("Fiscal '17 Reported Straddle Fuel Usage.xlsm")
       Set sheet1 = book1.Sheets("7500")
       Set sheet2 = book2.Sheets("Nov ‘17")
目标文件名未更改或移动

您没有指定路径。指定路径

无论
CurDir
路径是什么,
Workbooks.Open
都可以关闭,
CurDir
的值在用户看到“打开文件”对话框并开始四处浏览时发生变化:没有完整路径的文件名是不可靠的


与VBA中的许多事情一样,最好明确地说明它。给它一个完整路径。

您的工作簿文件名或路径很可能已更改。不相关,但如果
book1
thiswoolk
,如果您删除
book1
并使用已有的
thiswoolk
对象引用,代码将更容易理解。还有,请看。。。然后,您已经在该
块中引用了
sheet1
块…让我困惑的是,为什么您从两个不同的集合中访问同一个工作表(
工作表
,然后在下一行
工作表
)-移动
按钮(“按钮6”).Text
赋值到带有
块的
中。同时,
Public
的事件处理程序也会引发一个标志。而且压痕也低于标准。我建议您看看如何帮助您改进代码。我对这是我实际编写的第一个代码非常陌生。但这是有道理的,谢谢你。粘贴时是否也应使用“路径”而不是文件name@ShellyPig令人惊叹的。看看你是否不确定下一步要做什么。没有,但如果你不确定发生了什么,你需要阅读有关在VBA中使用变量和常量的内容。谢谢它起作用了,我不知道为什么事件处理程序是公共的。它甚至不在我的原始代码上。但是再次感谢你的帮助。
Set book2 = Workbooks.Open("Fiscal '17 Reported Straddle Fuel Usage.xlsm")
Const path As String = "C:\Foo\Bar\Fiscal '17 Reported Straddle Fuel Usage.xlsm"
Set book2 = Workbooks.Open(path)