一般社団法人 全国個人事業主支援協会

COLUMN コラム

こんにちは。
田中です。

9月も終わりに近づき、一気に秋らしい気温となりました。
それでも、窓を開けても風が入らない我が家では、冷蔵が稼働中…
ぜんぜん外の気温で涼しいというのに、風が入る、入らないでこんなにも体感温度が異なってしまう。
もどかしいものです。

さて、最近は開発というよりもそれを管理する側のお仕事をしている田中ですが、さまざま情報の整理にExcelの関数、マクロを使いまくっているわけです。
そのときに、少し躓いたので、その備忘録です。

タイトルにあるとおり、テーマは「Excelの256文字の呪い」。

いったいこれはなんなのか、ということだが、マクロの処理中、256文字以上の文字列において、特定の関数が動かない、というものです。
ネット検索すると、この事象が起きていると記載が多いのが、「Find関数」。
本来マクロのString型では、億単位の文字列が扱える。
そうそうに1億以上の文字列というのはなかなか見ないので、このデータ型自体に問題はない。
にもかかわらず、いざ「Find関数」を用いて、文字を検索すると、文頭の255文字しか認識をしてくれないのだ。

どうやら、そういうExcel側の仕様らしいので、検索する文字列を短くするか別のアプローチをする必要がある。

今回私が出会ったのは、「Open関数」だ。

よくありがちな処理の1つ、”ファイル一覧を取得して、そのファイル1つ1つに同じ処理を行う”というのをしているときに、どうも、「ファイルを開くことができません」とエラーがでて、Excel自体閉じるということが特定のファイルで起こっているのを見つけた。

そもそも、ファイルパスが長いんじゃ!階層が多いのが悪い!!というのは置いておいて。
(残念ながら、そこをどうにかできるのであれば苦労はしないのだ)

デバックでみていると、開きたいファイル名の内容が、「~.xlsx」まで、読み込んでいない。
ファイルの拡張子まで読み込んでいなければ、そのファイルを開こうにも、そのファイル名のファイルは存在しないのだから、「ファイルがありません」と言われるのは当然のことだ。

で、その開きたいファイル名の文字数を見ると「255文字」。

長くSEをやってみると、何かと意味深である「256文字」の1文字少ない数字。
これは何かある、とググってみれば、案の定、上記のようなExcelの256文字の制限を見つけたのだ。

結局、私はこの256文字以上の場合はエラーとして、処理することでマクロの処理を終えることにした。

ここはここで苦労することになったのだが、作業時間的に原因を突き止めるところまではいかなかったので、深くは記載しない。

このような事象が別の処理でもきっとあると思う。
ただ、正直なところ、この制限の中で動くようなファイル構成だったりしたほうがいろいろ幸せなんだろうな、と思わなくはない。
それを決められる立場ではない身としては、なかなかもどかしいものです。

The following two tabs change content below.

tanaka_k1968

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア