2019年6月16日日曜日

エクセルの消えないスタイルを消す方法


こんにちは。やっまむーです。

仕事上の書類ってどんな形式で作られていますかね?
私のところでは一覧表から設計書、スケジュール等も含めてエクセルで作られたものが多いです。
このような環境でよく目にするのが、いつの間にか追加されている大量の謎スタイル。

標準多すぎ・・・
別のファイルからシートをコピーしたりすると勝手に増えていきます。
普段は設計書等を書くためにエクセルを使ていてスタイル機能を使う事がないため気にしないのですが、ふと見たときに増殖を繰り返して大変な事になっています。
この現象は昔からあるようで、Microsoft公式や様々な方が削除用のマクロを公開するほどです。

ところが、この削除マクロを使っても消えないスタイルも少なからず存在します。
上段3つが呪いのスタイル
消そうとしても消えず、1セルでも他のファイルにコピーするとコピー先にも追加されるという極悪ぶり。
まるで呪いのようにつきまとうので、次第に全てのファイルが侵食されてしまいます。

消す方法を求めて

何とか消す方法がないか調べてみると、以下のような記事がありました。

Excelの呪い 消せないスタイルと外部リンクの強制削除

エクセルファイルをzip解凍して、中のファイルを直接編集するという方法です。
ただ、現場で使っているファイルにこの方法を試したところ、編集後のファイルが壊れて開けなくなってしまいました。
結局は不用意に他のファイルからコピーしないしか方法はないのかなと思っていました。

しかし、諦めきれず試行錯誤をしているとようやく安全に消す方法を見つけました。
やり方は非常にシンプル。

  1. スタイルの変更を選択
  2. スタイル名、書式設定を適当に変更する
  3. 一旦保存して、終了する
  4. 再度開きなおして削除を行う
すると、あの呪いのスタイルが消えています。
呪いが解けたぞー!!

おそらく、設定を変更して保存する事で破損した状態が修復されたのでしょう。
これで忌々しい呪いから解き放たれました!

皆さんも呪いのスタイルにお困りでしたら一度試してみてください。

ではではー。

3 件のコメント:

  1. 呪いが解けました!
    素晴らしい!!

    マクロはないですか?

    返信削除
    返信
    1. コメントありがとうございます。
      呪いが解けてよかったです。

      スタイル削除のマクロは今のところ作っていません。
      全てのスタイルを削除するものは探すと見つかるのですが、例えば標準マクロを残しておきたい時などは使えないんですよね。
      標準スタイルを残して他を削除するようなマクロ、ちょっと考えてみます。

      削除


  2. For Each S In objDoc.Styles
    If Not S.BuiltIn Then
    S.Delete
    End If
    Next

    標準スタイルを除外するための条件が If Not S.BuiltIn です。
    https://qiita.com/hkuno/items/87f06368855a9e72b0fe

    返信削除