UWSC 掲 示 板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオンにしてください
動作不具合での質問の場合には環境(OS,IEのバージョン等)の表記もしてください
タイトルは質問内容を表したものにしてください
ネットゲーム関係の質問はご遠慮ください

EXEから抽出したEXCELを加工したい / sen
いつもお世話になっております。
★印のところで、UWSCモジュールエラーみたいなのが出て、止まります。
色々と思考錯誤してみるんですが、うまくいったり、いかなかったりなんです。
ご教授いただけませんでしょうか?


EXEC("D:\参照.exe")
CLKITEM(GETID("受注残", "ThunderRT6FormDC", -1), "選択", CLK_BTN)
CLKITEM(GETID("Ex3", "#32770", -1), "OK", CLK_BTN) //ここで、Excelが立ち上がってきます。
CLKITEM(GETID("受注残", "ThunderRT6FormDC", -1), "終了2", CLK_BTN)

fエクセル待ち()  //対策@ エクセルをとらえられてないのかなと思いまして。
id = GETID("Excel", "XLMAIN", -1)  //対策A エクセルをとらえられてないのかなと思いまして。
sleep(1)  //対策B 長めにしてみた。
With Excel.ActiveSheet
  //.Range("A1").Select //対策C Cellsの前にSELECTを一度入れたら、良いかなと思いまして。
    FOR t = 1 to 50
     if copy(XLGETDATA( Excel,4,t ),6,3) = "/02" then break  //対策D Cellsがいけないのかと思いまして。
     //if copy(.Cells(4,t).value,6,3) = "/02" then break  //★ここで引っ掛かります。
    next
EndWith

PROCEDURE fエクセル待ち()
  REPEAT
   COM_ERR_IGN  //COMエラー無視
    Excel = GETACTIVEOLEOBJ("Excel.Application")
   COM_ERR_RET  //エラー処理復帰
  UNTIL !COM_ERR_FLG //COMエラーなくなるまで繰り返し
fend

No.4521 2017/10/06(Fri) 22:15:38

Re: EXEから抽出したEXCELを加工したい / リキュール
以下でも駄目ですか。

 if copy(.Cells(4,t).value,6,3) = "/02" then break

dat = .Cells(4,t).value
if copy(dat,6,3) = "/02" then break

No.4529 2017/10/09(Mon) 14:35:17

Re: EXEから抽出したEXCELを加工したい / sen
ありがとうございます。
明日、やってみます。

No.4531 2017/10/09(Mon) 20:07:29
プリントの書体変更 / cuca
プリントウィンドウ内の書体や文字の大きさを変更する方法はありますか
No.4500 2017/10/03(Tue) 17:15:14

Re: プリントの書体変更 / satocha
ヘルプの後ろの方に「uwsc.ini」のセクションがあり、次のように記されています。
−−以下引用
[SET] セクション
  LogLines = PRINT文でのロギングの最大行数を指定 (デフォルトは2000行)
  DefaultFont = フォント名, サイズ (MSGBOX, BALLOON等でのフォント、デフォルトは'Tahoma')
  LogFont = フォント名, サイズ (PRINT文でのログ用フォント、デフォルトは'MS ゴシック')
−−以上引用

もし、質問の意図がスクリプト実行中にprintウインドウのフォントを変更したいということでしたら、iniファイルで設定しているので、普通にやったのでは難しいと思います。

No.4503 2017/10/04(Wed) 08:09:23

Re: プリントの書体変更 / stuncloud
%APPDATA%\UWSC\UWSC.INI を書き換えてP_UWSC_REEXECでスクリプトを再実行すればフォントを変更してprintできますね
slctboxでフォントを変更するサンプル

----------------------------------------------
textblock FontList
MS ゴシック,14
MS ゴシック,20
メイリオ
endtextblock

with createoleobj("WScript.Shell")
 appdata =.ExpandEnvironmentStrings("%APPDATA%")
endwith
with createoleobj("Scripting.FileSystemObject")
 UwscIni = .BuildPath(appdata, "\UWSC\UWSC.INI")
endwith

LogFont = readini("SET", "LogFont", UwscIni)

logprint(TRUE, 200, 200, 400, 300)
sendstr(getid(GET_LOGPRINT_WIN), "", 1, TRUE)
print "現在のLogFontは"
if length(LogFont) then
 print LogFont + " です"
else
 print "未設定です"
endif

font = slctbox(SLCT_BTN or SLCT_STR, 0, "LogPrintのフォントを選択", split(FontList, "<#CR>"))
if font = -1 then exit

writeini("SET", "LogFont", font, UwscIni)
poff(P_UWSC_REEXEC, TRUE)
----------------------------------------------

実際に使うとしたら

----------------------------------------------
// 表示したいフォントと異なる場合はフォントを設定しスクリプト再実行
if LogFont <> "設定したいフォント" then
 writeini("SET", "LogFont", "設定したいフォント", UwscIni)
 poff(P_UWSC_REEXEC, TRUE)
endif
// 以下本来の処理
DoSomething()
----------------------------------------------

こんな感じかな

No.4519 2017/10/06(Fri) 10:31:19

Re: プリントの書体変更 / satocha
stuncloudさま

実行中でもiniファイルの変更が反映されるのですね。
勉強になりました。

No.4524 2017/10/07(Sat) 10:04:28

Re: プリントの書体変更 / stuncloud
いえ、実行中には反映されないという認識で合っています
poff(P_UWSC_REEXEC, TRUE) で再実行した際にUWSC.iniが再読込みされることがわかったので、それを利用して一度のスクリプト実行でiniファイルの変更が反映されたように見せかけています

No.4527 2017/10/08(Sun) 14:35:55
バックグラウンドで動作 / AQUA
初心者で申し訳ありません。
「バックグラウンドで実行できる形で記録」にチェックを入れて適当にヤフーのページをクリックしたのを記録して実行してみたのですが、バックグラウンドでなく普通に前面に出てきて実行されてしまいます。
MOUSEORG(GETID("Yahoo! JAPAN - Google Chrome","Chrome_WidgetWin_1"),MORG_DIRECT)
BTN(LEFT,CLICK,919,159,125)
BTN(LEFT,CLICK,335,503,140)

何かが足りないのでしょうか?
よろしければ助言お願い致します。

No.4526 2017/10/08(Sun) 02:41:07
クリック処理について / ねこねこ
UWSCをはじめて3ヶ月ですが、ProのRecIE(web記録)の使い方がいまだにわかりません。
以下のボタンを押して、次ページをめくっていきたいのですが、
<a class="_7777 coreSRightPaginationArrow" role="button" href="/p/BZ54e1uj77I/?tan-by=incetopuk">次ページ</a>

RecIEでは、クリックして、以下のように出ます。この場合、どう書けば、クリックできるのでしょうか。IESETDATA(IE,"TAG=A","次ページ")では、押せませんでした。基礎がわかってないのですが、何とか、コードをよろしく教えてください。
s = IEGetData(IE,"TAG=A",30)
Assert(s="次ページ",13)
s = IEGetData(IE,"TAG=A",30)
Assert(s="次ページ",15)

No.4523 2017/10/07(Sat) 00:40:26

Re: クリック処理について / ねこねこ
掲示板にて、自己解決しました。
No.4525 2017/10/07(Sat) 14:59:56
morg direct時のctrlの挙動について / ctrl
BTNやKBDが正常に機能していますが、ctrldown時の挙動について、ほかのウインドウに影響が出てきます。
同じようなかたいませんでしょうか?

No.4522 2017/10/06(Fri) 23:53:30
イラスト画像表示させて吹き出しコメントを付けるには / もみもみ
素人ですいません。
キャラクタ画像を表示させて 表示させたキャラクタがしゃべっているような吹き出しコメントを付けるには
どうすればよいでしょうか?参考のスクリプトがあれば教えていただきたいです。
宜しくお願いします。

No.4498 2017/10/02(Mon) 22:35:54

Re: イラスト画像表示させて吹き出しコメントを付けるには / しゅん
結構難儀なことを書かれています。
また、詳細な仕様がわからないため、回答も難しいです。
何か書いたところで、そうではない、とあっさり言われそうで答え難いです。
(回答を書くのも労力がいるのですが、見当違いで無駄になるととても悲しいです)
また本来なら、自分で書かれたスクリプトのない質問には答えない主義ですが、なんとなく参考までに書いてみました。
http://d.hatena.ne.jp/junjun777/20171004/uwsc_powershell_bmp_balloon

なお、素人かどうかは私の興味の範囲外です。

No.4513 2017/10/04(Wed) 19:11:01

Re: イラスト画像表示させて吹き出しコメントを付けるには / もみもみ
回答ありがとうございます。
素人にはどうにもできなかったので助かりました。

No.4520 2017/10/06(Fri) 19:53:21
uwsc初心者です^^ / かわうそくん
UWSCで初めてプログラムをつくってみたのですがエラーが出てしまいます。


つくりたいプログラムは、
無限ループで、


@ Aという画像が出たらBをクリックする

※ 本当は、Aという画像が出たらB、C、Dのどれかがあればクリックするというプログラムにしたかったので、


複数の画像のうちどれかがあれば…の場合も教えていただけるととてもとても嬉しいです。



While Trueと、Wendの間にこの命令を入れて走らせようとするとエラーが出てしまいます。

それがどうしてなのかがわかりませんでした。



つくりたいプログラムは、


While True


  If ChkImg("画像X") Then Btn(Left,Click,G_IMG_X,G_IMG_Y)
    EndIf
  Sleep(1)


※ 最初に、Xという画像の時にクリック この処理は1回のみ。



その次にしたい処理が、

Aという画像の時にBをクリックする です。



  Ifb ChkImg("画像A")
    Sleep(1)
    Ifb ChkImg("画像B")
      Btn(Left,Click,G_IMG_X,G_IMG_Y)

    EndIf



その次に、最初のXの時と同じ画像が出たらそれをクリックです。


  If ChkImg("画像E") Then Btn(Left,Click,G_IMG_X,G_IMG_Y)
    EndIf
  Sleep(1)


  If ChkImg("画像F") Then Btn(Left,Click,G_IMG_X,G_IMG_Y)
    EndIf
  Sleep(1)


  If ChkImg("画像G") Then Btn(Left,Click,G_IMG_X,G_IMG_Y)
    EndIf
  Sleep(1)


※ これはオンマウスでテキストリンクの色が変わるHTMLタグをクリックしたいので、EまたはFの時にクリックという命令のやりかたがわかるととてもとても嬉しいです。



Wend


※ このプログラムはループするまでにどれも1回処理(成功)したら、次のループまで命令をくり返し動かす必要がないので、処理したら次のループまで休けいさせるという命令がわかればそれを入れたいと思っています。


教えて、おしえてばかりで本当にすみません。


私なりに色々しらべてつくってみたのですがどうしてもわからないことばかりで、教えていただけると幸いです。


よろしくお願い致します。

No.4514 2017/10/05(Thu) 08:39:44

Re: uwsc初心者です^^ / stuncloud
今まで同様の質問を何度も見かけたので過去ログにあるんじゃないかと思います
普段なら答えの(あるいは答えに近いと予想される)スクリプトを提示して終わりなんですけどちょっと思うとこあったのでやめますね
というか多分これゲームの話ですよね、だとしたらほんとは門前払いなんだよ

> @ Aという画像が出たらBをクリックする
> ※ 本当は、Aという画像が出たらB、C、Dのどれかがあればクリックするというプログラムにしたかったので、
> 複数の画像のうちどれかがあれば…の場合も教えていただけるととてもとても嬉しいです。


まずは「Aという画像が出たらBをクリック」だけに焦点を当ててそれだけをやってみましょう
if(ifb)の書き方はわかっているようなので、ここはすぐできるようになると思います

次に、「B、C、Dのどれかがあればクリック」だけをやってみましょう
これも単純にifを3つ並べればいいような気もします
B、C、Dのうち複数が存在し一つだけクリックしたい場合を考慮しなければならないとなるとちょっとむずかしくなるかも
# それはそれとしてなんとなく
# OPTION SHORTCIRCUIT
# if chkimg("B") or chkimg("C") or chkimg("D") then
# というのが思い浮かんだけどこれならG_IMG_*にいい感じに収まりませんかね

> While Trueと、Wendの間にこの命令を入れて走らせようとするとエラーが出てしまいます。
> それがどうしてなのかがわかりませんでした。


どんなエラーが出たか書いてもらわないと僕らもわかりません

> ※ これはオンマウスでテキストリンクの色が変わるHTMLタグをクリックしたいので、EまたはFの時にクリックという命令のやりかたがわかるととてもとても嬉しいです。
こういう唐突に要求を上げてくる感じが素敵ですね
色が変わったHTMLタグの画像を用意しておいてchkimgでいいんじゃないでしょうか
「EまたはFの時にクリック」は「Aという画像が出たらBをクリック」の応用なのでちょっと考えてみてください

> ※ このプログラムはループするまでにどれも1回処理(成功)したら、次のループまで命令をくり返し動かす必要がないので、処理したら次のループまで休けいさせるという命令がわかればそれを入れたいと思っています。
次のループまでもう一個ループを挟めば良いです
次のループの開始が画像Xを探すところという話なら、画像Xが見つかるまでループさせます
repeat-untilが良いでしょう

> 私なりに色々しらべてつくってみたのですがどうしてもわからないことばかりで、教えていただけると幸いです。
そういう場合は調べた内容とわからなかったことについて質問されると良いです
全体の流れはこうですが、自分では書き方がわかりませんでしたどうしたらいいですか、という質問は要件を元にコード全部書いてくださいと言ってるようなものです
それは質問ではなくコード作成依頼です

> 教えて、おしえてばかりで本当にすみません。
まったくです
とりあえず質問に回答する体でこちらもなんとかがんばってみたので、かわうそくんさんもがんばってコードを書いてみてください
とにかく先ずは書いて書いて書いて試行錯誤を繰り返しましょう
あと過去ログ見ましょう、ヒントがいっぱいありますよ

No.4516 2017/10/05(Thu) 11:54:46

Re: uwsc初心者です^^ / かわうそくん
stuncloudさん回答ありがとうございます。


ヒントに、この命令はどこかでみたことが、おおう、おおうと思いました。


検索だとヤフー知恵袋などにとばされてしまうばかりだったのですが、そうかと過去ログのほうこれから読んで勉強してみたいみたいと思います。

イメージしていたプログラムが書けるよう頑張ります。

最初に質問したところでは放置され5日…回答をつけていただけてとてもとても嬉しかったです。

本当にありがとうございます。

No.4518 2017/10/05(Thu) 16:16:28
IEで特定タブ以外のタブを閉じたい / にゃんこ
IEは複数のウィンドウが開かれており、またその中で複数のタブが開かれているとします。
このなかで、特定タブを一つだけ残して閉じたいと思います。
このタブの名称がABCDEとします。
下記のプログラムまで作ってみたのですが、一つだけタブを閉じる処理の書き方を教えてください。
よろしくお願いいたします。

sh=CREATEOLEOBJ("Shell.Application")
FOR k=0 TO sh.Windows.Count-1
IFb pos("ABCDE",sh.Windows.Item[k].document.title) <= 0 then
一つだけタブを閉じる処理
ENDIF
NEXT

No.4504 2017/10/04(Wed) 13:29:06

Re: IEで特定タブ以外のタブを閉じたい / にゃんこ
すみません
意図せず文字色変えてしまいました

No.4505 2017/10/04(Wed) 13:31:28

Re: IEで特定タブ以外のタブを閉じたい / しろまさ
// 最近似たような質問が・・ http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=4442

// エラー処理入れた方が良いですよ。
Dim i, sh = CREATEOLEOBJ("Shell.Application"), wi = sh.Windows, IE
For i = 0  To wi.Count - 1
  Ifb wi.Item[i] > 0
    Ifb wi.Item[i].Name = "Internet Explorer"
      IE  = wi.Item[i]
      Ifb pos("ABCDE",IE.document.title) <= 0 then
        IE.ExecWB(45, 0)
      EndIf
    EndIf
  EndIf
Next

No.4508 2017/10/04(Wed) 17:31:21

Re: IEで特定タブ以外のタブを閉じたい / にゃんこ
回答ありがとうございます。
下記の動作が発生しますがなぜでしょう?

@4つ以上タブを作ると、閉じ忘れが必ず出る

Aたまにエラーが出る
COM ERROR ACCESS VALATION AT ADRESS 006AFD5 IN MODULE "UWSC.EXE",READ OF ADDRESS 00000000
6行目 Ifb pos("ABCDE",IE.document.title) <= 0 then

No.4512 2017/10/04(Wed) 18:45:47

Re: IEで特定タブ以外のタブを閉じたい / しろまさ
// @ 消すと減るようなので逆順で回避
// A IE.documentでアドレスエラー? 原因不明なのでTryで回避
// 以下、修正版

Dim i, sh = CreateOleObj("Shell.Application"), wi = sh.Windows, IE
For i = wi.Count - 1  To 0  Step -1
  Try
    IE  = wi.Item[i]
    Ifb pos("ABCDE", IE.document.title) <= 0 then
      IE.ExecWB(45, 0)
    EndIf
  Except
  EndTry
Next

No.4515 2017/10/05(Thu) 08:58:56

Re: IEで特定タブ以外のタブを閉じたい / にゃんこ
完璧に動作できました。

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

No.4517 2017/10/05(Thu) 15:29:11
CALLの使用方法 / はる
CALLを使ってよく使うような関数を分けたいのですが、使用方法が良くわかってなく
以下のようなエラーが出ています。

何が悪いのか、どのような方法で使用すれば良いのか教えていただけますでしょうか。
CLASSを使用しないで1つのファイルに書き直せば動いています。
よろしくお願い致します。

○エラーの内容
SyntaxError(FReLoad):Duplicates not allowed EXCEPT

○プログラム

CALL "RegExpProc.uws"

if (RegExpProc.regvb_Length("ABCDEFG","^ABC") > 0) then MSGBOX ("OK")


○CALLのファイル "RegExpProc.uws"

//正規表現
CLASS RegExpProc
//正規表現の実行にエラーがでてしまうためTRYで例外処理しています

Function regvb_Length(str, Pattern)
Dim regvb = CreateOLEObj("VBScript.RegExp")
Dim cRegPtn
Dim Matches
regvb.IgnoreCase = FALSE
regvb.Global = FALSE
regvb.Pattern = Pattern
Matches = regvb.Execute(str)
TRY
Result = Matches.Item(0).Length
EXCEPT
ENDTRY
Fend

//Matches.Value
Function regvb_Value(str, Pattern)
Dim regvb = CreateOLEObj("VBScript.RegExp")
Dim cRegPtn
Dim Matches
regvb.IgnoreCase = FALSE
regvb.Global = FALSE
regvb.Pattern = Pattern
Matches = regvb.Execute(str)
TRY
Result = Matches.Item(0).Value
EXCEPT
ENDTRY
Fend

//FirstIndex
Function regvb_FirstIndex(str, Pattern)
Dim regvb = CreateOLEObj("VBScript.RegExp")
Dim cRegPtn
Dim Matches
regvb.IgnoreCase = FALSE
regvb.Global = FALSE
regvb.Pattern = Pattern
Matches = regvb.Execute(str)
TRY
Result = Matches.Item(0).FirstIndex
EXCEPT
ENDTRY
Fend

//TEST
Function regvb_TEST(str, Pattern)
Dim regvb = CreateOLEObj("VBScript.RegExp")
Dim cRegPtn
Dim Matches
regvb.IgnoreCase = FALSE
regvb.Global = FALSE
regvb.Pattern = Pattern
TRY
Result = regvb.TEST(str)
EXCEPT
EBDTRY
Fend

ENDCLASS

No.4506 2017/10/04(Wed) 16:03:26

Re: CALLの使用方法 / しろまさ
最後のほうの EBDTRY はとりあえずダメそう。
No.4507 2017/10/04(Wed) 17:26:49

Re: CALLの使用方法 / stuncloud
最後のENDTRYがEBDTRYになってる以外問題なさそうですが、そこを直せば正常に動作しますね
> SyntaxError(FReLoad):Duplicates not allowed EXCEPT
も再現できないです

No.4509 2017/10/04(Wed) 17:37:18

Re: CALLの使用方法 / stuncloud
いろいろ書きなぐってるうちに見つけたんですが

try
 // 1
 try
  // 2
 except
  // 2のエラーはここに来る
except
 // 1のエラーはここ
 endtry // 1のエラーのときは無視される?
 // 1の続き
endtry

こう書いた場合、正しく入れ子になっていないけどシンタックスエラーにはなりませんね

No.4510 2017/10/04(Wed) 17:52:49

Re: CALLの使用方法 / はる
ありがとうございます。
お恥ずかしいw
とりあえずエラーは消えたのでこのまま行きます。
助かりました。ありがとうございました。

No.4511 2017/10/04(Wed) 18:02:31
ダイアログが閉じない / Bone
スケジュール設定のタイマー設定に"指定Windowsが現れた時"を選択し、Titleに"警告"を指定、スクリプトにはOK.uwsとして、OK.uwsは以下のように記述してます。

Print "警告検知"
ifb CLKITEM( GETID("警告"), "OK", CLK_BTN )
Print "成功"
else
Print "失敗"
endif

目的のソフトが警告ダイアログを表示すると動作し、

警告検知
成功

と表示はされるのですが、そのダイアログが閉じません。本来"OK"ボタンが押されてダイアログが閉じる筈なのですが、何が悪いのでしょうか?

No.4501 2017/10/03(Tue) 17:24:08

Re: ダイアログが閉じない / Bone
FAQを眺めていて気になって実行レベル(UAC)を合わせたら無事に動きました。
No.4502 2017/10/03(Tue) 19:06:12


 過去ログ(〜2017/08/24)・検索ツール


以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 20 >> | 過去ログ ]