「VBA」カテゴリーアーカイブ

式量(分子量など)を計算するエクセルマクロ

今年は、国際周期表年(2019)ということで、これを記念して、最新の原子量に基づいて分子量を計算するツールを作成し、公開することにしました。(ウソ、後付けの理由です)

実は、久々に、色んな化合物の分子量や、その元素割合を計算する必要がありました。そこで、今から25年ほど前に、Visual Basicで作ったソフト(MOLWT)を使って計算してみました。何分、Windows3.1 ~ Windows95 の時代に作ったソフトですから、今動かそうとすると、分子量計算と元素割合計算程度ならできるものの、不具合も多く、手直ししたくとも、既に当時のVisual Basicが動く環境もなしという状況です。

とはいえ、Visual Basic は、今のエクセルなどのマクロ言語(VBA)とほとんど一緒なので、入出力関係や、イベントの取り扱いなど、インタフェース関係は大きく異なるものの、分子量を計算させる部分は、多分ほとんどそのまま使えるだろうと考え、エクセルで分子量計算させるマクロを作ってみることにしました。

何せ25年も前に作ったソフト、たかが分子量計算と侮るなかれ、入力された英数記号交じりの文字列を判読し、含まれる元素の数を計算して足し合わせるという操作を、ゼロから作るのは結構大変です。特に、入力式に括弧が含まれたり、原子や分子の係数に小数や分数の入力を許容すると、分子量計算の主要部分だけでも相当に複雑になります。

おまけに、これは半分遊びの要素なのですが、入力式は、元素記号の大文字小文字を区別せずに入力可能としています。化学式の入力の際に、元素記号を大文字・小文字を使い分けてキーボードで入力するのは、意外と面倒くさくないですか? そんな面倒な区別はせずに、”caso4″ とか、”al(po4)3″ などと入力するだけで、計算してくれるのは結構便利だと思いませんか。

でも、そうすると、例えば “co” という入力式が、”CO”(一酸化炭素)と”Co”(コバルト)の2種類の解釈が可能となるように、入力式のアルファベットを1文字ずつ、大文字か小文字かの2通りとして網羅的に探索することになり、その計算は結構大変です。

もっとも、そのおかげで、例えば “america”、”china”、”france”、”spain”、”nippon” などと入力して分子量を計算させてみると、

AmErICa: 577.24
CHINa: 162.91
FRaNCe: 399.12
SPaIn: 377.92, SPaIN: 404.01
NiPPoN: 313.67, NiPPON: 150.65, NIPPoN: 395.89, NIPPON: 232.87

などという結果が得られ、やっぱりアメリカの勝ち?となりました。(それがどうした?)

何せ25年も前に作ったプログラムのため、中を見ても、ほとんどチンプンカンプンで、中のロジックや個々の変数の役割など、かなり複雑で、これ本当にオレが作ったのか?状態で、到底隅々まで理解できてはいません。それでも、個々の機能がプロシージャやファンクションとして固まりになっているおかげで、その中身は良くわからなくても、とりあえずそれらしい答えは出るようになりました。うーん、もしかして25年前の自分は結構優秀だったのではないか、と思わなくもありませんが、いまさらどうしようもありませんね。

多分、正しい答えが出てくると思いますが、非常に複雑な入力式の場合には、おかしな動きをする可能性もありますので、出てくる答えを過信しないでください。

というわけで、とりあえずの完成版を「Molwt (Molecular Weight Calculator)」と名付け、無料公開しました。よろしかったら、試しに使ってみてください。エラー対応などは不完全な状態ですが、PCが固まったりはしないと思います。多少変な動作があってもご容赦ください。

Molwt のページへ

ご意見やご要望があれば、遠慮なくお願いします。可能な限り、対応させていただきます。

特許文献をダウンロードし、複数のキーワードを色分け表示するツール

仕事上、特許調査に関わることが多い。いろいろと工夫して、できるだけノイズと漏れが共に少ない検索を目指すものの、どうしても漏れを少なくしようと思うと、多少のノイズの混入は避けられない。そのため、特許調査で出てきた大量の特許文献リストに目を通し、明らかなノイズを除去したり、特に重要な特許にチェックを入れたりする作業が欠かせない。この作業は、特許文献1つ1つに目を通す必要があり、数が多くなると結構大変な作業となる。

実際に作業を行う際には、特許文献(公開公報や登録公報)中に、いくつかの所定のキーワードが含まれているかどうかを確認することが多い。日本語特許であればJ-PlatPat、海外特許であればEspacenetなどのサイトで、特許文献のテキスト版にアクセスし、ブラウザのページ検索機能(CTRL+F)を使って、特定のキーワードをハイライト表示させるとか、PDF公報にアクセスし、PDFリーダーのワード検索機能を使用したりすることになる。

しかし、これは非常に手間のかかる作業である。まずは目的の公報(特許文献)にアクセスするのに手間がかかる。なぜなら、J-PlatPatやEspacenetでは、各公報に直接アクセスされることを嫌っており、公報にたどり着くまでに何回かのクリックを必要とするからである。

さらに、目的の公報を開いた状態でも、複数のキーワードをそれぞれハイライト表示させるようなことは難しい。(J-PlatPatの場合には、複数のキーワードを入れて検索し、検索結果を表示させると、複数のキーワードがそれぞれ色分け表示されるけれど)また、特許毎に使用される用語が微妙に異なっていたり、表記揺れがあったり、同義語があったりするので、それへの対応も必要となる。例えば、「電池」と「バッテリー」とか、元素の場合には元素記号表記と元素名表記とか。。。

ということで、検索で出てきた大量の特許文献リストに対し、テキスト形式の特許文献を入手(ダウンロード)し、そのテキストに指定したキーワードが含まれていたら、その数をカウントすると同時に、キーワードの背景に色を付けてマーキング(ハイライト表示)するツールを作ってみることにした。処理にはエクセルのマクロ(VBA)を使うことにした。

特許文献リストの入手には、Google Patentsを使用した。最近のGoogle Patentsは優秀で、US、EP、WOなどに加え、JP、CN、KR、RUなどが、かなり新しいものも収録されている。しかも、これらは固定URLが与えられているので、公報番号がわかれば、直接アクセス可能である。さらに、素晴らしいのは、英語以外の文献の多く(ほとんどすべて?)は、Google得意の翻訳機能で、予め英語に翻訳されている(公報URLの末尾に”/en”を付けると、英語版が入手できる)。従って、全部を英語版で入手すれば、日本語の特許も中国語の特許も英語の特許もドイツ語の特許も、全部英語で解析することができる。もちろん、それぞれのオリジナル言語での解析も可能なので、日本語特許は日本語で解析することもできる。

※ 2019/4/1追記
Google Patentsは、今年の2月頃から、対応国・機関が大幅に増えており、現在は101カ国・機関となっている。ただし全ての国の全ての特許が収録されているわけではなく、ごく一部の特許だけが収録されている国もあるようだ。でも、今後充実していく方向にあるのは間違いないだろう。

テキスト版公報が入手できれば、あとは、公報の構成を理解し、タイトル、出願人、発明者、アブストラクト、クレーム、詳細な説明、などのそれぞれのブロックを認識し、指定したキーワードを探し出し、その数を数えると共に、キーワード部分の背景の色を変える処理をするだけなので、最初はちょっと苦労するけど、さほどややこしい処理でもないし、試行錯誤を何度か繰り返すうちに、それらしいものが出来上がった。

なお、キーワードはあらかじめ複数指定可能とし、1種類のキーワードについて複数の表記(同義語、表記揺れ、大文字・小文字など)を事前に登録する形式とした。

実際に出来上がったツールを使ってみると、これは非常に便利で、従来、時間と手間の掛かっていた処理がほぼ全自動となり、ノイズの除去や、重要特許の内容の把握などが短時間に可能となった。これは余りにも便利なので、多くの人にも知ってもらおうと思い、公開することにした。

—————————————————

というわけで、とりあえずの完成版を「Patent Keyword Marker (PKM)」と名付け、無料のお試し版を公開しました。よろしかったら、試しに使ってみてください。エラー対応などは不完全な状態ですが、PCが固まったりはしないと思います。多少変な動作があってもご容赦ください。なお、Google Patents の仕様等の変更への対応や、PKM自身の機能向上やバグ修正等を目的として、少しずつバージョンアップを続けています。

Patent Keyword Marker (PKM) のページへ

また、Google Patentsは、時々大規模な改修が行われることがあり、そうなるとそれに対応した改訂が必要となりますが、必ずしも即時対応可能とは断言できかねます。

ご意見やご要望があれば、遠慮なくお願いします。可能な限り、対応させていただきます。