掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
エクセルのマクロを条件付きで起動させるには? (ID:7355)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
かなり初歩的な事かもしれませんが、どうしても分からないので質問させて頂きます。 今回、Delphiにてエクセルのマクロ機能を実行させるコンソールプログラムを考えています。 マクロを有するエクセルファイル(A)と、マクロが無いエクセルファイル(B)を開き、 ファイル(B)の特定のシート(出来れば複数指定したい)にのみ ファイル(A)の特定のマクロを実行させたいのですが、 現状では、ファイル(B)の先頭のシートにのみマクロが作用してしまっています。 以下は現在のソースです。修正点や実現方法など指摘していただければと思います。 よろしくお願いします。 var Excel: Variant; WorkBook: Variant; WorkSheet: Variant; begin CoInitialize(Nil); //Com利用開始 Excel := CreateOleObject('Excel.Application'); //エクセル呼び出し!!! Excel.Visible:=True; //Excelを表示させる //エクセルブックオープン(ファイルA:マクロ有り) WorkBook :=Excel.WorkBooks.Open(FileName :='C:\ … \Macrocheck.xls' , readOnly := true); //エクセルブックオープン(ファイルB:マクロ無し) WorkBook :=Excel.WorkBooks.Open(FileName :='C:\ … \work.xls' , readOnly := false); //対象エクセルシートセット WorkSheet := WorkBook.WorkSheets['対象シート']; //エクセル内のマクロコール //(ここで、ファイルBの'対象シート'にファイルAの'Make_Sheet'マクロを実行させたいのですが…) // (これではファイルBの先頭シートに実行してしまいます。) try Excel.Run('Macrocheck.xls!Make_Sheet'); except end; WorkBook.close (SaveChanges:=true); //変更を保存してブックファイルを閉じる WorkBook:=unAssigned; //変数開放 WorkSheet:=unAssigned; //変数開放 Excel.Quit; //アプリケーション終了 Excel:=unAssigned; //変数開放 CoUnInitialize(); //Com利用終了 end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.