2017-08-16 159 views
1

vba相當新穎,但我寫了一個代碼,可以在列中取消合併,然後複製單元格,然後粘貼到不同的宏工作簿中。當我第一次運行代碼時,代碼運行良好。不過,我今天試圖使用它,我很震驚,我有一個錯誤。此錯誤指出它無法找到目標文件名。這很奇怪,因爲目標文件名沒有改變或移動。這裏是一個代碼示例。Excel VBA-運行時錯誤1004打開工作簿

誤差示出了在線路:

設置第二冊= Workbooks.Open( 「報道跨式燃料 Usage.xlsm財政'17」)

的代碼如下:

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") 
+3

很可能您的工作簿文件名或路徑發生了變化。 –

+0

不相關,但如果'book1'是'ThisWorkbook',那麼如果您放棄了'book1'並使用了現有的'ThisWorkbook'對象引用,那麼您的代碼將更容易遵循。另請參閱[如何避免選擇和激活](https://stackoverflow.com/q/10714251/1188513)。 ...然後,你已經在'With'塊中引用了'sheet1' ... –

+0

讓我困惑的是爲什麼你從2個不同的集合('Worksheets',然後'Sheets'非常接下來的一行) - 將'.Buttons(「Button 6」)。Text'賦值到'With'塊中。 –

回答

2

目標文件名沒有變化或移動

您沒有指定路徑。指定一個路徑。

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) 

Workbooks.Open工作過無論CurDir路徑,而每當用戶呈現一個「打開文件」對話框CurDir的值發生變化,他們開始瀏覽周圍:文件名沒有完整的路徑是不可靠的。

與許多人一樣,在VBA中很多東西,最好是明確的。給它一個完整的路徑。

+0

我很新,這是我寫過的第一個代碼。但這很有道理,謝謝。當我粘貼時,我應該使用「路徑」,而不是文件名 –

+0

@ShellyPig真棒。如果您不確定接下來要做什麼,請參閱[本幫助中心頁面](https://stackoverflow.com/help/accepted-answer)。 –

+0

不確定你是否看到我的編輯評論 –