個人的に必要だったUWSCのコマンドや解決策、ソースコードなど

uwscヘルプファイル PC関係

UWSCを少し使ってみた。便利。詰まった所など、忘れないように忘備録的なテキスト郡。

 

詰まったとき、わからないとき

ウェブで検索する前に、とりあえずヘルプを読む。関数名などを検索。フォルダ内のuwsc.chm

uwscヘルプファイル

 

何故かIESETDATAが使えないときの代用方法

SENDSTR( ID, 入力したい文字列 , 左上から数えた入力したいエディトコントロールの順番)

 

(IESETDATAが使えないときの)送信方法

SCKEY( ID, VK_ENTER)

→エンターキーで入力。

 

IELINK( IE, "リンク表示文字" ,true)

→ボタンをクリック。ボタンに”送信する”と書いてあったら、第2引数に”送信する”と入力。

 

IESETDATAでボタンをクリックする方法

→ボタンがinput要素、name属性のもの

IESETDATA(IE,1,"name属性の名前")

 

指定したWEBページのBODYの取得

body = IEGETSRC(IE, "BODY")
※bodyは変数

 

特定のタグ以下の文章(classタグ等)を取得

body = Copy(body, Pos("<div class",body), 取得する文字数)

 

取得したい要素を狭い範囲で取得

変数=BetweenStr(body,"取得したい文字列の開始地点","終点",(複数ある場合は)繰り返し処理のカウント変数)

 

取得した文字列に邪魔な文字が入ってしまう場合

変数 = REPLACE(変数,"消去したい文字列", "")

 

文字列の結合

文字列の結合は+(プラス)
“文字列”+”文字列”

 

ウィンドウを指定する。(操作したいウィンドウのIDを取得)

変数= GETID("指定したいウィンドウのタイトル。", 待ち時間秒)
※タイトルは一部分でも可能。このブログを指定するなら”サイヤ人乙”や”サイヤ”など。
※待ち時間は-1にすると、無限に待つ

 

(webサイトなどを)検索して(指定の文字列が)あるかどうかを判別

// 文字列に指定文字列があるか探す
戻値 = POS( 探す文字, 探される文字列, [n個目] )

 

※戻値は[探す文字]が[見つからなければゼロ]なことを利用する。

 

アプリケーション(メモ帳)の起動

EXEC("起動したいアプリのパス 起動したいファイルのパス")

 

例)
EXEC("C:\Windows\notepad.exe C:\Users\saiyazin\Desktop\test.txt")

 

IE.QUITが何故か動作しない。”RPCサーバーを利用できません”エラーが出てしまうときの対処法

原因はよくわからない。繰り返し処理をする前に

 

CREATEOLEOBJ("InternetExplorer.Application")

 

繰り返し処理中には

 

GETACTIVEOLEOBJ("InternetExplorer.Application","webページのタイトル")

 

を使うことで今回はエラー回避。

 

また、IEを起動したり閉じたりを連続で繰り返してもエラーが出る。その時はIEでの処理が終わったあとにコマンドプロンプトでIEプロセスの強制終了。

DOSCMD("taskkill /f /im iexplore.exe")

 

新しいタブを開いて操作

なんか調べたら難しそうだったので、単純な方法で実現。

 

まず特定のwebサイトを開く
→IDを取得して、ショートカットキーで新しいタブを開く(CTRL,Tキー)
→GETACTIVEOLEOBJで新しいタブを指定
→新しいタブで他のwebサイトを開く
→IDを取得

 

IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("https://amanojaku-late20-hobbyfashion.com/")
IE.visible = True
sleep(1)
ID1 = GETID("https://amanojaku-late20-hobbyfashion.com/", -1)

SCKEY( id1,VK_CTRL,T) 
sleep(3) 

IE = GETACTIVEOLEOBJ("InternetExplorer.Application","新しいタブ") 
IE.Navigate("https://amanojaku-late20-hobbyfashion.com/uwsc-command-solution/") 
IE.visible = True 
sleep(1) 
ID2=("https://amanojaku-late20-hobbyfashion.com/uwsc-command-solution/", -1)

 

ファンクションキー(F4)を使用

SCKEY( ID, キー)

 

”キー”の部分にF4ではなく、VK_F4

 

ダブルクオーテーション(”)を文字列として扱う方法

"<#DBL>"

 

”記録”機能について

低レベル記録…単純にキーボードとマウスの情報を座標と共に記録

高レベル記録…座標は記録されない。高レベル関数を使用

 

.readyStateや.busyが使用できない

おそらく有償版とフリー版では使用できる機能に制限がある?(検証不十分)

Pro(有料)版でないものがあるようだ。

現時点だと有料版は買えない?

 

2020/05/07追記

UWSCでVBAマクロを実行

結構なゴリ押し、力技。もっとスマートな方法絶対ある。

 

ソースコード

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
EXCEL.workbooks.open("C:\ファイルパス.xlsm")
sleep(1)
ID = GETID("ファイル名.xlsm")
SCKEY( ID,VK_ALT,VK_F11)
sleep(1)
vbaID = GETID("Microsoft Visual")
SCKEY( vbaID,VK_F5)
sleep(3)
SCKEY( vbaID,VK_CTRL,S)
sleep(1)
SCKEY( vbaID,VK_ALT,VK_F4)
sleep(1)
SCKEY( ID,VK_ALT,VK_F4)

 

UWSCからPythonスクリプトを実行

exec("C:\ファイルパスpython.exe  C:\実行したいファイル名.py")

 

UWSCから.uwsを実行。他のマクロを呼び出す。

call ファイル名.uws

引数をつけて呼び出すことも可能。

call ファイル名.uws("test")

 

タイトルとURLをコピーしました