1. トップ
  2. 新着ニュース
  3. IT
  4. パソコン

窓辺の小石 第198回 Excel's Run

マイナビニュース / 2025年1月10日 19時54分

画像提供:マイナビニュース

Excelがインストールされていると、拡張子が.csvのCSV(Comma Separated Values)ファイルはExcelに関連付けされている。エクスプローラーで.csvファイルをダブルクリックすればExcelが走り出す。しかし、日本語版Excelでは、ファイルのエンコードがシフトJISであると仮定されている。このやり方でUTF-8のCSVファイルを開こうとすれば、文字化けするだけでなく、場合によっては、区切り位置を間違うこともある。

Windowsでもメモ帳がUTF-8に対応している昨今、シフトJISでしか読み込めないのは情けない感じがする。しかし、この文字エンコードの仮定がUTF-8に変更されることはない。というのは、すでにシフトJISであることを前提としたマクロや、ExcelにCSVを処理させるシステムが大量に稼働しており、変更することは、これらすべてが動作しなくなることを意味する。

シフトJISとUTF-8は、一部のコードが重複していて、完全な自動判別ができない。このため、文字コードを仮定して読み込む必要があり、従来との互換性を維持するにはシフトJISを仮定するしかないのである。

UTF-8エンコードのCSVファイルを読み込むには、先にExcelを起動して、PowerQuery(リボンのデータタブ ⇒ データの取得 ⇒ テキストまたはCSVから)を使って読み込む。このときであれば、文字エンコード方式を指定できる。なお、この方法では、必ずしも拡張子が.csvである必要はなく、.txtでタブ区切りといったファイルを読み込むこともできる。

バッチファイルなどからExcelを起動してPowerQueryにファイルを読み込ませることができるなら、関連付けを利用してエクスプローラーからPowerQuery経由でファイルを読み込むことが可能になる。

色々とやってみたが、PowerQueryを起動するためのQueries.Addメソッドを使うには、Excelマクロ(VBAスクリプト)が必要になり、WSHのVB Scriptなどからは起動できなかった。Copilotにも聞いてみたが、結論は同じ。しかし、Excel側でマクロが動くように設定しておくのは、ちょっと面倒だ。できればExcelの設定などは変更したくない。

そこでWSH(Windows Scripting Host)のVBScriptを使い、SendKeysでキーボードショートカットを操作して、PowerQueryにCSVファイルを読み込ませることにした。後述するようにSendKeysは万能だが欠点がある。リスト01がそのスクリプトだ。

この記事に関連するニュース

トピックスRSS

ランキング

複数ページをまたぐ記事です

記事の最終ページでミッション達成してください