|
EXCEL1 = CREATEOLEOBJ("Excel.Application")を開いていたらGETACTIVEOLEOBJで処理、そうでない場合はCREATEOLEOBJで処理というコードを書きたいのですが、条件式の書き方が分かりません。どういう風に書けば良いでしょうか? 下記がコードです。
if 条件式 then EXCEL1 = GETACTIVEOLEOBJ("EXCEL.Application","Microsoft Excel - Book2.xls [互換モード]") WHILE IEGETDATA(IE1,"TAG=h3",cnt ) <> EMPTY data1=IEGETDATA(IE1,"TAG=h3",cnt) XLSETDATA(EXCEL1, data1, "a"+cnt) data2=IEGETDATA(IE1,"TAG=table",cnt) XLSETDATA(EXCEL1, data2, "b"+cnt) cnt = cnt + 1 WEND else EXCEL1 = CREATEOLEOBJ("Excel.Application") EXCEL1.visible = True EXCEL1.WorkBooks.Open(FileName :=path1) WHILE IEGETDATA(IE1,"TAG=h3",cnt ) <> EMPTY data1=IEGETDATA(IE1,"TAG=h3",cnt) XLSETDATA(EXCEL1, data1, "a"+cnt) data2=IEGETDATA(IE1,"TAG=table",cnt) XLSETDATA(EXCEL1, data2, "b"+cnt) cnt = cnt + 1 WEND
endif
|
No.3021 2016/10/11(Tue) 11:10:08
|
☆ Re: CREATEOLEOBJとGETACTIVEOLEOBJの条件式の書き方について / シスイ |
|
|
id=getid("Microsoft Excel - Book2.xls [互換モード]","XLMAIN") ifb id=1 then 上記を加えて試しても、サイト上でスクリプト起動するとエクセルファイルが2つ開いて、1つ目はデータの出力はされますが、なぜか2つ目のエクセルファイルも開いてしまいます。 エクセルファイルを開いている状態でスクリプト起動してもGETACTIVEOLEOBJでやっているのに、既存のエクセルに出力せず、path1のエクセルが新ウィンドウとして開いてしまいます。 既存エクセルとして判定してデータ出力する方法ないでしょうか?
cnt=1 path1="C:\Users\aruke\Desktop\Book2.xls" id=GETID(GET_ACTIVE_WIN) 変数=STATUS( id,ST_TITLE) IE1 = GETACTIVEOLEOBJ("InternetExplorer.Application",変数) EXCEL1 = CREATEOLEOBJ("Excel.Application") EXCEL1.visible = True EXCEL1.WorkBooks.Open(FileName :=path1) //XLACTIVATE( Excel1, "Sheet2")
WHILE IEGETDATA(IE1,"TAG=h3",cnt ) <> EMPTY data1=IEGETDATA(IE1,"TAG=h3",cnt) XLSETDATA(EXCEL1, data1, "a"+cnt) data2=IEGETDATA(IE1,"TAG=table",cnt) XLSETDATA(EXCEL1, data2, "b"+cnt) cnt = cnt + 1 WEND
id=getid("Microsoft Excel - Book2.xls [互換モード]","XLMAIN")
ifb id=1 then EXCEL1 = GETACTIVEOLEOBJ("EXCEL.Application","Microsoft Excel - Book2.xls [互換モード]") WHILE IEGETDATA(IE1,"TAG=h3",cnt ) <> EMPTY data1=IEGETDATA(IE1,"TAG=h3",cnt) XLSETDATA(EXCEL1, data1, "a"+cnt) data2=IEGETDATA(IE1,"TAG=table",cnt) XLSETDATA(EXCEL1, data2, "b"+cnt) cnt = cnt + 1 WEND else EXCEL1 = CREATEOLEOBJ("Excel.Application") EXCEL1.visible = True EXCEL1.WorkBooks.Open(FileName :=path1) WHILE IEGETDATA(IE1,"TAG=h3",cnt ) <> EMPTY data1=IEGETDATA(IE1,"TAG=h3",cnt) XLSETDATA(EXCEL1, data1, "a"+cnt) data2=IEGETDATA(IE1,"TAG=table",cnt) XLSETDATA(EXCEL1, data2, "b"+cnt) cnt = cnt + 1 WEND
|
No.3022 2016/10/11(Tue) 11:53:12
|
|
☆ Re: CREATEOLEOBJとGETACTIVEOLEOBJの条件式の書き方について / しろまさ |
|
|
Try XL = GetActiveOleObj("Excel.Application") Except XL = CreateOleObj("Excel.Application") EndTry
GetでエラーしたらCreate。
|
No.3024 2016/10/11(Tue) 12:52:09
|
|
☆ Re: CREATEOLEOBJとGETACTIVEOLEOBJの条件式の書き方について / しろまさ |
|
|
id=GETID(GET_ACTIVE_WIN) してるから、
id=getid("Microsoft Excel - Book2.xls [互換モード]","XLMAIN") では id=2 になってるのでは?(uwsc id は使った回数の連番)
評価式は ifb id>0 が妥当かと。(これも変数を確認すれば済む話)
|
No.3025 2016/10/11(Tue) 13:10:25
|
|
☆ Re: CREATEOLEOBJとGETACTIVEOLEOBJの条件式の書き方について / シスイ |
|
|
しろまさ様、いつもありがとうございます。 下記のコードの意味が分かりません。ググってしてみると、実行時エラーが起きた時に実行されるとありますが、どうつかうのかがいまいち分かりません。
Try XL = GetActiveOleObj("Excel.Application") Except XL = CreateOleObj("Excel.Application") EndTry
GetでエラーしたらCreate。
|
No.3034 2016/10/13(Thu) 22:40:09
|
|
☆ Re: CREATEOLEOBJとGETACTIVEOLEOBJの条件式の書き方について / シスイ |
|
|
しろまさ様、id=getid("Microsoft Excel - Book2.xls [互換モード]","XLMAIN") では id=2 にたしかになってました。 EXCEL1 = GETACTIVEOLEOBJ("EXCEL.Application",ida)のidaの変数にするとうまくいきましたが、これを直接タイトル入力だとなぜかうまくいきませんでした、このような感じです。EXCEL1 = GETACTIVEOLEOBJ("EXCEL.Application","Microsoft Excel - Book2.xls [互換モード]")
cnt=1 path1="C:\Users\aruke\Desktop\Book2.xls" id=GETID(GET_ACTIVE_WIN) 変数=STATUS( id,ST_TITLE) IE1 = GETACTIVEOLEOBJ("InternetExplorer.Application",変数)
ida=getid("Microsoft Excel - Book2.xls [互換モード]","XLMAIN")
ifb ida>0 then EXCEL1 = GETACTIVEOLEOBJ("EXCEL.Application",ida) WHILE IEGETDATA(IE1,"TAG=p",cnt ) <> EMPTY data1=IEGETDATA(IE1,"TAG=p",cnt) XLSETDATA(EXCEL1, data1, "a"+cnt) data2=IEGETDATA(IE1,"TAG=table",cnt) XLSETDATA(EXCEL1, data2, "b"+cnt) cnt = cnt + 1 WEND else
EXCEL1 = CREATEOLEOBJ("Excel.Application") EXCEL1.visible = True EXCEL1.WorkBooks.Open(FileName :=path1) WHILE IEGETDATA(IE1,"TAG=p",cnt ) <> EMPTY data1=IEGETDATA(IE1,"TAG=p",cnt) XLSETDATA(EXCEL1, data1, "a"+cnt) data2=IEGETDATA(IE1,"TAG=table",cnt) XLSETDATA(EXCEL1, data2, "b"+cnt) cnt = cnt + 1 WEND
endif
|
No.3035 2016/10/13(Thu) 22:46:39
|
|
☆ Re: CREATEOLEOBJとGETACTIVEOLEOBJの条件式の書き方について / 俄プログラマー |
|
|
>どうつかうのかがいまいち分かりません。
ヘルプファイルは見ない方ですか? 解りやすい例がありますよ。
|
No.3036 2016/10/14(Fri) 00:14:50
|
|
☆ Re: CREATEOLEOBJとGETACTIVEOLEOBJの条件式の書き方について / しろまさ |
|
|
>どうつかうのかがいまいち分かりません。
使ってみれば解りますよ。
ポイントは、オブジェクトが存在しないときに Get を使うとエラーを起こすということです。 その挙動を利用して条件判断をすれば良いわけで・・後は自分で考えましょう!
|
No.3038 2016/10/14(Fri) 09:01:28
|
|