
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を探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ブックをダイアログボックス...
-
VBA 別ブックからコピペしたい...
-
VBAで別ブックのシートを指定し...
-
【マクロ】違うフォルダにある...
-
2つ目のコンボボックスが動作...
-
VBSでExcelのオープン確認
-
VBA コードを実行すると画面が...
-
エクセルアンケート集計 マクロ
-
[Excel]ADODBでNull変換されて...
-
ワイルドカード「*」を使うとう...
-
【Excel VBA】書き込み先ブック...
-
異なるブック間でのセル範囲の...
-
VBA シートをコピーする際に Co...
-
【ExcelVBA】zip圧縮されたCSV...
-
vbaでvbaProjectのパスワード解...
-
複数のエクセルブックをひとつ...
-
Excelマクロ 該当する値の行番...
-
Dir関数で複数ブックへ行いたい...
-
【ExcelVBA】インデックスが有...
-
ACCESSでExcelにデータ出力、高...
マンスリーランキングこのカテゴリの人気マンスリー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】表の列の値毎に分...
おすすめ情報