Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3106 / 13646 ツリー ←次へ | 前へ→

【64224】元シートを大量にコピーして挿入 Lee 10/1/27(水) 9:02 質問[未読]
【64226】Re:元シートを大量にコピーして挿入 seg 10/1/27(水) 9:39 発言[未読]
【64228】Re:元シートを大量にコピーして挿入 Abebobo 10/1/27(水) 10:24 発言[未読]
【64237】Re:元シートを大量にコピーして挿入 UO3 10/1/27(水) 12:35 回答[未読]
【64239】【追伸です】元シートを大量にコピーして挿... UO3 10/1/27(水) 12:40 発言[未読]
【64247】Re:元シートを大量にコピーして挿入 Lee 10/1/27(水) 17:18 質問[未読]
【64248】Re:元シートを大量にコピーして挿入 YU-TANG 10/1/27(水) 17:56 発言[未読]

【64224】元シートを大量にコピーして挿入
質問  Lee  - 10/1/27(水) 9:02 -

引用なし
パスワード
   いつも参考にさせていただいております。

同じブックに元になるシートを45シートコピーして挿入する。
と言う作業をしたくて
下記VBAを記述しましたが、

41枚目までコピー挿入した時点(元シートを含むと同じ内容のシートが43枚となります)で
デバックが発生します。
お知恵をお貸し下さい。

Sub ステップ1()
'
' グラフシートコピー Macro
'
   
  Dim myCnt As Long
  For myCnt = 1 To 45
  
    If myCnt = 45 Then Exit For
    
   Set mySheet = ActiveWorkbook.Worksheets("1")
   
      mySheet.Select
      
     mySheet.Copy Before:=Worksheets("1")
     
    
      If myCnt Mod 10 = 0 Then
      
        ActiveWorkbook.Save
      
      End If
      
   DoEvents

  Next myCnt

    Set mySheet = Nothing

End Sub

【64226】Re:元シートを大量にコピーして挿入
発言  seg  - 10/1/27(水) 9:39 -

引用なし
パスワード
   ▼Lee さん:
上げて頂いたコードを、そのまま使い
実行してみましたが、45枚ちゃんとコピーされましたよ?

同じ動作のコード
Sub ステップ1()

  Dim myCnt As Long

  Application.ScreenUpdating = False
  
  For myCnt = 1 To 44

    ActiveWorkbook.Worksheets("1").Copy Before:=Worksheets("1")
    
    DoEvents
  Next

  Application.ScreenUpdating = True
End Sub

【64228】Re:元シートを大量にコピーして挿入
発言  Abebobo  - 10/1/27(水) 10:24 -

引用なし
パスワード
   おはようございます。

>' グラフシートコピー Macro

う〜ん。どんなグラフか解かりませんが、
オートシェイプがいっぱい有るシートを
どんどんコピーしていると、PCが固まったことがありました。

手作業でそのシートをひとつのブックに43枚作る事は出来ますか?

【64237】Re:元シートを大量にコピーして挿入
回答  UO3  - 10/1/27(水) 12:35 -

引用なし
パスワード
   ▼Lee さん:

segさんとおなじく、コピペしてやってみましたが正常終了。
ただ、こちらのテストでは元のシートそのものが軽いものですので
重いグラフがあるシートだと障害になるのかもですね。

で、気休めでしょうが、Leeさんのコードから不要なものを
カットしてみました。
それと、For Nextの中で45かと聞いておられますが?
聞かなくても45回実行したら抜けます。
さらに45で抜けると結果は44枚のコピー。もし44枚のコピーが
正しければ 1 To 44 としてください。

Sub ステップ1()
'
' グラフシートコピー Macro
'
Dim mySHeet As Worksheet
Dim myCnt As Long

  Set mySHeet = ActiveWorkbook.Worksheets("1")
  
  For myCnt = 1 To 45
     mySHeet.Copy Before:=mySHeet
     If myCnt Mod 10 = 0 Then
   
      ActiveWorkbook.Save
   
     End If
   
     DoEvents

  Next myCnt

  Set mySHeet = Nothing

End Sub

【64239】【追伸です】元シートを大量にコピーして...
発言  UO3  - 10/1/27(水) 12:40 -

引用なし
パスワード
   LoopのなかにDoEventsをいれておられますね。
何か、必要性があって、そうされているのでしょうけど、
このシートコピーロジックのみであれば、なくても
正常に動きますよ。

【64247】Re:元シートを大量にコピーして挿入
質問  Lee  - 10/1/27(水) 17:18 -

引用なし
パスワード
   ▼UO3 さん:

ありがとうございます。

元シートにはグラフが5つあります。
(手でコピーして挿入では45枚以上のシートを挿入することが可能なBookです)

きれいに修正していただいたVBAでまわしてみましたが、

もともとのVBAをまわした時と同様に

実行時エラー'1004'
'Copy'メゾットは失敗しました'Worksheet'オブジェクト

で正常終了できませんでした・・・

再度ご指南お願いいたします。

【64248】Re:元シートを大量にコピーして挿入
発言  YU-TANG  - 10/1/27(水) 17:56 -

引用なし
パスワード
   ▼Lee さん:
>実行時エラー'1004'
>'Copy'メゾットは失敗しました'Worksheet'オブジェクト

Excel でプログラムを使用してワークシートをコピーするとランタイム エラー 1004 が発生する
h tp://support.microsoft.com/kb/210684/ja

3106 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free