Excel VBA ファイル操作
テキストファイルの読み書き
英辞郎のテキスト・ファイルを、StarDict用 1行形式に変換する
フリーの辞書ビュアとして、「StarDict」や「ColorDict」があります。
私が、購入した英辞郎のテキスト・ファイルを、これらの辞書ビュアで読めるように変換するために作ったマクロを紹介します。
このExcelをダウンロードできます。EigiroToOneLineVBA03.xls
英辞郎のファイルは、一つの単語が、複数行のデータから成り立っている、特殊な形式のファイルです。
■
inscription {名-1} : 記されたもの、題辞、碑文、銘■・I read the inscription on the gravestone. 私はその墓石に刻まれた文を読んだ。
■inscription {名-2} : 記すこと、記入
■inscription : 【レベル】8、【発音】inskri'p∫n、【@】インスクリプション、【変化】《複》inscriptions、【分節】in・scrip・tion

上の例では、最初に表示されるべき、発音記号を含む行が、最後になっています。
このコンバータを使うと、辞書コンテンツとして、適切な順序に表示できるような、1行形式に変換されます。
StarDict用 1行形式とは、見出しと本文が一行のテキスト・ファイルで、
1.見出し語と本文は、タブで区切られ、
2.本文中の改行が \n になっている、
3.改行は LF (UNIX形式)で、
4.文字コードが、UTF-8 のファイルです。
参照:PDICテキスト形式の EJDIC テキスト・ファイルを、StarDict用 1行形式に変換する
解説:
StarDict には、StarDict Editor という辞書データをコンパイルするツールが付いています。
StarDict 用の 1行テキスト形式にして StarDict Editor を使えば、どんな辞書データでも、StarDict で参照できるようになります。
ところが、最初、下記のエラーが出て、コンパイルできませんでした。
Gtk-CRITICAL (recursed) **: gtk_text_buffer_emit_insert: assertion `g_utf8_validate (text, len, NULL)' failed
aborting...
投入した、1行形式のテキスト・データに問題があると思って、Div を使って、テキスト・ファイルを 5分割して、やり直してみました。
すると、4 つのファイルはコンパイルできて、1 つだけが同じエラーになりました。
英辞郎のテキスト・ファイルは、約 25 万行あります。このため、
25 万行/5 → 5万行/5 → 1万行/5 → 2千行/5 → 400行/5 → 80行/5 → 16行
と、7回、同様な操作をして、問題部分を見つけました。
コントロール文字「\」が悪さをしていたのです。
このため、上のマクロでは、\→\\ とエスケープして、エラーを回避しています。
PDICテキスト形式の EJDIC テキスト・ファイルを、StarDict用 1行形式に変換する
逗子田越村新聞というサイトで、PrepTutor という名前で、フリーの英和辞書データをダウンロードできるように、公開していただいています。
これは、EJDIC というフリーの英和辞書データの、誤字を訂正し、新語句を追加した、約46,700語収録の、英和辞書テキスト・データです。
私が、このデータを使って、和英部分を補強して、PDICテキスト形式(見出語と訳語が1行毎に交互に並んだテキスト形式のファイル)に加工したものが、下記です。
このテキスト・ファイルを、StarDict用 1行形式に変換するために作ったものが、下のマクロです。
StarDict用 1行形式とは、見出し語と本文がタブで区切られ、本文の改行が \n になっている一行形式のテキストファイルです。
このExcel マクロをダウンロードできます。PDICtoStarDictVBA00.xls
Excel の指定した列データを、CSV または 固定長でテキスト出力(汎用ツール)
Excel の、特定列を指定して、CSV や固定長で、テキスト出力したいことが、時々あります。
都度、指定項目にあわせてマクロを作るのは大変なので、汎用ツールを作ってみました。
必要な抽出条件を登録して、名前を変えて保存しておけば、繰返し使うことができます。
サンプル指定を登録してあります。
このサンプルは、各、支店から、ばらばらな Excel 形式で送られてくる販売実績データを、サーバに登録するために、指定されたファイル・レイアウトの固定長テキストに出力するための設定例です。
このExcelをダウンロードできます。CSVorFLT_generatorVBA01.xls