Hatena::ブログ(Diary)

jun-ichi.blog.hatena このページをアンテナに追加 RSSフィード

2006-08-24

[][] はじめてのWin32::OLE(word2txt.vbsをperlに移植してみた)

PerlのWin32::OLEを使って、word2txt.vbs を Perl に移植してみた。

これまで、Win32::OLE を使ったことがなかったので、WordやExcelのファイルをバッチ処理したいときは、いったんテキストに変換してPerlで処理していた。VBAは生産性が低いのであまりすきじゃない。

WordやExcelのファイルをテキストに落とすときには、ここのexcel2txt.vbsやword2txt.vbsにお世話になっていたのだが、PerlからOLEを使えばいいじゃんといういうことにようやく気づいた。

このあたり(PerlからのOLE使用法)の情報を参考に word2txt.vbs を perl に移植してみた。ドラッグしたファイルを対象にするのではなく、カレントディレクトリの全docファイルを処理対象にしている。

#!/usr/bin/perl

use strict;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Word';
use Cwd;

# ワークディレクトリにカレントディレクトリを設定
my $wd = Cwd::getcwd()."/";

print STDERR "$wd\n";

# ワードファイルをテキスト形式で保存
while(my $filename = <*.doc>){
	# ファイル名から拡張子を削除
	$filename =~ s/\.doc$//;

	print STDERR "$filename.txt -> $filename.txt\n";
	
	my $Word = Win32::OLE->new('Word.Application', 'Quit');
	$Word->Documents->Open($wd."$filename.doc")
	    || die("Unable to open document ", Win32::OLE->LastError());
	$Word->ActiveDocument->SaveAs($wd."$filename.txt", 2);
	$Word->Documents->Close;
}

基本的には、PerlからのOLE使用法にあるとおり、VBAのコードを以下のように変換するだけ。簡単。もっと早く気づいていればよかった。

VBA(Visual Basic for Applications)では、文法は以下のようになっています。:
    object.method(argument).property = value
Perlでは、以下のようになります。
    object->method(argument)->{property} = value;

つまり、次のVBAのサンプルコードは:
    ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
Perlでは以下のようになります。:
    $Chart->Axes(xlCategory, xlPrimary)->{CategoryType} = xlCategoryScale;

参考URL

ちなみに、RubyのWin32OLEについては Rubyist Magazine に詳細な解説がある。

言語を問わず参考になる。

[]サーバやハブ、ルータなどの名づけに役立つリストのリスト

人力検索はてなより。

サーバなどの機器が大量に増え、命名に困っています。

サーバやネットワークの管理者にお尋ねします。

サーバやハブ、ルータなどの名前はどのように付けていますか?

機器名や役割などをそのまま名前にしている場合もありますが、今回は惑星の名前や星座の名前など、バリエーションが豊富で今後機器が増えても安心な「シリーズもの」を教えてください。

http://q.hatena.ne.jp/1156318046

この悩みよく分かる。最近はマシン名をつけるような機会もなけど、学生はよく悩んだ。

マシン名は、

  • 機械的に命名できる
  • 悪趣味でない
  • 覚えやすい
  • スペルが連想しやすい
  • 遊びごころがある
  • ただし、トラブルの口にしてもときに怒られない

ものがよいと思う。学生時代に使っていたクラスタの名前はドイツ語であったので、スペルが覚えられない人、正しく読めない人がいて困った。

面白いものがいろいろあがっているが、個人的には、犬名がヒット。

#いままで知らなかったけど、警察犬の名前は機械的に振られているのか・・・。

名前を選ぶ前の注意

  • 一緒に生まれた兄弟姉妹の仔犬は同じ頭文字に統一
  • 犬舎ごとに頭文字をA、B、C、・・・X、Y、Zの順に付けていく順番につけ途中を飛ばさない)
  • 両親犬と同じ犬名はなるべく付けない
  • アルファベットを一周した時、同じ犬名は付けない

ちなみに、某勤務先では「地下鉄の路線」という例があった。ginza とか marunouchi とか。

センスはともかく、覚えやすいのはよい。

回答いろいろ

面白いが、きりがない。

[] Flickrでもっともよく使われているカメラは Nikon D50

OLYMPUS デジタル一眼レフカメラ E-500 バリューキット ブラック 17.5-45mmレンズつき

Flickrユーザがもっともよく利用しているカメラのTop10らしい(06/08/14時点)。このページ(Top 10 Flickr Cameras)より。FlickrのAPIを利用して調査したようだ。

  1. Nikon D50
  2. Nikon D70
  3. Canon EOS Digital Rebel XT
  4. Canon EOS 20D
  5. Canon EOS 350D Digital
  6. Nikon D70s
  7. Cybershot
  8. Canon PowerShot S2 IS
  9. Canon EOS Digital Rebel
  10. Nikon D200

僕は携帯で撮影して、そのままメールでアップロードすることが多いのだが、一眼レフデジカメばかりなのが以外。やはり写真好きは一眼レフなのか。