• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロ実行時エラー’1004’)

エクセルマクロ実行時エラー'1004'とは?

このQ&Aのポイント
  • エクセルマクロ実行時に表示されるエラー'1004'は、For~Next構文内でシートのコピーが失敗したことを示しています。
  • このエラーが発生する原因は、コードの誤りではなく、コピー先のシートの名前が既に存在する場合や、コピー元やコピー先のシートが保護されている場合などが考えられます。
  • エラー'1004'が表示される場合は、まずコード内のシートコピー箇所を確認し、コピー先のシート名や保護状態などを適切に設定する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • pentium100
  • ベストアンサー率45% (689/1517)
回答No.3

ひょっとしてこれに該当するのかな? Excel でプログラムを使用してワークシートをコピーするとランタイム エラー 1004 が発生する http://support.microsoft.com/kb/210684/ja

Sinogi
質問者

お礼

テンプレートでの方法で無事対応できました。

Sinogi
質問者

補足

URL参考になります。 テンプレートでの方法を試してみようと思います。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 コードとしては、失礼ですが、動的配列を使いながら、2バイト文字変数では、ものすごくバランスが悪いです。申し訳ないのですが、私には、修正とかいうレベルではないです。2バイト文字の変数のオンパレードはミスの元です。動的配列を使いたい気持ちは分からないわけではないけれども、そのためには、もう少し、初歩的な技術の蓄積が必要ではないでしょうか。 もともと、そのコードでは動くわけないのでしょうから、掲示板に載せるために、相当に省いているのか加工しているのだと思います。 Sheets("評価シート").Copy after:=Sheets("評価シート") "" のクォーテーションは、どうなっているのでしょうか? ActiveSheet.Name = 氏名(回数) これも、実にエラーが発生しやすいです。 それから、 For i = Rng.Rows.Count To 1 Step -1 左から順に入れていくなら、このように逆にしたほうがよいのではないでしょうか。これは一例です。 Sub EvaluationSheetMaking()   Dim Sh1 As Worksheet   Dim Sh2 As Worksheet   Dim Rng As Range   Dim i As Long      Set Sh1 = Worksheets("社員一覧")   Set Sh2 = Worksheets("評価シート")   With Sh1     Set Rng = .Range("A2", .Range("A65536").End(xlUp).Offset(, 1))   End With      For i = Rng.Rows.Count To 1 Step -1     On Error Resume Next     Sh2.Copy After:=Sh2     With ActiveSheet       .Name = Rng.Cells(i, 2).Value       .Cells(4, 5) = Rng.Cells(i, 2).Value       .Cells(4, 3) = Rng.Cells(i, 1).Value     End With     On Error GoTo 0   Next i   Set Rng = Nothing End Sub

  • pentium100
  • ベストアンサー率45% (689/1517)
回答No.2

http://oshiete1.goo.ne.jp/qa1822561.html この辺が参考になるのかなー

  • pentium100
  • ベストアンサー率45% (689/1517)
回答No.1

>   ActiveSheet.Name = 氏名(回数) のところが怪しい気がするんですが 実際はどの行でストップしてますか? コードの該当行が反転しているはずですが シート名に設定しようとしたデータ:氏名(回数)が空っぽとかではない?

Sinogi
質問者

補足

Sheets(評価シート).Copy after:=Sheets(評価シート で停止します。 何度か実行していますが同じ行数のところで失敗になります。 そうなるとワークシートから手作業でシートコピーしようとしてもできません。 一旦エクセルを終了→エクセルのみ再起動し、(シート名が重ならないよう)データを入替えて実行すれば、その前より少ない行数で失敗します。 なぜなのか見当もつきません。

関連するQ&A