視覚障害者きうっちの自立への道

視覚障害者きうっち(S52年生)が気の向くままに日々の生活をツラツラとつづるブログ

在勤生活2281日目

2022-04-11 18:24:06 | 在勤生活
 VBAの話。前回の記事で触れていた(個人的に)意味不明だったコンパイルエラー。
同僚の助を借りて、案外あっさり解決することができました。その同僚には感謝感謝です!(^^)。
で、エラーの要因になっていたのは↓のようなことでした。
…こういうのを見ると、やっぱVBEのオブジェクトブラウザを大半のスクリーンリーダーで読み上げてくれないのは正直ハンデだよなぁ、と感じてしまいますorz。
一応、windows10に最初から搭載されているスクリーンリーダー、ナレーターでVBEのオブジェクトブラウザは読み上げてくれるんだけど、
正直【そのため】だけにスクリーンリーダーをナレーターに一時切り替えて、確認し終わったらメインのスクリーンリーダーに切り替えて-。みたいなことは、面倒くさくて正直なところ中々やりたいとは思わないからな~…orz。

…ただ今回の話、恐らくVBAをある程度使い込んでいる人であればブチ当たる可能性がそこそこある罠だと思います。
↓に備忘録を残しておこうと思いますので、この記事がもし同じような現象で困ってしまった人たちの一助になれたら幸いです(^^)。



○今回のエラーの原因
dim myDic as Dictionary のようにデータ型を【省略した形】で宣言していたことが1つ(この場合、正式にはScripting.Dictionary)
さらに参照設定を【Microsoft Word xxx Object Library【、【Microsoft Scripting Runtime 】の順番でしていたことが1つ。
さらにこの順番で参照設定をしていたこと、↑のようなDictionary型の宣言の仕方をしていたことで、
【WordのDictionary型】と【ScriptingのDictionary型】がバッティングしてしまい、
VBA側では先に参照設定した【WordのDictionary型】が優先されてしまい、scripting.Dictionary型で宣言していたつもりの【Dictionary】がコンパイルが通らなくなっていた模様…。



■対処方法
その1:変数宣言のデータ型をきちんと宣言する
dim wdDic as Word.Dictionary、dim myDic as Scripting.Dictionaryのような感じで変数を宣言

その2:
参照設定をする順番を意識する。省略形が同じデータ型になってしまう場合、
参照されるライブラリは【先に参照設定された方が優先される】ので、
今回の件でいえば、WordのDictionary型は使用しないから、

1.Microsoft Scripting Runtime
2.Microsoft Word xxx Object Library

の順番で参照設定をすれば、コンパイルはきちんと通るようになる

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする