akaired
あなたも質問に答えられます!
ウォッチリストに追加
- 状態:終了
- 回答数:1 / 5件
- 回答ポイント:60ポイント
- 登録:2009-10-30 20:35:58
- 終了:2009-11-06 20:40:02
- カテゴリー:
コンピュータ
GETACTIVEOLEOBJでは、Excelファイル名に関係なく、Excelオブジェクトが取り出されているようです。
特定のExcelに対して操作するには、Excel内で指定してあげる必要があります。
UWSCのサンプルからコーディングされていると思いますので、今は多分下記のようなプログラムになっていると思います。
EXCEL = GETACTIVEOLEOBJ("Excel.Application","Microsoft Excel - abc.xls") With EXCEL.ActiveSheet for y = 1 to 5 // A列をB列へコピーのサンプル .Cells[y,2].Value = .Cells[y,1].Value next EndWith
このプログラムだと、現在のアクティブなExcelに対して操作することになるので、指摘のようにBook1.xlsやxyz.xlsでも動いてしまいます。
対処方法として、3つあると思います。
案1.裏にあるExcelに対してそのまま操作する方法
案2.裏にいたなら、無理に表にしてしまう方法
案3.動かさずにエラーにしてしまう方法
どれを行いたいのか分からなかったので、3つ載せておきました。
//案1.裏にあるExcelに対してそのまま操作 EXCEL = GETACTIVEOLEOBJ("Excel.Application") Workbook = EXCEL.WorkBooks("abc.xls") With WorkBook.WorkSheets[1] for y = 1 to 5 // A列をB列へコピーのサンプル .Cells[y,2].Value = .Cells[y,1].Value next // .Range["B:B"].Value = .Range["A:A"].Value //全行ならこれでもOK EndWith
//案2.裏にいたなら、無理に表にしてしまって処理 EXCEL = GETACTIVEOLEOBJ("Excel.Application") EXCEL.WorkBooks("abc.xls").Activate With EXCEL.ActiveSheet for y = 1 to 5 // A列をB列へコピーのサンプル .Cells[y,2].Value = .Cells[y,1].Value next EndWith
//案3.動かさずにエラーにしてしまう CONST FileName = "abc.xls" EXCEL = GETACTIVEOLEOBJ("Excel.Application") IFB EXCEL.ActiveWorkbook.Name <> FileName Then MsgBox(FileName + "ではありません") EXIT EndIF With EXCEL.ActiveSheet for y = 1 to 5 // A列をB列へコピーのサンプル .Cells[y,2].Value = .Cells[y,1].Value next EndWith
私もたまにUWSCを使います。
でも、今回の例のようにExcel主体であれば、UWSCよりWSHのほうが適しているような感じがします。
Uスクリプト:COM_Error:例外が発生しました。X行目:Workbook = EXCEL.WorkBooks("abc.xls")というメッセージが表示されて途中で止まってしまいます。変数を変えたりしましたが、これより先にすすめません。どうしたらよいでしょうか?EXCEL.WorkBooks.Open("abc.xls")でも同じメッセージが表示されました。
おとなり質問
この質問・回答へのコメント
>Uスクリプト:COM_Error:例外が発生しました。X行目:Workbook = EXCEL.WorkBooks("abc.xls")というメッセージが表示されて途中で止まってしまいます
Excelを起動するところまでは、回答には記載しませんでしたので、Excel起動もUWSCで行っているなら、起動のところまではご自分で作成されたスクリプトで行ってみてください。
上記のCOM_Errorは、abc.xlsが開かれていないときに出ます。
1.abc.xlsを起動。
2.A列にデータを記入。
3.UWSC実行。
4.B列にデータをコピー
とあったので、1と2は手動で行うものと思っていました。
abc.xlsが起動されていれば、UWSCで案1,2,3とも動くことを確認してあります。
Excelを起動するところまでは、回答には記載しませんでしたので、Excel起動もUWSCで行っているなら、起動のところまではご自分で作成されたスクリプトで行ってみてください。
上記のCOM_Errorは、abc.xlsが開かれていないときに出ます。
1.abc.xlsを起動。
2.A列にデータを記入。
3.UWSC実行。
4.B列にデータをコピー
とあったので、1と2は手動で行うものと思っていました。
abc.xlsが起動されていれば、UWSCで案1,2,3とも動くことを確認してあります。
最終的にうまく動きましたでしょうか?
うまく動きました!ありがとうございます!
60ポイント

