
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
改行文字「vbCrLf」とは
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【VBA】値を変更しながら連続で...
-
VBAの「To」という語句について
-
算術演算子「¥」の意味について
-
以下のプログラムの実行結果は...
-
VB.net 文字列から日付型へ変更...
-
[Excel VBA]特定の条件で文字を...
-
VBA ユーザーフォーム ボタンク...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
複数のExcelファイルをマージす...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
VBA 入力箇所指定方法
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでセルの書式を変えずに文字...
-
vb.net(vs2022)のtextboxのデザ...
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
おすすめ情報