2017-08-18 13 views
0

マクロブックが新しいブックに書き込まれたブックからデータをコピーし、シートの名前を変更しようとしています。コードは2013年に正常に動作しますが、同じコードがWindows 10の2016にエラーをスローします。このワークブックに変更すると、Excel 2016 VBAアクティブワークブックのアクションはアクティブワークブックでは実行されません

Below is the sample code (made changes) 

Sub test() 
Range("a" & Rows.Count).End(xlUp).Offset(1, 0) = "This workbook" 
Application.ScreenUpdating = False 
Set newwb = Workbooks.Add 
Worksheets.Add 
Worksheets.Add 
For i = 0 To 50 

newwb.Activate 
Range("a" & Rows.Count).End(xlUp).Offset(1, 0) = "activeworkbook workbook" 
ActiveWorkbook.Sheets(1).Name = "test" 
newwb.Activate '--> I don't need to add this code but just to check if it works and still the same issue. 
ActiveWorkbook.Sheets(2).Name = "test2" 
ActiveWorkbook.Sheets(3).Name = "test3" 
ThisWorkbook.Activate 
Range("a" & Rows.Count).End(xlUp).Offset(1, 0) = "This workbook" 
Next 

End Sub 
Can you say why it is throwing the error? 
Code works perfectly fine in windows 7 excel 2013 but same code throws error in 2016. 

It would be great if anyone can help me with this issue. 
+1

どのようなエラーがありますか?また、 'ActiveWorkbook'の使用を避けることをお勧めします。代わりに 'newwb'を使いましょう。あなたはすでにリファレンスを持っていますので、アクションを完了するためにブックをアクティブにする必要はありません。 – CynicalSection

+0

これはthiswrokbookを参照しているので、すでに使用されているシート名が記載されています。シート名を変更しようとしたとき、それは能動的なワークブックの代わりにこのワークブックを参照しています。なぜこれが起こるのか分かりませんが、2013年にはうまくいきます。 – IC123456

答えて

0

ActiveWorkbookは直接参照しないでください。また、使用する前にDim変数を使用する必要があります。

Sub test() 
    On Error GoTo ExitSub 
    Application.ScreenUpdating = False 

    Dim newwb As Workbook: Set newwb = Workbooks.Add 
    newwb.Worksheets.Add 
    newwb.Worksheets.Add 

    Dim i As Long 

    ThisWorkbook.Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = "This workbook" 

    With newwb 
     For i = 0 To 50 
      .Range("a" & Rows.Count).End(xlUp).Offset(1, 0) = "activeworkbook workbook" 
      .Sheets(1).Name = "test" 
      .Sheets(2).Name = "test2" 
      .Sheets(3).Name = "test3" 
      ThisWorkbook.Range("a" & Rows.Count).End(xlUp).Offset(1, 0) = "This workbook" 
     Next i 
    End With 

ExitSub: 
    Application.ScreenUpdating = True 
End Sub 
+0

こんにちはFlephal、ありがとうございます。私が提供したコードは、2013年のサンプルですが、2016年のサンプルではありません。アクティブワークブックは2013年にはうまくいくが、2016年にはうまくいかない。 – IC123456

関連する問題