NasupiiのPerl書抜帳
cells_selectプログラムソースコード
Perl ソースコード
# cells_select.pl
# Copyright (C) 2015 Nasupii last update 2015/11/01
# Win32::OELを使ってMS-Excel のワークシートの特定セルを選択するperlプログラム
# フォルダー内の全ファイルの全シートを対象にする。
#
# 使用確認環境
# ActivePerl 5.20.2 と MS-Excel 2010 がインストールされた
# Windows 7にても動作確認しています。
#
# 使い方
#
# このサンプルプログラムでは A1 セルを選択状態にします。
# 他のセルを選択状態にする場合は、66行目の $Sheet->Range("A1")->Select(); を書き換えてください
#
# 1.このプログラムをプロテクトを選択状態にたいExcelファイルが入ったフォルダー
# にコピーする。
# 2.このプログラムをブルクリックする。
# 3.コマンドプロンプトのウインドウが開き、ファイルを順番に処理していく。
# 4.「Enterを押すと終了します」が出たらエンターキーを押す。
# ================================================================================
# データファイルが入っているフォルダーを指定
# "." はプログラムを実行した同じフォルダーを表す。ここを変えると他のフォルダー
# のファイルを処理対象にすることが出来る
$PATH = ".";
#モジュールのインポート
use Win32::OLE qw(in with); #OLEを使用する
use Win32::OLE::Const 'Microsoft Excel'; #エクセルのデータを扱う
use Cwd;
#アプリケーションオブジェクトの取得
$Excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
$Excel->{DisplayAlerts} = 'False'; #警告を表示しない
# ====== ファイル一覧の取得 ======
@files = (); #配列の初期化
opendir(DIR, $PATH); #ディレクトリを開く
while($file = readdir(DIR)) {
print $file, " found\n";
next unless(-f join("/", $PATH, $file)); #ファイル以外を除外
next if($file !~ m/\.xls/); # エクセルファイル意外を除外
next if($file =~ m/^~\$/); # エクセルが書き出すバックアップファイルを除外
push(@files, "$file");
print $file, " pushed \n";
}
foreach $file (@files) {
#ブックを開く
$pathname = Cwd::abs_path(join("/",$PATH, $file)); #ファイルの絶対パスを求める
$Book = $Excel->Workbooks->Open($pathname);
print "\nopen ",$pathname, "\n";
#ワークシート数を取得
$SheetCount = $Book->Worksheets->Count();
print "sheetcount= $SheetCount\n";
#ワークシート1から順番に処理していく
for ($i = 1; $i <= $SheetCount; $i++ ) {
$Sheet = $Book->Worksheets($i);
$SheetName = $Sheet->Name; # 現在のシートの名前を取得
$Sheet->Select(); #ワークシートを選択状態にする
$Sheet->Range("A1")->Select(); #セル A1 を選択状態にする
print $SheetName, "\n"
}
$Book->Worksheets(1)->Select(); #ワークシート1を選択状態にする
$Book->Save; #ワークシートを上書き保存する
$Book->Close() ; #ワークシートを閉じる
print "close ", $pathname, "\n";
}
print "Enterを押すと終了します\n";
<STDIN>;
exit;