
Excel2003、2007で実行した場合は正常終了するが
Excel2010で実行するとVBA終了時に強制終了します。
処理は、マクロありブックからマクロなしブックを作成するために、
新規ブックを作成しマクロありブックからシートを移動する処理です。
VBA起動は、フォームコントロールから行っています。
VBA終了時に(End Sub)後にEXCELがなぜか強制終了します。
(Microsoft Excel は動作を停止しました。のメッセージが表示される)
なお、
・フォームコントロールから実行した場合はEXCELが強制終了し、
デバックモードで実行した場合は強制終了しません。
・マクロありファイルの種類:Excel 97-2003ブック
・★★★のソースが含まれていると、Excelが強制終了します。
以下、ソース。
Sub ファイル保存()
'マクロなしファイルを作成
CreateNoMacroBook
End Sub '←ここで異常終了が発生する。
Sub CreateNoMacroBook()
Dim fname As String
Dim ns As Integer
Dim cnt As Integer
Dim i As Integer
'マクロありブックの名前を取得
fname = ActiveWorkbook.Name
'マクロありブックのシート数を取得
cnt = ActiveWorkbook.Worksheets.Count
'すべてのシートをMoveするとエラーになるのでシートを追加
Worksheets.Add After:=Worksheets(Worksheets.Count)
'新規ブック作成時のデフォルトのシート数を保管
ns = Application.SheetsInNewWorkbook
'新規ブック作成時のシート数を変更
Application.SheetsInNewWorkbook = 1
'新規ブック作成
Workbooks.Add
'新規ブック作成時のデフォルトのシート数に戻す
Application.SheetsInNewWorkbook = ns
'マクロありブックのシートを新規ブックの"Sheet1"シートの前に移動
For i = 1 To cnt
Workbooks(fname).Worksheets(1).Move Before:=Workbooks(Workbooks.Count).Worksheets("Sheet1") '★★★
Next i
'表示用に新規ブックの一枚目のシートをアクティブにする
Workbooks(Workbooks.Count).Worksheets(1).Activate
Application.DisplayAlerts = False '新規ブックのデフォルトシート"Sheet1"を削除する
Workbooks(Workbooks.Count).Worksheets("Sheet1").Delete
Workbooks(Workbooks.Count).Activate
Application.DisplayAlerts = True
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Bookには最低1つのシートが残っていないといけないので
ここでエラーになりそうな気がしますが、エラーにならないのでしょうか。
For i = 1 To cnt
Workbooks(fname).Worksheets(1).Move
Moveではなくコピーならエラーにならないはずです。
この回答への補足
ありがとうございます。コピーだとうまくいきました。
ただWorksheets.Add After:=Worksheets(Worksheets.Count)
この処理でシート追加しているので原因をその後も調査していました。
その結果、ソースは変更せずofficeをアップデートすることで解決しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 別ブックからコピペしたい...
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
VBA コードを実行すると画面が...
-
ワイルドカード「*」を使うとう...
-
オブジェクトは、このプロパテ...
-
Excelマクロ 該当する値の行番...
-
エクセルVBAが途中で止まります
-
ExcelVBA:すでに開かれている...
-
[Excel]ADODBでNull変換されて...
-
【Excel VBA】書き込み先ブック...
-
VBAで別のブックにシートをコピ...
-
VBSでExcelのオープン確認
-
VBA シート名が一致した場合の...
-
VBA 実行時エラー 2147024893
-
VBAで別ブックのシートを指定し...
-
ADOで複数のBookから抽出
-
vbaで他のブックに転記したい。...
-
【VBA】全シートの計算式を全て...
-
転記先VBA 一致しているセルが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のエクセルファイルとシー...
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
VBA 別ブックからコピペしたい...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBAで別のブックにシートをコピ...
-
VBA コードを実行すると画面が...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
【Excel VBA】書き込み先ブック...
-
2つ目のコンボボックスが動作...
-
[Excel]ADODBでNull変換されて...
-
Excelマクロ 該当する値の行番...
-
VBA 実行時エラー 2147024893
-
Excelのマクロコードについて教...
-
Excel にて、 リストボックスの...
-
【ExcelVBA】インデックスが有...
-
VBA アプリケーション定義また...
-
【Excel VBA】表の列の値毎に分...
おすすめ情報