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

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

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

ClosedXMLは、Excel形式ファイル(.xlsx, .xlsm)の操作や読み書きのための.NETライブラリです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

8319閲覧

ClosedXMLでExcelファイルを保存すると、ファイルが壊れる

Youbun

総合スコア125

ClosedXML

ClosedXMLは、Excel形式ファイル(.xlsx, .xlsm)の操作や読み書きのための.NETライブラリです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/05/25 07:11

編集2020/05/25 07:19

現象

ClosedXMLライブラリを使用してすでに存在する「.mlsm」ファイルにアクセスして保存する。
この工程を行っただけで、開けなくなるファイルがありました。

環境

・C#のClosedXMLライブラリを使用
・複数の「ファイル名.xlsm」にアクセス(アクセスする拡張子は「.xlsm」のみ)して保存する
・壊れて開けなくなるファイルは、何度繰り返しても毎回同じものが壊れる
※また、壊れないファイルも毎回こわれない
・保存までの処理は正常に行われるが、保存されたファイルが開けない

ソース

cs

1//置換処理 2List<string> lFilePath = new List<string>() { "ファイルAのパス", "ファイルBのパス" }; 3Parallel.ForEach(lFilePath, flPathOne => 4{ 5 using (var wkbookOne = new XLWorkbook(flPathOne)) 6 { 7 wkbookOne.SaveAs(flPathOne); 8 } 9}); 10

試したこと

壊れるファイルと壊れないファイルに差分が無いか確認してみたが、
あるマクロが入っているファイルが壊れるファイルだったかと思ったら
同じマクロが入っている別のファイルは問題なかったり、
書式設定は全てのファイルに入っていたり、
シート名に変な文字が無いか確認してみたが特に気になることは無かったり、
これといった差分は見つからなかった

ネットで調べて、印刷設定があるとバグったという掲載記事を見つけて
壊れるファイルの印刷設定を初期化してみたが、直らなかった

###質問内容
・ClosedXMLでファイル操作を行った際に、何か壊れる原因となる要素があったりするのでしょうか?
(それが掲載されているサイトだけでも教えていただけたら嬉しいです)

・印刷設定のような、目に見えずらい設定の保存がClosedXMLに対応していないせいでファイルが破損したのかなと思いました。
気を付けないといけない設定項目に心当たりがある方がいらっしゃいましたらご連絡いただければ幸いです!

以上、とっかかりが無くてどうしようかアタフタしてますので、
どのような情報でも教えて下さい。
なにとぞ、よろしくお願いいたします!

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

私の場合はシート名に()が入っていると.xlsxファイルが壊れてしまいました。
()を削除して、Saveしたら壊れずに保存できました。

投稿2021/02/10 01:41

nay

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

解決しました。※質問してすぐ解決してすみません。本当にわざとじゃないんです。

原因は、
シート内に設置したボタンのテキストの末尾で改行していた為でした。
一応調べてみたのですが、
ボタン内のテキストを改行させていると必ずファイルが壊れました。

原因は分かったのですが、複数ファイルのボタンに改行が入っていましたので、
改行の修正を行う手間を考えれば
ClosedXMLを使ってのファイル保存は難しいかなと思いあきらめ気味です。

フォームコントロールのボタンオブジェクトをVBAで捕まえる
一応、同じ現象で悩んでいる方ができた時のためにここにメモしておきます。
ボタンの改行を修正するなら、上記サイトを参考に
ボタンの文字を全ファイル一気に置換するのがベストかなと思いましたので実行してみようと思います。

以上、お騒がせしました。

投稿2020/05/25 07:55

Youbun

総合スコア125

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問