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

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

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

■リスト01

Dim oExcel
Dim shell
Set shell = CreateObject("WScript.Shell")
Set oExcel = CreateObject("Excel.Application")
myPath=WScript.Arguments.Unnamed.Item(0)
oExcel.Application.Visible=true
oExcel.Application.Workbooks.Add
shell.sendkeys "%aFT"
WScript.Sleep 5000
shell.sendkeys "%N"&myPath&"%O"

このスクリプト(ExcelCsv.vbs)は、以下のように起動する(以下ファイルはすべて「C:\cmd」以下にあるものとする)。

cscript.exe c:\cmd\ExcelCsv.vbs <CSVファイルパス>

ファイルの関連付けの登録を簡単にするのと、デバッグを容易にするため、これを起動するバッチファイル「csv.bat」を(リスト02)のように定義しておく。

■リスト02

@echo off
rem echo file:"%1"
cscript.exe /NoLogo C:\cmd\ExcelCSV.vbs "%1"
rem pause

このコマンドを拡張子「.ucsv」に関連付けするのであれば、以下のコマンドをPowerShellで実行する。Windows 11 Ver.24H2以前ではsudoが使えないので、管理者権限でPowerShellを起動して実行する。

sudo cmd.exe /c assoc .ucsv=UTF8.CSV
sudo cmd.exe /c ftype UTF8.CSV="c:\cmd\csv.bat" %1

UTF-8エンコードのCSVファイルの拡張子.ucsvとすれば、エクスプローラーで.ucsvファイルをダブルクリックして、ExcelのPowerQueryでファイルを読み込む直前まで実行できる(写真01)。ここで「読み込む」ボタンを押せば新規に作成したブックファイルにCSVファイルが読み込まれる。「読み込む」ボタンを押す前であれば、文字エンコードや区切り方法を変更することもできる。

ただし、SendKeysを使っているので、ファイルをダブルクリックしたあと、読み込みのPowerQueryダイアログが表示されるまでは、マウス操作を行わないようにする。途中、どうしてもダイアログが開くまでに時間が掛かる部分あり、5秒の待ち時間を入れている(WScript.Sleepで5000ミリ秒=5秒の一時停止を行っている)。このとき、マウス操作などで他のウィンドウを選択してしまうと、以後の処理がすべて失敗してしまう。これがSendKeysによる制御の欠点である。

今回のタイトルネタは、1976年のMGM映画「Logan's Run」である。邦題は「2300年未来への旅」で、「2001年宇宙の旅」に引っ張られたようなタイトルだが、製作が同じMGMという以外の関係はない。翌年にStar Warsが公開されており、「ちゃちい」特撮のハリウッド映画としては最後のものに近い。Computer Graphics(CG)も本作には使われておらず、翌月に封切られた「Future World」(邦題未来世界。West Worldの続編)がCGを最初に使った長編映画となった。
(塩田紳二)



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

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

デイリー: 参加する
ウィークリー: 参加する
マンスリー: 参加する
10秒滞在

記事にリアクションする

次の記事を探す

エラーが発生しました

ページを再読み込みして
ください