LoginSignup
5
2

More than 3 years have passed since last update.

消せない、スタイル(Excelで削除できないスタイルが発生した場合)

Last updated at Posted at 2019-12-03

現象

SIerが大好きなExcelファイル(.xlsxファイル)。しかし編集を重ねるうちにいつの間にか大量のスタイルを抱えたメタボファイルになってしまいます。

やたらと重いし下手に顧客名などを推測できる名前が含まれた状態でよそに出したら情報漏洩事故です。
ということで不要なスタイルは削除するわけですが…消えない。
秘伝のタレと化した大量のスタイルの中には往々にして、リボンから個別に削除してもVBAからDeleteしても決して消えないスタイルがあるものです。

原因

このようなことが起きる原因のひとつとして、スタイルの名前の末尾に何らかの原因でスペースが入っている場合があります。
ただしExcel上でスタイルの名前を直接変更しようとしても元のスタイルとは別に「消せるスタイル」が複製されてしまい、うまくいきません。

対処方法

注意:.xlsxファイルの内部構造を壊してしまうおそれがあるので事前にファイルのバックアップを取っておくこと。
用意するものは以下の2つ。
・ 7-zip(zipファイルを編集→更新できるアーカイバであれば他のものでも可)
・ サクラエディタ(正規表現で後方参照を使った置換ができるエディタであれば他のものでも可)
※サクラエディタは7-zipのツール→オプション→外部ツールから編集用外部プログラムとして設定しておく必要があります。

  • 7-zipで対象の.xlsxファイルをアーカイブとして開きます。

  • アーカイブ内の「xl\styles.xml」ファイルを選択し、編集(F4)を実行します。

  • エディタで見ると以下のように名前の末尾にスペースが入ったスタイルが見つかるはずです。


    そこで、以下の条件で「すべて置換」を行います。(下記の正規表現では念のため先頭にスペースが入っている場合も削除しています)

項目
置換前 name=" *(.*?) *"
置換後 name="\1"
正規表現 オン

  • ファイルを保存してエディタを閉じます。
  • 7-zipがファイルの更新を検知し、アーカイブの更新可否を尋ねてくるので「OK」を選択します。

  • 7-zipを閉じます。

  • Excelで.xlsxファイルを開き、不要なスタイルを削除します。

備考

とにかくまずExcelファイルを外部に出すときは「ドキュメント検査」機能を使いましょう。

ドキュメント検査で指摘されるのに見つけにくい隠れデータとしては他にも以下のようなものがあります。

  • Visible=falseが設定された名前の定義
  • Visible=xlSheetVeryHiddenが設定されたシート

xls形式はもう捨てましょう…

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2