2017-12-13 24 views
0

実行時エラー1004の質問が見つかりましたが、まったく適切ではありませんでした。Excel VBA:実行時エラー1004呼び出しワークブック

ワークブック(最終行)を使用すると、1004 "アプリケーション定義またはオブジェクト定義エラー"というエラーが発生します。

Dim mainWB As Workbook 
Dim mainWS As Worksheet 
Set mainWB = ActiveWorkbook 
Dim wb As Workbook 
Dim WBname As String 

For Each wb In Workbooks 
      If Left(wb.Name, 4) = "D_SO" And Len(wb.Name) > 30 Then 
       WBname = wb.Name 
       Exit For 
      End If 
Next 

mainWB.Sheets(1).Range(Cells(1, 1), Cells(1600, 300)).Value = Workbooks(WBname).Sheets(1).Range(Cells(1, 1), Cells(1600, 300)).Value 

最終行の私のワークブックのオブジェクトは、正しく動作しているようですが、名前は正しいですが。私の間違いを見つけることができますか?

答えて

2

このタイプのRange objectリファレンスを使用している場合:Range(LeftTopCell, RightBottomCell)実際に何が括弧内にあるかを気にする必要があります。

あなたの状況では、常にあなたが持っているものではないActivesheet cellsがあります。

mainWB.Sheets(1).Range(mainWB.Sheets(1).Cells(1, 1), _ 
         mainWB.Sheets(1).Cells(1600, 300)).Value = 
     Workbooks(WBname).Sheets(1).Range(Workbooks(WBname).Sheets(1).Cells(1, 1), _ 
            Workbooks(WBname).Sheets(1).Cells(1600, 300)).Value 

があなたの代わりにRange.Copyメソッドを使用して考えることができ、それは短くする:したがって、あなたはこのように細胞への完全な参照を持っている必要があります。

+0

感謝の気持ちはありませんでした! 私はRange.Copyを持っていますが、私は非アクティブシートからコピーしたいので、私の1600と300は実際には可変です(私は "A1:CZ1600"と書くことはできません)。 – Pierre44

関連する問題