質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

マクロ実行後のファイルがエラーと出て保存できない

bis_don
bis_don

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

1回答

0グッド

0クリップ

246閲覧

投稿2022/12/05 03:44

前提

システムが吐き出すxlsxファイル内容が見づらいので、マクロを使って整えようとしています。
動作自体は思い通りに完了するのですが、以下のアラートが出て保存出来ず、理由がわからずに悩んでおります。

’ファイル名’の保存中にエラーが検出されました。 いくつかの機能を削除または修復することにより、ファイルを保存できる場合があります。 新しいファイルで修復を実行するには、[続行]をクリックしてください。 ファイルの保存を中止するには、[キャンセル]をクリックしてください。

VBA自体は今日調べだしたばかりで初めて組んでみているので知識レベルはほぼゼロの状態ですが、
GASやPerlがある程度わかるのでその辺りの勘で作成している、と言う状態です。

自分なりに色々調べ、エラーが発生する行を探してみたり、
Excelを最新の状態にしてみるなどを行っていますが、どうしても解決出来ず…。

大変恐縮ですが、もし原因がお分かりになる方がいらっしゃいましたらご教示頂けましたら幸いです。

・Windows10 Home(22H2)
・Office365 Excel(最新状態)
・マクロは別のxlsmファイルから実行しています

ソースコード

VBA

1Sub ◆テスト() 2Dim ccccc As String, aaaaa_messege As String, ddddd As String, aaaaa_time As String, bbbbb_time As String, bbbbb_alltime As String 3Dim i As Long, MaxRow As Long 4 5Dim reg As Object 6Set reg = CreateObject("VBScript.RegExp") 7With reg 8 .Pattern = "[0-9][0-9]:[0-9][0-9]" 9 .IgnoreCase = False 10 .Global = True 11End With 12 13Cells.Font.Size = 10 14 15MaxRow = Cells(Rows.Count, 1).End(xlUp).Row 16 17For i = 9 To MaxRow 18 19 ccccc = Cells(i, 2).Value '各種コメント置換 20 aaaaa_messege = Cells(i, 3).Value 21 ddddd = Cells(i, 6).Value 22 aaaaa_time = Cells(i, 7).Value 23 bbbbb_time = Cells(i, 8).Value 24 25 ccccc = Replace(ccccc, "コメントA", "") 26 ccccc = Replace(ccccc, "コメントB", "") 27 aaaaa_messege = Replace(aaaaa_messege, "コメントC", "") 28 ddddd = Replace(ddddd, "コメントD: , ", "") 29 ddddd = Replace(ddddd, "コメントE: , ", "") 30 31 Cells(i, 2).Value = ccccc 32 Cells(i, 3).Value = aaaaa_messege 33 Cells(i, 6).Value = ddddd 34 35 If bbbbb_time <> "00:00" Then '不要な00:00を削除 36 Cells(i, 3).Value = "コメントF" 37 aaaaa_time = reg.Replace(aaaaa_time, "") 38 Cells(i, 7).Value = aaaaa_time 39 ElseIf aaaaa_time <> "00:00" And bbbbb_time = "00:00" Then 40 bbbbb_time = reg.Replace(bbbbb_time, "") 41 Cells(i, 8).Value = bbbbb_time 42 ElseIf aaaaa_time = "00:00" And bbbbb_time = "00:00" Then 43 aaaaa_time = reg.Replace(aaaaa_time, "") 44 Cells(i, 7).Value = aaaaa_time 45 bbbbb_time = reg.Replace(bbbbb_time, "") 46 Cells(i, 8).Value = bbbbb_time 47 End If 48 49 If ccccc = "あああ(いいい)" Then 'セルに色付け 50 Range(Cells(i, 2), Cells(i, 8)).Interior.ColorIndex = 43 51 ElseIf ccccc Like "*あああ*" Then 52 Cells(i, 2).Interior.ColorIndex = 43 53 End If 54 55Next i 56 57 58Application.DisplayAlerts = False 59 60Range("S5").Cut '以下整地 61Range("C7").Select 62ActiveSheet.Paste 63 64Range("T5").Cut 65Range("D7").Select 66ActiveSheet.Paste 67 68Range("G5").Cut 69Range("F7").Select 70ActiveSheet.Paste 71 72Range("H5").Cut 73Range("G7").Select 74ActiveSheet.Paste 75 76Range("I5").Delete 77Range("F6").Value = "(コメントF)" 78 79bbbbb_alltime = Range("J5").Value 80Range("J5").Delete 81Range("G6").Value = "(" & bbbbb_alltime & ")" 82 83Range("F5").Cut 84Range("G5").Select 85ActiveSheet.Paste 86 87Range("E5").Cut 88Range("F5").Select 89ActiveSheet.Paste 90 91Range("R1").Cut 92Range("A1").Select 93ActiveSheet.Paste 94Range("A1:B1").Select 95Selection.Merge 96 97Range("I2:L2").Select 98Selection.UnMerge 99Range("I2").Cut 100Range("A3").Select 101ActiveSheet.Paste 102Range("A3:E3").Select 103Selection.Merge 104 105Range("M2:R2").Select 106Selection.UnMerge 107Range("M2").Cut 108Range("F3").Select 109ActiveSheet.Paste 110Range("F3:H3").Select 111Selection.Merge 112 113Range("E4:R4").Select 114Selection.UnMerge 115Range("E4").Cut 116Range("F4").Select 117ActiveSheet.Paste 118Range("F4:H4").Select 119Selection.Merge 120 121Range("S4:T4").Select 122Selection.UnMerge 123Range("S4").Delete 124 125Range("A4:D4").Select 126Selection.UnMerge 127Range("A4:E4").Select 128Selection.Merge 129 130Range("I2:T7").Borders.LineStyle = xlLineStyleNone '不要列罫線削除 131Range("I2:T7").Interior.ColorIndex = 0 '不要背景色削除 132 133Range("A2:H7").Borders.LineStyle = xlContinuous '罫線引き直し 134 135Application.DisplayAlerts = True 136 137End Sub 138 139

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

CHERRY

2022/12/05 04:25 編集

回答者では再現できないので、回答がつきにくい質問と思います。 マクロの実行後に保存できなくなるのであれば、 実行したマクロをいくつかに分割して どの部分の処理を実行したら 保存できなくなるのかを調べる必要があると思います。 ステップ実行などの方法で、マクロを少しずつ実行してどの部分を処理した際に保存できなるなるのかを調べてください。
bis_don

2022/12/05 04:31

ご確認ありがとうございます。 となるとこのPCのExcelの問題と言う可能性もありますね。 他のPC、他のExcelで試してみます。 なお、実は以下の部分を削除すれば保存出来ることがある事は確認しているのですが、 保存出来たり出来なかったりと不安定な為、もしかしたら全く関係がないのに 変にそこに着目されて余計な情報となる可能性があると考え明示はしておりませんでした。 Cells(i, 2).Value = ccccc Cells(i, 3).Value = aaaaa_messege Cells(i, 6).Value = ddddd

回答1

0

自己解決

理由はわからないままですが、
フォントサイズを変更する一行が確定でエラーになることが分かりました。
該当行を削除して何度か試しましたが、今のところ問題なさそうなので一旦クローズします。

VBA

1'削除部分 2Cells.Font.Size = 10 3 4'範囲指定にしてみたり記述を変えてみたり最初に全体のセルの結合を解除してみるなどしましたが、 5'どうしても保存出来なかったので、フォントサイズ変更は諦めました。 6 7'失敗1 8Range("A1:H50").Font.Size = 10 9 10'失敗2 11Cells.Select 12 With Selection.Font 13  .Size = 10 14 End With 15 16

投稿2022/12/05 08:26

bis_don

総合スコア7

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。