- ベストアンサー
UWSCで使うファイルをexcelで作りたい
まずあまりの初心者ゆえに失礼がありましたらすみません。 UWSCというフリーソフトのスクリプトの編集をexcelでして そのあとにメモ帳などに移して使うつもりなのですが たとえば下記のようなものがあったとして BTN(LEFT,CLICK,223,72,) SLEEP(0.5) KBD(VK_a,DOWN,) KBD(VK_b,DOWN,) KBD(VK_1,CLICK,) KBD(VK_TAB,CLICK,) KBD(VK_RETURN,CLICK,) という文章を BTN(LEFT,CLICK,223,72,) SLEEP(0.5) KBD(VK_a,DOWN,) KBD(VK_b,DOWN,) KBD(VK_2,CLICK,) KBD(VK_TAB,CLICK,) KBD(VK_RETURN,CLICK,) になって BTN(LEFT,CLICK,223,72,) SLEEP(0.5) KBD(VK_a,DOWN,) KBD(VK_b,DOWN,) KBD(VK_3,CLICK,) KBD(VK_TAB,CLICK,) KBD(VK_RETURN,CLICK,) をへて BTN(LEFT,CLICK,223,72,) SLEEP(0.5) KBD(VK_a,DOWN,) KBD(VK_b,DOWN,) KBD(VK_4,CLICK,) KBD(VK_TAB,CLICK,) KBD(VK_RETURN,CLICK,) となり BTN(LEFT,CLICK,223,72,) SLEEP(0.5) KBD(VK_a,DOWN,) KBD(VK_b,DOWN,) KBD(VK_5,CLICK,) KBD(VK_TAB,CLICK,) KBD(VK_RETURN,CLICK,) というかたちでKBD(VK_数字,CLICK,)という部分だけを1から500まで増やしていって あとの数値は同じものをずっと並べていきたいのですが普通にフィルハンドル?をつかってやると 私が編集したいKBD(VK_数字,CLICK,)の部分以外の数値までおそらく増えていってしまうんですよね。 KBD(VK_数字,CLICK,)の数字の数値だけを増やしていくことはできますでしょうか? なおどうやらソフトの性質として数字が10をこえると KBD(VK_10,CLICK,) ではなく KBD(VK_1,CLICK,) KBD(VK_0,CLICK,) や KBD(VK_1,0,CLICK,) と表現しなければいけなくなるようなのですが そういう数値の増やし方はできますでしょうか? 超初心者なので全く何もわからないのですがそんな人間でもできますでしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No,1です。 マクロサンプルです。 Sub make_UWSC() Dim rcount As Integer Dim srcstr1 As String Dim srcstr2 As String Dim srcstr3 As String Dim srcstr4 As String Dim srcstr5a As String Dim srcstr5b As String Dim srcstr5 As String Dim srcstr6 As String Dim srcstr7 As String Dim icount As Integer Dim scount As String srcstr1 = "BTN(LEFT,CLICK,223,72)" srcstr2 = "SLEEP (0.5) " srcstr3 = "SKBD(VK_a,DOWN) " srcstr4 = "SKBD(VK_b,DOWN) " srcstr5a = "KBD(VK_" srcstr5b = ",CLICK)" srcstr6 = "KBD(VK_TAB,CLICK) " srcstr7 = "KBD(VK_RETURN,CLICK) " rcount = 1 For icount = 1 To 500 scount = Right("000" & Str(icount), 3) Cells(rcount, 1) = srcstr1 rcount = rcount + 1 Cells(rcount, 1) = srcstr2 rcount = rcount + 1 Cells(rcount, 1) = srcstr3 rcount = rcount + 1 Cells(rcount, 1) = srcstr4 rcount = rcount + 1 If icount >= 100 Then srcstr5 = srcstr5a & Mid(scount, 1, 1) & srcstr5b Cells(rcount, 1) = srcstr5 rcount = rcount + 1 End If If icount >= 10 Then srcstr5 = srcstr5a & Mid(scount, 2, 1) & srcstr5b Cells(rcount, 1) = srcstr5 rcount = rcount + 1 End If srcstr5 = srcstr5a & Mid(scount, 3, 1) & srcstr5b Cells(rcount, 1) = srcstr5 rcount = rcount + 1 Cells(rcount, 1) = srcstr6 rcount = rcount + 1 Cells(rcount, 1) = srcstr7 rcount = rcount + 1 Next icount End Sub
その他の回答 (6)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 #5の imogasiさんがご指摘になった >文字列を1文でキーーインする書き方もあるようだ >SENDSTR を試してみました。簡単に出来ましたが、ちょっと以下の部分が分かりにくいですね。 myID = GetID(GET_FROMPOINT_WIN) それから、KBD(VK_TAB,CLICK,) なぜ、元のコードにTab があるのか分かりません。もともと、何に使うかは、お返事にはありませんね。 メモ帳等で貼り付けて、拡張子をUWS にしてください。 //SampleLoop.UWS Public myID SENDSTR(0,"") for i = 1 to 111 BTN(LEFT,CLICK,223,72,) SLEEP(0.5) myID = GetID(GET_FROMPOINT_WIN) SENDSTR(myID,"ab" + i) KBD(VK_TAB,CLICK,) KBD(VK_RETURN,CLICK,) next ほぼ同じものを、VBAで書いてみました。 'VBA マクロ(Excel上のみです) Sub TestMacro() Dim i As Long For i = 1 To 111 Cells(i, 1).Value = "ab" & i Next i End Sub
- Wendy02
- ベストアンサー率57% (3570/6232)
#4 です。 私の書いたコードは、あくまでも、UWSCのスクリプト・コードですから、Excelは関係ありません。メモ帳に入れて、拡張子を、.UWS としてください。
- imogasi
- ベストアンサー率27% (4737/17069)
このソフトの機能で 繰り返しで対処できないのかな。 WINDOWSマクロテクニック(小林シンヤ)翔泳社 2005 というUWSCの解説本を読みましたか。 私も最近目を通したのだが、まだ身についてないので、今は具体的にかけません。すみません。 For Next、その他の繰り返しも使える。 文字列を1文でキーーインする書き方もあるようだ SENDSTR 数字列もそれがないかな。 ーーー エクセルVBAでやれば、質問どおりだけなら何とかできる。 VBAで考えた。 手抜きして KBD(VK_b,DOWN,) KBD(VK_5,CLICK,) <== この5を1桁打ち式に連続した番号で 変える KBD(VK_TAB,CLICK,) のところ(3行)しか考えてない。後は定まった文を増やすだけ ーーー Sub test01() k = 1 For i = 1 To 101 '500は多いので101で止めた Cells(k, "A") = "KBD(VK_b,DOWN,)" k = k + 1 Select Case i '-- Case 1 To 9 X = Trim(Str(i)) Cells(k, "A") = "KBD(vk_" & X & ",CLICK)" k = k + 1 '--- Case 10 To 99 X = Trim(Str(Int(i / 10))) Cells(k, "A") = "KBD(vk_" & X & ",CLICK)" k = k + 1 X = Trim(Str(i Mod 10)) Cells(k, "A") = "KBD(vk_" & X & ",CLICK)" k = k + 1 '-- Case 100 To 500 X = Trim(Str(Int(i / 100))) Cells(k, "A") = "KBD(vk_" & X & ",CLICK)" k = k + 1 X = Trim(Str(Int((i Mod 100) / 10))) Cells(k, "A") = "KBD(vk_" & X & ",CLICK)" k = k + 1 X = Trim(Str(i Mod 10)) Cells(k, "A") = "KBD(vk_" & X & ",CLICK)" k = k + 1 End Select Cells(k, "A") = "KBD(VK_TAB,CLICK,)" k = k + 1 Next i End Sub このコードを修正することが出来るかな。 結果 1部 KBD(VK_b,DOWN,) KBD(vk_1,CLICK) KBD(VK_TAB,CLICK,) KBD(VK_b,DOWN,) KBD(vk_2,CLICK) KBD(VK_TAB,CLICK,) KBD(VK_b,DOWN,) KBD(vk_3,CLICK) KBD(VK_TAB,CLICK,) KBD(VK_b,DOWN,) ーー 終わりの方 100のあたり KBD(VK_b,DOWN,) KBD(vk_9,CLICK) KBD(vk_9,CLICK) KBD(VK_TAB,CLICK,) KBD(VK_b,DOWN,) KBD(vk_1,CLICK) KBD(vk_0,CLICK) KBD(vk_0,CLICK) KBD(VK_TAB,CLICK,) KBD(VK_b,DOWN,) KBD(vk_1,CLICK) KBD(vk_0,CLICK) KBD(vk_1,CLICK) KBD(VK_TAB,CLICK,) === あとエクセルのセルではなく、テキストに書くコードを知る必要がある(略) しかしUWSCが言語である以上、こんなに単純に文を並べなければならない仕様のはずないと思うよ。
お礼
ありがとうございます。 UWSCもエクセルも初心者なので四苦八苦しております。 わざわざお調べいただいてありがとうございます。 お心づかい感謝です。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ここのカテゴリは、あくまでも、Office ですが、なぜ、ここにお聞きになっているのか素朴な疑問があります。UWSC って、一種のキーロガーですね。 もしかして、そのコード自体が、Excelそのものを扱うもののような気がしました。UWSC のヘルプでみて位置を見ると BTN(LEFT,CLICK,223,72,) X=223, Y=72, の場所って、Excelですと、数式バーのあたりのようですね。 Excelなら、VBAがあります。 Excelなら、VBAをお使いになったほうが良いのではないでしょうか?外部ツールの最大の欠点は、フレームの中の位置決めが出来ません。可能なのは、外周だけなのですね。Excelは、その状況に合わせて、位置が移動するのです。 もちろん、Excelでないにしても、Excelでドラッグやコピーして、500ブロック書く必要はないとは思います。というよりも、スクリプト系言語の場合は、スクリプトファイルの文字列を多くするのは関心しません。 そのコードは以下のようにループすればよいとは思います。UWSCのヘルプを読みながら書いてみました。Cにも感じは似ているようです。初めて書いてみたので、他の環境で、うまく行くか分かりませんが、間違っていれば、UWSCは通らないと思います。 とりあえず、"111" までにしました。"500" も入れられま。"111"は、三桁の数の検査するための最も少ない数です。 もし、Office だったら、その旨を書いてください。 //SKeysSample.UWS Public arry[9] arry[0] =VK_0 arry[1] =VK_1 arry[2] =VK_2 arry[3] =VK_3 arry[4] =VK_4 arry[5] =VK_5 arry[6] =VK_6 arry[7] =VK_7 arry[8] =VK_8 arry[9] =VK_9 for i = 1 to 111 BTN(LEFT,CLICK,223,72,) SLEEP(0.5) KBD(VK_a,DOWN,) KBD(VK_b,DOWN,) TOKENFIG(i) KBD(VK_TAB,CLICK,) KBD(VK_RETURN,CLICK,) next Procedure TOKENFIG(ai) for j =1 to length(ai) n = copy(ai,j,1) KBD(arry[n],CLICK,) next Fend
お礼
ありがとうございます。 本当に全くの初心者でしてVBAというものがあるらしいという ぐらいしか知識のないものでご提言ありがとうございます。
- zap35
- ベストアンサー率44% (1383/3079)
エクセルで回答します。まずA1セル~A7セルに以下を貼り付けます BTN(LEFT,CLICK,223,72,) SLEEP(0.5) KBD(VK_a,DOWN,) KBD(VK_b,DOWN,) KBD(VK_1,CLICK,) KBD(VK_TAB,CLICK,) KBD(VK_RETURN,CLICK,) 次にA8セル~A14セルに以下の式をそれぞれ貼り付けます A8 =A1 A9 =A2 A10 =A3 A11 =A4 A12 ="KBD(VK_"&IF((ROW()+2)/7>=100,LEFT((ROW()+2)/7,1)&","&MID((ROW()+2)/7,2,1)&","&RIGHT((ROW()+2)/7,1),IF((ROW()+2)/7>=10,LEFT((ROW()+2)/7,1)&","&RIGHT((ROW()+2)/7,1),(ROW()+2)/7))&",CLICK,)" A13 =A6 A14 =A7 次に「A8~A14を選択した状態」でCtrl+Cでコピーし、A15~A3500を選択してCtrl+Vで貼り付けます。 最後にA1~A3500を選択してコピーし、メモ帳に貼り付けてください
お礼
ご丁寧にありがとうございます。 さっそく試してみたいと思います。 わざわざすみませn。
- kokorone
- ベストアンサー率38% (417/1093)
ご自分でも少し、気づかれているようですが、 1から初めて500まで、繰り返し入力するわけですよね。 でも、1から9は、それぞれのキーを押すだけですが、10以上は、 10というキーを押すのではなく、1と0の順に押すわけでして。。 あと、ドラッグで、数字を増やすと、望まないところまで変化して しまうのも、Excelの仕様です。 さいわい、Excelには、マクロ(VBA)という機能があり、 簡単なプログラムで、自由度の高いものができます。 固定の文字列と、可変の文字列を結合させて、UWSC用の命令を 作りこむことが可能です。 マクロはどの程度、理解されていますか? 明日、また、マクロサンプルを提示させていただきます。
お礼
ありがとうございます。 マクロというのも勉強中でまだ全然理解はできていません。 お気づかい感謝いたします。
お礼
ありがとうございます。 大変お手数おかけいたしました。 マクロのというものの内容も理解しながら 勉強していこうと思います。