1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

excelをコマンドプロンプトで編集する

Last updated at Posted at 2022-04-10

目的

 私はコマンドプロンプトが好きだ。なんでもGUIに頼ると画面を開くだけで終わってしまう。
 というわけで、コマンドプロンプトでexelの内容を更新することを考えた。
 端末はwindowsでpowershellを使っているということを前提にしている。

概要

 1)読み込みコマンドをpowershellに登録
 2)データを入力
 3)save

読み込みコマンドをpowershellに登録

次のコマンドを$profileに設定しておく

function exrd($file){
  $global:ex = new-object -com excel.application
  $bk=$null
  if ($file[0] -eq '.'){
      $file2 = $file.substring(1)
      $global:bk = $global:ex.workbooks.open("$pwd$file2")
  }else{
      $global:bk = $global:ex.workbooks.open($file)
  }
}

$global:というのは変数をfunctionの範囲ではなく、自分の使っているpowershellの変数に書き込むということだ。

データを入力

 上の定義があれば
 exrd [excelファイル名]
 で$bkという変数にデータが読み込まれている。

 例えば、excelのsheet1の4行目のA,D列のデータを入力したい場合は
 $bk.sheets(1).range("A4:D4").value2=(1,2,3)
 みたいにすれば、入力ができる。

 内容を確認したい場合は


 $ex.visible = $true

で更新した内容を見ることが出来る。なんのことはない、excelを開いているということだ。

save


 $bk.save() 
 $bk.close()
 $ex.quit()
 $ex=$null
  [System.GC]::collect()

でおしまいである。これをexend()とかのfunctionにしておいてもいいかもしれない。

最後に

これらがあれば、全ての操作を1つのコマンドで片付けられる基本ができたので、
進捗だの不具合表だのうざい管理データをプロンプトで片付けられる。
本当はDBで連携する方がよっぽど便利だと思うのだが、未だにexcelがはびこっているので、ちょっとやってみた。ただ、安全だとは思うのだが、comobjectの堅牢性はよくわからない。
さらに、データがネット上にあるとか競合は?とかいわれてもそこまでは試験していない。
要するにアレだ、「利用は自己責任で・・」ってことですね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?