[ 掲示板に戻る ]

過去ログ閲覧モード

1つのスクリプト内で2度目のエクセル起動がエラーになる / jasmine
弥生ソフトからデータを取り出してエクセルに自動で保存する作業をUWSCでやっています。
2種類のデータを保存するので2つのスクリプトを作成しました。
各々のスクリプトは意図通りに動いてデータ保存できるのですが、
この2つを合わせて1つのスクリプトにしたら2つめのエクセルの保存がCOM_errorでできなくなってしまいます。
こちらの解決法がわかる方、教えていただけたら幸いです。



CLKITEM(id, "新規のExcelファイルに書き出す", CLK_ACC)
CLKITEM(id, "OK", CLK_BTN)
ExlApp = GETACTIVEOLEOBJ("Excel.Application")
ExlApp.visible = True
ExlApp.DisplayAlerts = False
ExlApp.Activeworkbook.saveAs("C:\Users\USER\Desktop\Test1.xlsx")
ExlApp.Activeworkbook.close
EXCEL = XLOPEN("c:\Users\USER\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.xlsb")
EXCEL = XLOPEN("C:\Users\USER\Desktop\Test1.xlsx")
EXCEL.Run("PERSONAL.XLSB!xxx")
ExlApp.Activeworkbook.saveAs("c:\Users\USER\Desktop\Test1.xlsx")
ExlApp.Quit
//XLCLOSE(Excel) //エクセルを閉じる 
id = GETID("弥生販売 ….")
////略///
CLKITEM(id, "新規のExcelファイルに書き出す", CLK_ACC)
CLKITEM(id, "OK", CLK_BTN)
ExlApp = GETACTIVEOLEOBJ("Excel.Application")
ExlApp.visible = True
ExlApp.DisplayAlerts = False
ExlApp.Activeworkbook.saveAs("C:\Users\USER\Desktop\Test2.xlsx")
ExlApp.Activeworkbook.close
ExlApp.Quit
EXCEL = XLOPEN("c:\Users\USER\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.xlsb")
EXCEL = XLOPEN("C:\Users\USER\Desktop\Tes2.xlsx")
EXCEL.Run("PERSONAL.XLSB!YYYの作成")
ExlApp.Activeworkbook.saveAs("c:\Users\USER\Desktop\Tes2.xlsx")
ExlApp.Quit

No.3423 2017/01/25(Wed) 15:35:44
EXCELオートフィルター / ROM
お世話になります。
見よう見まねでEXCELのオートフィルタープログラムを作成しています。
何とかオートフィルターまでは出来たつもりですが、”選択行の数”と”選択行”を取得する方法が解りません。
ググったところ、以下の記述を見つけました。


 選択されているセルのすべての行番号を取得する
  Dim rng As Range

  For Each rng In Selection.Columns
   MsgBox rng.Column
  Next rng

知識不足でUWSCへの適用方法が解りません。
何方かご教示いただければ幸いです。
よろしくお願いします。

参考:オートフィルター
oXL=GetActiveOleObj("Excel.Application")
_Filter="XXX"
_CellNumber="C2"
ColumnNumber = oXL.ActiveSheet.Range(_CellNumber).Column
oXL.ActiveSheet.Range(_CellNumber).AutoFilter(Field:=ColumnNumber, Criteria1:=_Filter)
PRINT oXL.Selection.ROWS.count // 「1」と表示される。

No.3408 2017/01/23(Mon) 12:55:00

Re: EXCELオートフィルター / しき
//フィルタリングの結果を取得する場合は、AutoFilterオブジェクトを使います
oXL=GetActiveOleObj("Excel.Application")
o_filter = oXL.ActiveSheet.AutoFilter //AutoFilterオブジェクト
xlCellTypeVisible = 12

//第一列の Ranges
o_ranges = o_filter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
print o_ranges.Count
print o_ranges.Address

n = GetOleItem(o_ranges)
for i=0 to n -1
  o_range = all_ole_item[i]
  print o_range.Row +" "+ o_range.Address(false, false)
next

msgbox(o_ranges.Count +" 行")

No.3411 2017/01/23(Mon) 16:07:44

Re: EXCELオートフィルター / しき
>フィルタリングの結果を取得する場合は、AutoFilterオブジェクトを使います
少し違いました。
AutoFilterオブジェクト は表の範囲を特定するためだけに使っています

o_ranges = o_filter.Range.
の部分は、例えば以下のようにも書けます
o_ranges = oXL.ActiveSheet.Range("C2").CurrentRegion.
o_ranges = oXL.ActiveSheet.Range("A1:C15").

肝は表示行だけを得るための、.SpecialCells(xlCellTypeVisible) です

参考URL
Office TANAKA - Excel VBA Tips[オートフィルタを使い倒す]
http://officetanaka.net/excel/vba/tips/tips155d.htm

No.3415 2017/01/23(Mon) 17:54:05

Re: EXCELオートフィルター / ROM
しき様

ありがとうございます。
お陰様で出来ました!!

No.3422 2017/01/24(Tue) 21:10:56
SHIFTARRAY / SHINJI
SHIFTARRAY関数の引数にSAFEARRAY型の配列変数は使えないのでしょうか?
No.3399 2017/01/22(Sun) 05:27:36

Re: SHIFTARRAY / routa
使えますよ。
d = SAFEARRAY(0, 5)
for i=0 to 5
d[i]=i
next
SHIFTARRAY(d, -2)
for i=0 to 5
print d[i]
next

No.3404 2017/01/22(Sun) 22:41:30

Re: SHIFTARRAY / SHINJI
なるほど動きますね!
一次元配列なら可能で、二次元配列の場合はむりなんでしょうか?
二次元配列のSAFEARRAY型の配列変数を引数にして試していて、それだと動かなくて。

No.3413 2017/01/23(Mon) 17:41:09

Re: SHIFTARRAY / routa
行ごとに一次元配列で指定しましょう。
d = SAFEARRAY(0,1, 0,5)
for i = 0 to 1
SHIFTARRAY(d[i], -2)
next

No.3420 2017/01/23(Mon) 23:34:56

Re: SHIFTARRAY / SHINJI
そういうことだったんですね!
ありがとうございます!

No.3421 2017/01/24(Tue) 01:26:34
なぜか止まる / SHINJI
行数が1103がプリントされた時点で動きが止まってしまいます。型があってないorオーバーフロー
初期値を1000、終了値を1300などとした時も、1103がプリントされた時点で動きが止まってしまいます。
別のスクリプトでは、最終行まで処理をしていたと記憶しているのですが、これはなぜ止まるのでしょうか?
このファイルは4312行あります。

fail="データ 一覧表1.CSV"
fid = FOPEN(fail, F_READ or F_WRITE)  
行数=FGET(fid, -1)
print 行数
print fail
print fid
For 行 = 1 to 行数
print 行
dat=FGET( fid, 行, 16,true )*2.204 //型があってないorオーバーフロー
FPUT(fid,dat,行,23)
next
FCLOSE(fid)

No.3414 2017/01/23(Mon) 17:53:39

Re: なぜか止まる / 俄プログラマー
データ 一覧表1.CSVのファイルの1103行目のデータが文字か空白行等で数値ではないのでは?
No.3416 2017/01/23(Mon) 18:06:48

Re: なぜか止まる / SHINJI
その通りでした!
失礼しました!

No.3417 2017/01/23(Mon) 18:45:38
倍速指定はできますか / カルロス
2倍速、3倍速、10倍速のように、実行速度を変化させることはできますか。
昔、Win98時代にFマクロ(だったかな)を使っていて、似たフリーソフトにようやく巡り会えてうれしく思っています。

No.3394 2017/01/20(Fri) 10:39:54

Re: 倍速指定はできますか / 俄プログラマー
出来る出来ないの答えであればできます。
但し標準の機能ではないです。

No.3395 2017/01/20(Fri) 12:06:39

Re: 倍速指定はできますか / カルロス
標準でないやり方が難しいものでなければ教えてください。
No.3396 2017/01/20(Fri) 17:40:09

Re: 倍速指定はできますか / 俄プログラマー
SLEEPに入れる値を変数にすれば良いですよ。
待ち時間が変わる=実行速度の変化

No.3397 2017/01/20(Fri) 19:52:36

Re: 倍速指定はできますか / カルロス
待ち時間が変わったぐらいですと、10倍速のような高速の変化は期待できないように思うのですが。
質問の趣旨は、例えばマウスの移動を記録したとして、そのマウスの移動速度が2倍速、3倍速、10倍速になるように変化させる設定が可能かどうか、です。

No.3400 2017/01/22(Sun) 10:26:22

Re: 倍速指定はできますか / 俄プログラマー
既に回答している通りです。
標準の機能で2倍速で再生などのようなものはありません。
ただ
>2倍速、3倍速、10倍速のように、実行速度を変化させることはできますか
の質問に対しては「工夫」する事で実現可能なわけです。
具体的な例が欲しいのであれば下記の通り
これがご不満であれば他のマクロソフトを探された方がよろしいかと思います。

速度 = 1 //2倍速の時は2
for i = 1 to 10
  print "test"
  SLEEP(1/速度)
next

No.3401 2017/01/22(Sun) 16:54:03
スケジュール設定が時々消えてしまいます / 小市民
平日の決まった時間に自動実行をするのに、使わせていただいております。
ところが、1月に1回ぐらいの割合で、設定しているスケジュール設定が消えてしまい、
自動実行ができないという現象が起こっております。
最初は、当方の操作ミスか、ウインドウズのアップデート、ウイルスソフトによるものではないかと思い。各種設定を自動更新から手動に切り替えておりますが、先日また、スケジュール設定が消えてしまいました。
何か良い方法はございませんでしょうか?

使用環境
windows10 pro 32bit
UWSC Ver5.2.3.0

No.3380 2017/01/14(Sat) 16:19:45

Re: スケジュール設定が時々消えてしまいます / koi
同じ現象を何度か経験してますが
(UWSC以外のINIファイルの破損は見たことない)
定期的に設置をバックアップしておくなどの対策しかないかと思います

-------------追記
UWSC掲示板  という意味からはそれた回答になりますが
どうしてもスケジューリングで動かなければ困るとかいったことがあるのであれば
OSのタスクスケジューラでの実行も視野に入れたほうがよろしいかと思います
(私も一部 UWSCのスケジュールから移行したものがあります)

No.3382 2017/01/15(Sun) 02:50:37

Re: スケジュール設定が時々消えてしまいます / しゅん
私はスケジュールを使っていないので、今の所アドバイスできませんが、複数報告があるなら、興味があります。

興味本位で申し訳ないですが、できたら質問に回答していただけると嬉しいです。
1. 消えた際、UWSC.INIは存在するか?
2. UWSC.INIの内容は、スケジュール部分のみが消えるのか?(他項目も変更している場合それは残るのか?)
3. ファイル更新日付はどうなっているか(できれば、スケジュール設定後更新日付をメモ。消えた後の更新日付がどうなっているか)
4. UWSCやUWSC.INIのあるディスクは、Windowsの入っているディスクか?(外付けだったりしないか)

あたりが気になるところです。
あとは、イベントログにDiskのエラーがあったりとかは、、、ないですよね?

No.3383 2017/01/16(Mon) 20:47:03

Re: スケジュール設定が時々消えてしまいます / koi
あくまで私の場合の話で覚えてる範囲での話ですが
UWSC.INIは存在していました というかそれまでのものが消えて
新規作成されている様な状況だったと思います
気が付くのはスケジューラではなくてランチメニューが全部消えてて
(ボタンに何も登録(表示)されてないのですぐわかる)
INIファイル見るとスケジュールも消えている  という状況です
  個人的な重要度も ランチメニュー > スケジューラ

OS起動時にUWSCも同時起動でそのままタスクトレイに入れぱなしにしてるうえ
登録スケジュールもそれほど多いわけではないので
一番で気が付くのがランチメニューになります (UWSCは管理者実行してます)
  
ただ今思えば表示位置などが初期化されていなかったようにも思うので
完全に初期化  ということでもなかったかもしれません
   また消えちゃったよ   位で再編集してしまったので・・・
   
INIファイルの場所は標準のままで
本体含め全てWindowsと同一ドライブ上に存在します
その際特にエラーが起こっていたような気配はありませんでしたが
イベントログや作成日まで気にしたことは無い というのが正直な処です
DISK異常はありません

UWSC 4.9a あたりからちょこちょこ使っていますが
これまでに数回本現象を経験しています
  バージョンアップのタイミングで消えた記憶はありませんが
  PC再起動で消えた記憶はあります

その意味では元投稿者さんのように
最新バージョンで経験してるという意味ではありませんし
発生頻度的にもかなりの違いがあり明確な環境情報を開示できません
(以下の組み合わせで経験)
UWSC 4.9c以降
OS  Win7/32bit/64bit  Win10 64bit

No.3384 2017/01/17(Tue) 00:46:59

Re: スケジュール設定が時々消えてしまいます / しゅん
koiさんの状況からすると、uwsc.exe起動中に、uwsc.iniが消える、というところのようですね。
PC再起動で消えたのは、
1. UWSC.INIが存在する状態で、PC起動。UWSC.exe起動、UWSC.INI読込
2. なんらかの原因でUWSC.INIが消える。ランチメニューは読込済みのため無事
3. PC再起動開始。UWSC.exe終了時に座標書き込み。INIがないので再作成
4. PC再起動完了。UWSC.exe起動、INIがないのでメニュー初期化
という流れに見えます。推測ですが。

となると、UWSC.INIが消えた理由は、、、さっぱりわかりませんね。
犯人も絞れませんし、、、。
ただ、UWSC.exeが消す事故は更新時に起きそうなので、起動中に消えるとすると犯人である可能性は低そうに思えます。
他に犯人がいそうですね。なんでしょうねぇ、、、。

No.3386 2017/01/17(Tue) 20:56:14

Re: スケジュール設定が時々消えてしまいます / koi
PC再起動で消えた  とは書きましたが
確かに実際いつ書き換わったのかはわからないんですよね
  再起動でファイルが読み直されてそこで気が付いてるだけという話なので

常にそれを気にして使ってるわけにもいかないし
原因がどこにあるか調べるより バックアップでも作ったほうが現実的だな
って考えになってます

私の環境では
iniファイルに関しては設定が消えるのはUWSC限定
(実は他にあるのかもだが明確に判明してるのはこれだけ)
ですが設定が壊れたことがあるアプリという意味では
他に radicool のスケジュール予約設定があります
  −>これもある時突然それだけが壊れることを過去数回経験
両方ともOS起動と同時に起動で後はタスクトレイに放置のまま
といった使い方は同じですが因果関係含め原因はさっぱりわかりません

No.3387 2017/01/18(Wed) 07:48:13

Re: スケジュール設定が時々消えてしまいます / しろまさ
直接は関係ないですが経験上の話を一つ。

アプリは終了時に設定書込みすることが多いですよね。

次に、PCをシャットダウンする際に
「〜が原因でシャットダウン出来ません。強制終了しますか?」
のメッセージをYES実行するとアプリが強制終了されます。
ここでファイルが壊れるという現象が、
ポータブルHDに入れたThunderBirdで頻発したことがありまして、
他人の行動なので原因究明に時間が掛かりました。

対策はアプリを先に終了させてからもしくは
USBの安全な取り外しを実行してからシャットダウンすればいいだけでした。

参考までに。

No.3393 2017/01/20(Fri) 08:59:31
画像認識でのファイル名 / kon
画像認識を使うときにファイル名を入力しますが、それを変数で入力するようなことはできないでしょうか?
画像ファイル名が1〜10まであり、ファイル名以外同じ処理をする場合にそれぞれのファイル名で作ると修正や追加するのが大変なのでやり方があればお教え願います。

No.3388 2017/01/19(Thu) 08:12:46

Re: 画像認識でのファイル名 / stuncloud
> 画像認識を使うときにファイル名を入力しますが、それを変数で入力するようなことはできないでしょうか?
できますよ、というかそのくらいは実際に試してみればすぐわかるのでは…

> やり方があればお教え願います。
繰り返しの作業を行う場合はfor、while、repeat等のループを使います
以下に例を示します

ファイル名が1から10の連番だというのならforを使うのが楽ですね

// gazou1.bmp〜gazou10.bmpまでで処理を繰り返す
for i = 1 to 10
 filepath = "C:\path\to\gazou" + i + ".bmp"
 if chkimg(filepath) then
  DoSomething()
 endif
next

あとは連番じゃなくても特定のフォルダに入ってる画像全部で処理を行うとかならgetdir()でできますね
こっちの場合画像の名前は適当で良くなります

folder = "C:\path\to\bmpfolder\"
// 対象フォルダ内のBMPファイルを列挙してそれぞれに対して処理を行う
for name in getdir(folder, "*.bmp")
 filepath = folder + name
 if chkimg(filepath) then
  DoSomething()
 endif
next

No.3389 2017/01/19(Thu) 10:29:18

Re: 画像認識でのファイル名 / kon
回答ありがとうございます。
済みません、やってはみたんですが記述の仕方が間違っていたようでうまくいかなかったので質問させていただきました。
以後、もう少ししっかり確認してから質問するように気を付けます。

ありがとうございました。

No.3391 2017/01/19(Thu) 12:03:30
getactiveoleobjを使ってのエクセルの操作 / たけ
お世話になっております。
getactiveoleobjを使ってのエクセルの操作について
過去の掲示板(No.1994 2015/12/29(Tue) 23:38:13)に不具合として載っていましたが、
同様の現象が発生しました。

「管理者として実行」で起動すると発生し、再現性があります。

(UWSC Pro Ver5.2.3)

No.3368 2017/01/12(Thu) 00:48:27

Re: getactiveoleobjを使ってのエクセルの操作 / routa
http://www.uwsc.info/faq.html#N29
エクセルを管理者モードにしたのならuwscも管理者モードにしましょう。

No.3374 2017/01/12(Thu) 21:28:33

Re: getactiveoleobjを使ってのエクセルの操作 / たけ
routaさま
返信 ありがとうございました。
私の場合は、「アプリが一般ユーザの場合には、UWSCも管理者権限ではなく一般ユーザにしてみてください」が該当していました。
→UWSCをEXE化したものを「管理者として実行」で起動してしまったようです。

No.3390 2017/01/19(Thu) 11:11:00
APIを活用したい 初心者 / SHINJI
// Yahoo!検索Webサービスの利用  #N43

url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=YahooDemo&"
key = "高校野球" // 検索文字
xml = GetRXML(url + "query=" + Encode(Encode(key, CODE_UTF8), CODE_URL))
wkp = xml.getElementsByTagName("Result")
for i = 0 to wkp.Length-1
print wkp.item[i].childNodes.item[0].text // Title
print wkp.item[i].childNodes.item[1].text // Summary
print wkp.item[i].childNodes.item[2].text // Url
print
next

// ResponseXMLの取得
Function GetRXML(url)
oHttp = CreateOLEObj("MSXML2.XMLHTTP")
oHttp.Open("GET", url, 0)
oHttp.Send
Result = oHttp.responseXML
Fend
-------------------------------------------------------------------
AmzonMWSのAPIを活用したいと思い、uwscでAPIを使う方法を模索中です。
上記のサンプルスクリプトを変形させながら、チャレンジしようと思ったのですが実行できませんでした。


oHttp.Send

のところで例外が発生したとなります。
原因は何でしょうか?

No.3371 2017/01/12(Thu) 18:31:33

Re: APIを活用したい 初心者 / stuncloud
sendはメソッドなので()付けましょう
oHttp.Send()

あとリクエスト本文を送る場合はSend()に引数として渡します
oHttp.Send(Body) // 変数Bodyにリクエスト本文が入ってるものとします

No.3372 2017/01/12(Thu) 18:45:48

Re: APIを活用したい 初心者 / しろまさ
ドメインが変わったらしいですよ。
http://searchblog.yahoo.co.jp/2008/08/yahooyahoowebapi.html

V2も在るみたいですね(2011年記事)
http://codenote.net/yahoo/117.html

No.3373 2017/01/12(Thu) 18:57:30

Re: APIを活用したい 初心者 / SHINJI
url = "http://jlp.yahooapis.jp/FuriganaService/V1/furigana?appid=(ヤフーのアプリケーションID)&sentence=%E6%98%8E%E9%8F%A1%E6%AD%A2%E6%B0%B4"

key = "高校野球" // 検索文字
xml = GetRXML(url + "query=" + Encode(Encode(key, CODE_UTF8), CODE_URL))
wkp = xml.getElementsByTagName("Result")
for i = 0 to wkp.Length-1
print wkp.item[i].childNodes.item[0].text // Title
print wkp.item[i].childNodes.item[1].text // Summary
print wkp.item[i].childNodes.item[2].text // Url
print
next

// ResponseXMLの取得
Function GetRXML(url)
oHttp = CreateOLEObj("MSXML2.XMLHTTP")
oHttp.Open("GET", url, 0)
oHttp.Send()
Result = oHttp.responseXML
Fend
--------------------------------------------------------
stuncloudさん、しろまさ さん、ありがとうございます。
少し前進しました。
ヤフーに頼んで発行してもらう(ヤフーのアプリケーションID)がいるんですね。
それと、urlのところをヤフーのサイトに載っていたものを使ってみました。
上記のスクリプトで、下記のような反応がありました↓↓
明鏡止水 めいきょうしすい meikyousisui query = 高校 こうこう koukou 野球 やきゅう yakyuu

そして、下記の箇所で、COM_Errorが起きました。
print wkp.item[i].childNodes.item[1].text // Summary

反応があれば何かつかめるかと思ったんですが。
UWSCでAPIを使うにあたって知っておかないといけない概念とか知識はどこでわかりますか?
あと、uwscでAPIを使っているサンプルはどこかにもっとないでしょうか?
ほかの言語での使用例はよく見かけるんですが。

No.3375 2017/01/13(Fri) 01:04:34

Re: APIを活用したい 初心者 / stuncloud
> UWSCでAPIを使うにあたって知っておかないといけない概念とか知識はどこでわかりますか?

先ずはMSXML2.XMLHTTPの使い方を覚えましょう

次にAPIの仕様を把握する必要があります

> AmzonMWSのAPIを活用したい
という目的が今回の目的なので、yahooのAPIをいくら試しても意味があまりないです
AmzonMWSとyahooのAPIでは仕様が異なるからです
AmzonMWSの仕様をきちっと学ばなければなりません

AmzonMWSについては以下を読み込む必要があるでしょう
https://developer.amazonservices.jp/gp/mws/docs.html

APIにもよりますが、認証の仕方は先ずしっかり把握する必要があります
APIキーをヘッダやURLに含めるといった単純なものだったり、oAuthを使うものだったり

あとは送受信するデータの扱いですね
基本はjsonだったりxmlだったりの文字列を送って文字列を受けるだけなんですが、文字列のままだと扱いにくいのでオブジェクトに変換して使うといった工夫が必要です
XMLならMicrosoft.XMLDOMを使う、とか
先のyahooのサンプルにあるようにXMLが返る場合はresponseXMLを使うとXMLオブジェクトで返してくれますね
jsonであればそれを扱えるモジュールを公開してます
https://gist.github.com/stuncloud/38786fec654b0522839ca764aa6c97d8

> あと、uwscでAPIを使っているサンプルはどこかにもっとないでしょうか?
> ほかの言語での使用例はよく見かけるんですが。


WebAPIでやること自体はhttpリクエストを送るだけなので、実のところ言語に依存する部分はあまりないです
だから多言語でも参考にはできるはずなんですよね
(ただ、WebAPIをラップしたクラスモジュールなんかが提供されててそれを使っているサンプルだったりする場合は例外ですが)

・送信先のURL (API)
・送信時のメソッド (getとかpostとかputとか)
・ヘッダ (APIキーを埋め込んだりする)
・送るデータの形式と内容
・返ってくるデータの形式と内容

このあたりが読み取れるサンプルが見つかれば参考になると思います

amazonではないので直接の参考にはなりませんが、WebAPIを使っているサンプルということであれば過去にここで投下したgmailのものがあります
https://gist.github.com/stuncloud/775042e3149e8aa8a45f

No.3376 2017/01/13(Fri) 12:30:14

Re: APIを活用したい 初心者 / SHINJI
stuncloud さん ありがとうございます。
私の中で漠然とあった疑問を言語化してもらったので、無駄なく取り組んでいけそうです。
説明のプロですね。
ひとつずつクリアしていきたいと思います。

No.3379 2017/01/13(Fri) 16:54:55
エキサイトでログインする際のログインボタンを押したい / ねも
いつもお世話になっております。

エキサイトのログイン画面
https://ssl2.excite.co.jp/idc/login/?si=extop&ru=http%3A%2F%2Fwww.excite.co.jp
からログインする際のログインボタンを画像認識以外で押したいです。

現在押せている方法は
IE.Navigate("https://ssl2.excite.co.jp/idc/login/?si
=extop&ru=http%3A%2F%2Fwww.excite.co.jp",0,"",
Encode("_qf__loginForm=&_token=c1960b817375cd8980d2467ad69aa190db14ca80&si=extop&sc=idc&k=
a937fd47e444cc2820308904f2ae2a6e9c8b87f13252ce202635078e1c603db5&mode
=_login&loginid=ここにログインID
&password=ここにパスワード
&omitlogin=1&_submit=",CODE_BYTEARRAY),
"Content-Type: application/x-www-form-urlencoded<#CR>")
のみです。

この方法だと、URLの中のログインIDとパスワードを変数にするとログインボタンを押すことができず、ログインIDとパスワードが変わるたびにURLを書き換えないとログインボタンが押せないので不便です。

他に試した方法は
IESetData(IE,true,"_submit" )
IELINK(IE,"ログイン")
IE.Document.links[fa].Click()→faは0〜20まで見ました
ですが、どれもログインボタンは押せませんでした。

何卒、ご教授をよろしくお願いいたします。

No.3364 2017/01/11(Wed) 15:43:10

Re: エキサイトでログインする際のログインボタンを押したい / stuncloud
> URLの中のログインIDとパスワードを変数にするとログインボタンを押すことができず


loginid = "ここにログインID"
password = "ここにパスワード"
"_qf_(略)&loginid=" + loginid + "&password=" + password + "&omitlogin=1&_submit="
としたんじゃだめですか?

それはそれとして、ログインボタンを押すだけなら以下でできました

for elem in ie.document.getElementsByName("_submit")
 if elem.innerText = "ログイン" then
  elem.click()
  break
 endif
next

X-UA-CompatibleがIE=EmulateIE7になってたのでquerySelector使えないんですねここ!

No.3365 2017/01/11(Wed) 18:38:17

Re: エキサイトでログインする際のログインボタンを押したい / ねも
stuncloud様

ご教授ありがとうございます。

さっそく実行させていただいたのですが

=が無い
for elem in ie.document.getElementsByName("_submit")

とエラーが出てしまいます。
どうしたらよいのでしょうか。

No.3366 2017/01/11(Wed) 19:35:48

Re: エキサイトでログインする際のログインボタンを押したい / ねも
もしかして、UWSCではないのでしょうか…
No.3367 2017/01/11(Wed) 19:38:16

Re: エキサイトでログインする際のログインボタンを押したい / satocha
uwscのバージョンが古いのでは?for in 構文が追加されたのはver5以降だったような気がします。
getOleItem(ie.document.getElementsByName("_submit"))
len =length(All_Ole_Item)
for i=0 to len - 1
 elem=All_Ole_Item[i]
 if elem.innerText = "ログイン" then
  elem.click()
  break
 endif
next

No.3369 2017/01/12(Thu) 07:04:43

Re: エキサイトでログインする際のログインボタンを押したい / stuncloud
satochaさんフォローありがとうございます

> =が無い
> for elem in ie.document.getElementsByName("_submit")


が出るのはfor-inのない古いバージョンのUWSCを使われていることが原因です
なるべく最新版を使ってください

No.3370 2017/01/12(Thu) 10:08:45

Re: エキサイトでログインする際のログインボタンを押したい / ねも
stuncloud様、satocha様
ご教授いただきありがとうございます。

さっそく試させていただきます。
結果が出ましたらご報告させていただきます。

No.3377 2017/01/13(Fri) 14:06:39

Re: エキサイトでログインする際のログインボタンを押したい / ねも
お世話になっております。

satocha様にご教授いただいたスクリプトを実行したところ

COM_Error:例外が発生しました
getOleItem(ie.document.getElementsByName("_submit"))

と表示されてしまったので、自分なりに「getElementsByName」等について調べた結果以下の内容でログインボタンを押すことができました。

IE.document.getElementsByName("_submit").Item[0].click()

正直、なぜ押せたのかよくわからないため、引き続き調べたいと思います。
satocha様、stuncloud様、このたびは、ご教授いただき誠にありがとうございました。

No.3378 2017/01/13(Fri) 16:38:55
全896件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 90 >> ]