かなり新しい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")
おそらく、ブックのファイル名またはパスが変更された可能性があります。 –
関連していませんが、 'book1'が' ThisWorkbook'の場合、 'book1'を落として既に存在する' ThisWorkbook'オブジェクト参照を使用すると、あなたのコードははるかに簡単になります。また、[選択とアクティブ化を回避する方法](https://stackoverflow.com/q/10714251/1188513)を参照してください。 ...そして、あなたはすでに 'With'ブロック内の' sheet1'への参照を持っていました... –
2つの異なるコレクション(ワークシートと非常に次の行) - '.Buttons(" Button 6 ")。テキストの割り当てを' With'ブロックに移動します。 –