- ベストアンサー
Excelのマクロ実行エラー1004の解決方法とは?
- 2007年のExcelでマクロを記述した際に実行エラー1004が発生し、「Save As メリードは失敗しました Workbookオブジェクト」というエラーメッセージが表示されます。具体的な解決方法は、ファイルの既存の有無に応じて処理を分岐させることであり、ファイルが既に存在する場合は置き換え保存を行い、存在しない場合は新規保存を行います。
- 具体的な記述方法は、以下の通りです。まず、ファイルの有無を確認し、存在する場合は置き換え保存を行います。ファイルが存在しない場合は新規保存を行います。その後、新規作成したブックを閉じます。
- このようにして、Excelのマクロ実行エラー1004を解決することができます。マクロを記述する際は、ファイルの有無を適切に処理することが重要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 xlExcel8--旧ファイル・フォーマットで保存するのは、人に渡すためでしょうか? Excel2007以上ですと、こうしたパブリック性を考慮するのでしたら、Shape(Button?) 削除したり、印刷不可にしておいて、pdf などに保存したほうが早いような気がします。もしくは、xlsx のファイル・フォーマットで保存するか、どちらかだと思います。厳密に言えば、ドキュメント検査や互換性チェックを調べる方法も加えます。 コードの趣旨は分かりましたが、未だ、肝心な部分が残っていて、その都度、小出しに情報を出されても、全文を出さない限りは、#1さんと同じようになってしまいます。もちろん、こちら側で、新たに書きなおすことは可能だとは思いますが、業務上の守秘義務とかあるでしょうから、現状で今アドバイス出来る部分というと、 >'##指定ファイル置き換え保存 > NewWkbook.SaveAs FileName:=FileName, FileFormat:=xlExcel8 '<--NG こっちの置き換え保存というのは、ありえないと思います。 「実行エラー1004」ですから、 NewWkBook.Save 'FileName等は不要 のはずです。他にも疑問点は存在しますが、とりあえず、ここまでにしておきます。
その他の回答 (1)
- kybo
- ベストアンサー率53% (349/647)
単純にNewWkbookオブジェクトに何も代入されていないからではないでしょうか? 例えば保存するのがアクティブブックだとすると以下の様な感じ NewWkbook.SaveAs FileName:=FileName, FileFormat:=xlExcel8 ↓以下に変更 Set NewWkbook = ActiveWorkbook NewWkbook.SaveAs Filename:=Filename, FileFormat:=xlExcel8
補足
ありがとうございます。代入はしているのですがエラー回避ができません。 OldWkbook.Sheets(Array(StName1)).Copy Set NewWkbook = ActiveWorkbook For Each WS In NewWkbook.Worksheets WS.Unprotect Password:="1111" '←シートに保護を解除 For wIx = 1 To NewWkbook.Sheets(1).Shapes.Count NewWkbook.Sheets(1).Shapes(1).Delete '←シート1のボタンを削除 Next NewWkbook.Sheets(1).Name = StName1 WS.Protect Password:="1111" '←シートに保護を掛ける Next WS For Each objVBCOMPO In NewWkbook.VBProject.VBComponents With objVBCOMPO.CodeModule ' コードを削除(全行) lngLines = .CountOfLines If lngLines <> 0 Then .DeleteLines 1, lngLines End With Next objVBCOMPO ' FileName = "C:\議事録\" & FileName '保存 If Dir(FileName) <> "" Then '##ファイルが既に存在する If MsgBox("既に指定のファイルが存在します。 置き換えますか?", vbOKCancel, "置き換えの確認") = vbCancel Then NewWkbook.Close saveChanges:=False '##保存せずに終了 Exit Sub End If '##指定ファイル置き換え保存 NewWkbook.SaveAs FileName:=FileName, FileFormat:=xlExcel8 Else '##ファイルを新規保存 NewWkbook.SaveAs FileName:=FileName, FileFormat:=xlExcel8 End If ' NewWkbook.Close saveChanges:=False Application.DisplayAlerts = True End Sub
補足
返事が遅れてすいません。 NewWkBook.Save 'FileName等は不要 どのように記述を変えればよいか教えてください。それとPDFに変換し保存する方法も教えていただきたいです。