2017-08-16 20 views
1

かなり新しいvbaですが、列内の行を解消するコードを作成して、このようにしてセルをコピーし、別のマクロブックに貼り付けます。私が最初にそれを実行したとき、コードはうまくいった。しかし、私は今日それを使用しようとしたと私はエラーがあったショックを受けた。このエラーは、宛先ファイル名が見つかりませんでした。宛先ファイル名が変更されたり移動されたりしていないために奇妙でした。ここにコードのサンプルがあります。Excel VBA-ランタイムエラー1004ブックを開く

エラーが線で示す:

セットBOOK2 = Workbooks.Open( "年度'17報告ストラドル燃料 Usage.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") 
+3

おそらく、ブックのファイル名またはパスが変更された可能性があります。 –

+0

関連していませんが、 'book1'が' ThisWorkbook'の場合、 'book1'を落として既に存在する' ThisWorkbook'オブジェクト参照を使用すると、あなたのコードははるかに簡単になります。また、[選択とアクティブ化を回避する方法](https://stackoverflow.com/q/10714251/1188513)を参照してください。 ...そして、あなたはすでに 'With'ブロック内の' sheet1'への参照を持っていました... –

+0

2つの異なるコレクション(ワークシートと非常に次の行) - '.Buttons(" Button 6 ")。テキストの割り当てを' With'ブロックに移動します。 –

答えて

2

宛先ファイル名が変更されたり移動したりしなかった

パスを指定していません。パスを指定します。ファイル名:CurDirパスであり、ユーザが「ファイルを開く」ダイアログが表示され、彼らは周りの閲覧を開始するたびにCurDirの値が変化するものは何でもオフ

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作品完全な経路なしでは信頼できません。

VBAの多くのものと同様に、明示的にすることをお勧めします。完全な道を与えてください。

+0

私はこれまでに書いたことのない最初のコードではかなり新しいです。しかし、これはあなたに感謝します。私がペーストしているときは、ファイル名の代わりに "パス"も使用してください。 –

+0

@ShellyPig素晴らしい。次の作業がわからない場合は、[このヘルプセンターのページ](https://stackoverflow.com/help/accepted-answer)を参照してください。 –

+0

編集したコメントを見たかどうかわからない場合は –

関連する問題