忍者ブログ

開発や調査の結果を断片的に残す目的のブログ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

業務アプリケーションをExcel + VBA で構築する際の限界(その1)

・書式4000 問題


まぁ、上記問題はVBAは特に関係ないのだが。

書式4000問題とは、Excel 1ブックに対する書式パターンの数が4000に制限されること。
書式パターンとは、セル書式の組み合わせのことで、フォント・罫線・背景色など。
ブックがこのパターン数を保持している様子で、4000を超えたことに気付かず作業を行って、
次回ファイルを開くと書式がぶっ飛んで壊れているとても怖い現象。

作成時だけの問題と思いきや、VBAでセルの保護を操作するなど、
アプリケーションとして動的に書式を変更する場合、その最大値を押さえておく必要がある。
VBA実行時に、4000書式を超えると実行時エラーとなる。

また、この書式数を明確にカウントする方法が(自分のなかで)確立していないので、
管理できない状況にある。

現状、別に4000書式を保持したブックを用意しておき、VBAで対象ブックに1つづつカウントしながらコピー。
例えば1600コピーできたから、現在の書式は2400だねっという状態。

試行錯誤を行った結果、上記に落ち着いたのだが一応考えた方法を記しておく。
1) VBAでFindFormat を使用して書式を検索

  この方法だと、まず検索する書式パターンを指定する必要がある。この書式パターンが曲者で、
  影響する書式の最大が必要だと思った。基本的に「セルの書式設定」ダイアログ上で指定可能
  な書式が影響すると考えられたが、リンクの挿入※でも書式数が変動することが分っていた。
  これで全てだという明確な仕様が確認できなかったため、この方法はあきらめた。

  ※リンクはどうも下線とフォントパターンで書式数をカウントされているようだ。

2)ブックをXMLで保存してStylesタグの子要素Styleの数をカウント

  一応現在採用している方法と近い数値が取れたのだが、やはり明確な仕様を確認できなかった為
  不採用となる。

PR

◎ Post your Comment
Name
Title
E-mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
◎ この記事へのトラックバック
Trackback URL
◎ カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
◎ 最新トラックバック
◎ プロフィール
HN:
Kazoo
性別:
非公開
職業:
プログラマ
趣味:
プログラム
◎ ブログ内検索
Script: Ninja Blog 
Design by: タイムカプセル
忍者ブログ 
[PR]