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

sendstrでexcelに貼り付けできない / orally
こんにちは
uwscでできることを確認しようと、サンプルを打って試している者です。

N11のサンプル(http://www.uwsc.info/sample.html#N11)なのですが、
新規エクセルファイルに対して、既存csvファイルの内容のコピーができません。
エクセルに値を書き込むのに何か方策があればご教授いただけますと助かります。

print関数を使用し、csvファイルから読み込みはできていることを確認しております。
また、notepadに対しては書き込めることを確認しております。

掲示板過去ログでは、似た内容は
「sendstrで文字が送れない / まるぱ 2016/04/16(Sat)」ぐらいで、今年ではなさそうでした。

UWSC: ver 5.3.0.2
OS: Windows 10 pro
EXCEL: 2010

// コード
// app = exec("EXCEL.exe")
app = exec("C:\Program Files\Microsoft Office\Office14\EXCEL.exe")
// app = exec("notepad.exe") なら書き込めることを確認
Sleep(3)
print app
fid = FOpen("hoge.csv", F_READ) // 実際はフルパスで指定
print fid
for i = 1 to FGET(fid, F_LINECOUNT)
print FGet(fid, i, 1)
SendStr(app, FGet(fid, i, 1), 1, True)
print FGet(fid, i, 2)
sendStr(app, Fget(fid, i, 2), 2, True)
print FGet(fid, i, 3)
sendStr(app, fget(fid, i, 3) , 3, True)
Sleep(3)
next
Fclose(fid)

No.4137 2017/06/18(Sun) 00:01:57
子ウィンドウのボタンが押せない / sage
私は日経新聞CD-ROMを使って特定の期間の特定のページを印刷するwindowsマクロを作っているのですが、子ウィンドウのtextboxに入力したり、特定のボタンを押せずに困っています。

↓このように親ウィンドウのIDは上手く取得でき、アクティブにできます。
id = GETID("日経 全文記事データベース", "ThunderRT6MDIForm",300)
CTRLWIN(id, ACTIVATE)

↓しかし、子ウィンドウのIDは取得できず、アクティブにできません。
id = GETID("記事検索", "ThunderRT6FormDC",300)
CTRLWIN(id, ACTIVATE)

「マクロの記録」を有効にして、子ウィンドウを左クリックしアクティブにしてから、タブキーを何回か押下して、子ウィンドウのボタンを選択してからエンターキーを押下し、記録停止⇒コードを見るとアクティブになっているのは親ウィンドウだし、キーボード操作は記録されていません。

↓強引に下記のコードを入れても親ウィンドウに命令が行き、巧く行きません。
SENDSTR(id, "PG001") //textboxにPG001と送る
KBD(VK_TAB, CLICK, 100) //タブクリック
KBD(VK_RETURN, CLICK, 100) //リターン押下
CLKITEM(id, CLK_BTN , 1) //1番目のクリックボタンを押下

なお、BTN(LEFT,CLICK,742,461,609)などクリックを使って代用しようとすると、CD-ROM起動時に毎回ウィンドウの座標が変わるので変なところがクリックされ巧く行きません。

↓このサイトを参考にし、全てのオブジェクトを取得した結果、
https://stuncloud.wordpress.com/2012/05/22/uwsc-%E6%8C%87%E5%AE%9A%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E4%B8%8A%E3%81%AE%E5%90%84%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB/

↓このような表示が得られました。
「日経 全文記事データベース」が親、「記事検索」と「検索結果」が子ウィンドウになります。
"日経 全文記事データベース", "ThunderRT6MDIForm"
"", "ToolbarWndClass"
"", "ToolbarWindow32"
"", "MDIClient"
"検索結果", "ThunderRT6FormDC"
"", "ThunderRT6TextBox"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"記事検索", "ThunderRT6FormDC"
"", "ThunderRT6TextBox"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"メニュー", "ThunderRT6FormDC"
"", "StatusBarWndClass"

No.4133 2017/06/15(Thu) 09:31:06

Re: 子ウィンドウのボタンが押せない / 森
私は普段web系がメインなのでgetidを使うことはほとんどない無いのですが、ヘルプによると第4引数を指定することで子ウインドウが取得できるようですね。
戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] )
MDI子タイトル: MDIウィンドウ中の子ウィンドウタイトル

なので、以下でどうでしょうか?

// 子ウィンドウのIDを取得
id = GETID("日経 全文記事データベース", , , "記事検索")

ダメならクラスも指定してみてください

No.4134 2017/06/16(Fri) 10:52:51

Re: 子ウィンドウのボタンが押せない / 森
> BTN(LEFT,CLICK,742,461,609)などクリックを使って代用しようとすると、
> CD-ROM起動時に毎回ウィンドウの座標が変わるので変なところがクリックされ巧く行きません。


これに関してはウインドウを決まった位置に移動させることで簡単に対処できます。

id = GETID("日経 全文記事データベース", "ThunderRT6MDIForm",300)
CTRLWIN(id, ACTIVATE)
acw(id , 0 , 0) //----- 必要であれば、第4〜5引数で大きさも固定してください。

No.4135 2017/06/16(Fri) 10:57:20

Re: 子ウィンドウのボタンが押せない / sage
森 さま
本当にありがとうございます!

>// 子ウィンドウのIDを取得
>id = GETID("日経 全文記事データベース", , , "記事検索")

この方法で子ウィンドウをアクティベート出来るようになりました!

>id = GETID("日経 全文記事データベース", "ThunderRT6MDIForm",300)
>CTRLWIN(id, ACTIVATE)
>acw(id , 0 , 0) //----- 必要であれば、第4〜5引数で大きさも固定してください。

親ウィンドウ、子ウィンドウ両方の座標を(0,0)にすることで、どのボタンも巧くクリック出来るようになりました!

本当に助かりました!重ねてお礼申し上げます。m(__)m

No.4136 2017/06/17(Sat) 16:11:16
記録が出来ない / skyblue
本日uwscをデスクトップ上にダウンロードし、同じフォルダー内にRecUws.dllがあります。
右クリックで管理者権限で実行にしても記録のボタン(色が薄いまま)が押せません。

ウィンドウズ10です。

素人の質問で申し訳ありませんが、ご指導ください。

No.4119 2017/06/11(Sun) 14:59:07

Re: 記録が出来ない / satocha
「デスクトップ上にダウンロードし」たあと、きちんと解凍したのでしょうか。
zipファイルをダブルクリックしただけでは、一見通常のフォルダのように見えても、UWSC.exeが圧縮フォルダ内のRecUws.dllを認識できません。
http://www.uwsc.info/faq.html#N5

もし、きちんと解凍したうえで上記の問題が起きているなら、ダウンロードが不完全だった可能性がありますので、もう一度ダウンロードし直してみてください。

No.4124 2017/06/12(Mon) 17:01:14

Re: 記録が出来ない / skyblue
・GruGru.uwsを読み込んで、電卓がぐるぐる回り、電卓計算はできています。
 この状況では解凍できているとは保証できませんか?

・2回ほどダウンロードし解凍していますが結果は同じです。

・ウィンドウズ10で問題が起きる場合が有るのでしょうか?

No.4131 2017/06/13(Tue) 17:53:10

Re: 記録が出来ない / 確認
使用期限が過ぎているのでは? 以前一度インストールしているとか。
No.4132 2017/06/14(Wed) 08:05:19
ソフトのボタンがグレイアウトの場合は分岐する / jasmine
弥生販売の集計をUWSCソフトで行っています。

集計の元値がないと、CKLITEMで押す予定のボタンがグレイアウトしていて押下できず、
プログラムがそこで止まってしまいます。

グレイアウトしていて押せない場合は処理をとばして(分岐して)数行先の処理に進む、という素敵な方法はないでしょうか?

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

No.4123 2017/06/12(Mon) 15:10:38

Re: ソフトのボタンがグレイアウトの場合は分岐する / satocha
getitemの第5引数の真偽で、全部品を取得するかイネーブルのものだけを取るか指定できます。
No.4125 2017/06/12(Mon) 17:18:23

Re: ソフトのボタンがグレイアウトの場合は分岐する / stuncloud
ret = clkitem(id, "ボタン名", CLK_BTN, FALSE)
if ret then
 print "クリックできます"
else
 print "クリックできません"
endif

ボタンがディセーブルで押せない場合はclkitemがFALSEを返します
clkitemの第四引数をFALSEにすることでクリック可能な場合でもクリック処理を行わないので、クリックできるかどうかだけを調べるたい場合はこの方法が便利です
クリックしつつ処理を続行する場合は第四引数をTRUEにするか、省略してください

No.4126 2017/06/12(Mon) 18:11:15

Re: ソフトのボタンがグレイアウトの場合は分岐する / jasmine
ご回答ありがとうございます♪
これからTryしてみます!!
ありがとうございました。

少し時間がかかるかもしれませんが、
うまくいきましたら、またこちらでご報告致します!

No.4129 2017/06/13(Tue) 09:51:25

Re: ソフトのボタンがグレイアウトの場合は分岐する / jasmine
できました!!
stuncloudさんが示していただいた方法で問題クリア!!できました♪
素晴しいです!!感謝です!

satochaさんもありがとうございましたm(__)m

とりあえずご報告まで☆

No.4130 2017/06/13(Tue) 11:53:10
TXT読み込みおよび計算について / null
TXTファイルの内容
200

TXTファイルの内容をKBDを使って出力
またTXTファイル"200"に*2をしてKBDを使って出力

このコードを作成したいのですがうまくいきません
ご回答よろしくお願いします(o*。_。)oペコッ

No.4120 2017/06/12(Mon) 02:29:15

Re: TXT読み込みおよび計算について / 森
スクリプトは以下の通りです。
基本的なコマンドの基本的な使い方ばかりなので、各コマンドについてはヘルプを参照してください。

f = fopen("TXTファイル.txt")
s = fget(f, F_ALLTEXT)
fclose(f)

id = getid("出力したいウインドウ")
ctrlwin(id , ACTIVATE)

// 200を出力
for i in s
 kbd(eval("VK_" + i))
next

// 200 * 2を出力
s = val(s) * 2
for i in s
 kbd(eval("VK_" + i))
next

No.4121 2017/06/12(Mon) 08:33:50

Re: TXT読み込みおよび計算について / null
森様ありがとうございます
kbd(eval("VK_" + i))が定義されてませんとエラーが出ます
どこの部分が悪いのでしょうか?

No.4122 2017/06/12(Mon) 11:33:20

Re: TXT読み込みおよび計算について / 森
UWSCのエラーはコマンドが大文字で表示されるので、提示されたエラー文は実際のものとは違っていて、実際はこのように表示されていたのでは?
-----------------
変数:VK_が定義されていません
〇行目:KBD(EVAL("VK_" + I))
-----------------

だとすると、原因はテキスト中に"200"以外に、スペース、改行、タブなどが含まれていることが可能性の一つとして推測できます。
このことは以下のスクリプトを動かしてみると理解できると思います。
---------------------------------------
// 改行が含まれたテキスト
textblock txt
123

endtextblock

// 123出力の後、改行でエラー発生
exec("notepad")
for i in txt
 kbd(eval("VK_" + i))
next

No.4127 2017/06/12(Mon) 18:25:53

Re: TXT読み込みおよび計算について / null
無事することができました
原因は読み込みファイル名の間違いでした
ありがとうございました!次からちゃんと確認します

No.4128 2017/06/12(Mon) 21:03:24
exe化のコマンドライン書式を教えてください。 / もも
すいません、数年前に一度、教えて頂いたと思うのですが、
*.uwsのexe化のコマンドライン版の設定方法とかヘルプの場所とか
どなたか解説or誘導お願いします。

いつもはUws2ExeのGUI版で問題ない頻度なのですが、
最近、ちびっと修正してはexe化してデバッグ…が頻発してまして、
定番設定をショートカット化してドロップ変換とかしたいんです。

よろしくお願いします。

No.4116 2017/06/08(Thu) 18:22:58

Re: exe化のコマンドライン書式を教えてください。 / もも
うわすいません、
書いた直後に Uws2Exe.chm 見つけました。
失礼しました。

No.4117 2017/06/08(Thu) 18:27:19

Re: exe化のコマンドライン書式を教えてください。 / stuncloud
> 最近、ちびっと修正してはexe化してデバッグ…が頻発してまして、
> 定番設定をショートカット化してドロップ変換とかしたいんです。

僕もこういうのやることあるんですが、そういう場合はGET_UWSC_NAMEを見て.uwsで実行されたら自身をexe化、.exeで実行されたら本来の処理を行うようにしてます
楽ちんでいいです

No.4118 2017/06/09(Fri) 11:18:25
nextSibling がエラーを起こす / t-kawamura
以下のプログラムが

  COM_Error:例外が発生しました。 32行目: PRINT G_RESULT.nextSibling.outerhtml

となります。

動作環境 GET_UWSC_VER=5.21 GET_UWSC_PRO=0
Windows 7 professional 32bit   Internet Explorer 11 です。

何が問題なのでしょうか?


////////////////////エラーを起こすプログラム////////////////////////////////////

public g_ie,g_result
print " "

///手動で http://pr.nikkei.com/pc/n/index.html をInternet Explorerのカレントタブにする

g_ie=GETACTIVEOLEOBJ("InternetExplorer.Application","日経電子版")
IEwait()
IEshow()
print g_ie.document.title // 「日経電子版ご購読の申し込み」を確認する

MSGBOX("中断1")

for tag1 in g_ie.document.GetElementsByTagName("div")
ifb pos( "/common/images/logo", tag1.outerhtml )
n = 0
tag2s = tag1.GetElementsByTagName("div")
for i = 0 to tag2s.length-1
ifb pos( "/common/images/logo", tag2s.item(i).outerhtml )
n = 1
break
endif
next
ifb n = 0
g_result = tag1
break
endif
endif
next

print g_result.outerhtml
print g_result.parentnode.outerhtml
print g_result.nextSibling.outerhtml

MSGBOX("中断2")
exit



// 起動中のIEを見えるように
procedure IEshow()
g_ie.visible = True

// 位置調整
wid = hndtoid( g_ie.hwnd )
acw( wid )
//acw( wid, 0, 0 )

// 最大化
ctrlwin( wid, ACTIVATE )
//ctrlwin( wid, MAX )

// マウス相対座標をこのブラウザ基準に設定
MouseOrg( wid )
fend


// IEがビジー状態の間待ちます
procedure IEwait()
repeat
sleep( 0.1 )
until ( ! g_ie.busy ) and ( g_ie.readystate = 4 )
fend

No.4098 2017/06/03(Sat) 14:33:04

Re: nextSibling がエラーを起こす / satocha
htmlのソースはこんな感じに書かれています。
<tag1>
 tag1の中身
</tag1>
ここに何かテキスト
<tag2>
 tag2の中身
</tag2>

で、tag1の次要素はtag2ではなく、「ここに何かテキスト」というテキストノードとなることは納得できると思います。

今、「ここに何かテキスト」部分を削除し、改行だけを残すとどうなるでしょう。

あたかもtag1の次要素はtag2であるかのように人の目には見えますが、改行がある以上、機械的には次要素はテキストノード(ただし中身の文字列は空)のままです。テキストノードのinnerHTMLやouterHTMLは取れませんから、エラーになります。

ちなみに昔のIEはここらへん、融通を利かせていたのですが、モダンブラウザ化が進み、HTMLの原則に従うようになってきています。

対処法:あるノードのnextSiblingのノードタイプがテキスト(=3)なら、さらに次を探せばよい。下はループにしなくてもいいと思いますが念のため。

nextElement =g_result
repeat
 nextElement =nextElement.nextSibling
until nextElement.nodeType<>3

print nextElement.outerhtml

No.4101 2017/06/04(Sun) 11:28:36

Re: nextSibling がエラーを起こす / t-kawamura
satocha様
ご指摘のように、tag1 と tag2 の間のノードのことを無視していました。
「next」 は 単純に「次のタグ」と思い込んでいました。


https://syncer.jp/javascript-reference/element/nextelementsibling

もしも2つ目と3つ目のli要素の間に何も文字がなければ、
nextSiblingとnextElementSiblingプロパティの内容は同じになります。
要素だけが必要となる場合、nextElementSiblingプロパティは有用です。


にあるように、最近のブラウザの作り方の変更により、
DOM呼び出しの結果に違いが出ているのだとわかりました。

今回は、nextElementSibling で解決するみたいです。

本当にお世話になりました。ありがとうございました。

No.4109 2017/06/05(Mon) 15:54:05
動作を一つに / れい
初心者の質問で申し訳ありません。

uwscの仕様について質問なのですが、マクロをこまめに作っていき、複数のマクロファイルを一つの動作としてつなげるといったことは可能なのでしょうか?

フリーのuwscを使っており、有料のも
のだとテキストの関数を繋げればよいだけなので可能かと思いますが、フリーのuwscでは複数の保存した動作をまとめることは不可能でしょうか?

No.4107 2017/06/05(Mon) 13:50:22

Re: 動作を一つに / しろまさ
> 有料のものだとテキストの関数を繋げればよいだけなので可能かと思いますが

フリーでもその考えでOKですよ?

別ファイルをCallで繋げることは可能ですが、
Callは関数群の読み込みとしメインで関数の順番を組み立てるのが
管理しやすい使い方だと思います(個人的に)

まあ、使用方法はお好みで。

No.4108 2017/06/05(Mon) 15:11:28
配列データを使用して表作成 / よっさん
配列データを使用して表を作成したいのですが、もっと簡単にできる方法ないでしょうか?
textblockを使って、a1+配列データ1+a2+配列データ2+a3でやるしかないのでしょうか?
a1、a2、a3それぞれファイル作成してfgetで読み取ってやってもいいですが、いまいち非効率のような気がします。
procedureを使ったらできるような気しますがいまいち使い方が分かりません。
何か良い方法ないでしょうか?

textblock a1
<table class="table">
【】
<thead>
<tr>
endtextblock

配列データ1
// <th>ーーーー</th>
// <th></th>
// <th></th>
// <th></th>


textblock a2
</tr>
</thead>
<tbody>
<tr>
endtextblock

配列データ2
// <td></td>
// <td></td>
// <td></td>
// <td</td>


textblock a3
</tr>
</tbody>
</table>
endtextblock

No.4099 2017/06/04(Sun) 07:21:58

Re: 配列データを使用して表作成 / satocha
確かにHTMLのタグを切り張りしていくのは非効率ですね。それに間違いも多そうです。
そういうときは、htmlのことはhtmlに任せるのがラクです。

具体的にはhtmlオブジェクトを生成して、タグ(というか要素)をDomで生成して次々ぶち込んでいって、最後に出来上がったHTMLを取ってくるというやり方です。



//ダミーのHTMLオブジェクトを生成
document =createOleObj("htmlfile")
//空っぽなのでbodyだけ作っておく
body =document.createElement("Body")
document.appendChild(body)
//tableタグを生成
table =document.createElement("table")
//タグ(要素)に属性がある場合は、setAttribute( 要素名, 値 )
table.setAttribute( "class", "table" )
//タグでなくテキストを入れるときはcreateElementではなくcreateTextNodeを使う
text =document.createTextNode("ここにテキストを入れる")
//内側から順に登録
table.appendChild(text)
body.appendChild(table)
//htmlオブジェクトが作ってくれたHTMLを頂く
HTML=document.body.innerHTML
msgbox(HTML)

No.4100 2017/06/04(Sun) 10:20:44

Re: 配列データを使用して表作成 / よっさん
satocha様、返信ありがとうございます。
さっそく参考に作成したみたのですが、配列のデータをうまく反映させる事ができません。th.appendChild(text11[y])がエラーになります。何か良い方法ないでしょうか?

//ダミーのHTMLオブジェクトを生成
dim a[]="bb","cc","dd"
document =createOleObj("htmlfile")
//空っぽなのでbodyだけ作っておく
body =document.createElement("Body")
document.appendChild(body)

//tableタグを生成
table =document.createElement("table")
thead =document.createElement("thead")
tr =document.createElement("tr")
tr1 =document.createElement("tr")
th =document.createElement("th")
tbody =document.createElement("tbody")
td =document.createElement("td")


//タグ(要素)に属性がある場合は、setAttribute( 要素名, 値 )
table.setAttribute( "class", "table" )

//タグでなくテキストを入れるときはcreateElementではなくcreateTextNodeを使う

for i = 0 to 2
dim text11[i] =document.createTextNode(a[i])
next

//内側から順に登録
table.appendChild(text)
body.appendChild(table)
table.appendChild(thead)
thead.appendChild(tr)
tbody.appendChild(tr1)
table.appendChild(tbody)
tr.appendChild(th)
tr1.appendChild(td)

for y = 0 to 2
th.appendChild(text11[y])
next

//htmlオブジェクトが作ってくれたHTMLを頂く
HTML=document.body.innerHTML

No.4102 2017/06/04(Sun) 15:03:49

Re: 配列データを使用して表作成 / よっさん
上の続き。
下記のような結果にしたいです。
何か良い方法ないでしょうか?
<table class="table">
<thead>
<tr>
<th>bb</th>
<th>cc</th>
<th>dd</th>
</tr>
</thead>


<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

No.4103 2017/06/04(Sun) 15:05:15

Re: 配列データを使用して表作成 / satocha
for y = 0 to 2
th.appendChild(text11[y])
next

この部分って、同じthにテキストノードを3つ作ってますね。

<th>bb</th>
<th>cc</th>
<th>dd</th>
にしたいなら、3つのth要素を生成する必要があります。tbodyの方はいじっていませんが、こんな感じ

//ダミーのHTMLオブジェクトを生成
document =createOleObj("htmlfile")
//空っぽなのでbodyだけ作っておく
body =document.createElement("Body")

//tableタグを生成
table =document.createElement("table")
thead =document.createElement("thead")
tr =document.createElement("tr")
tr1 =document.createElement("tr")
th =document.createElement("th")
tbody =document.createElement("tbody")
td =document.createElement("td")


//タグ(要素)に属性がある場合は、setAttribute( 要素名, 値 )
table.setAttribute( "class", "table" )

//th要素を生成・登録
dim thTexts[]="bb","cc","dd"
dim ths[length(thTexts)]
for i = 0 to length(thTexts)-1
ths[i]=document.createElement("th")
ths[i].appendChild(document.createTextNode(thTexts[i]))
tr.appendChild(ths[i])
next

//その他の要素を登録
body.appendChild(table)
table.appendChild(thead)
thead.appendChild(tr)
tbody.appendChild(tr1)
table.appendChild(tbody)
tr1.appendChild(td)


//htmlオブジェクトが作ってくれたHTMLを頂く
HTML=body.innerHTML
msgbox(HTML)

No.4104 2017/06/05(Mon) 04:30:39

Re: 配列データを使用して表作成 / よっさん
satocha様、貴重な回答ありがとうございます。1次元配列を使用しての処理はうまくできました。最終的にしたい処理というのが、2次元配列を使用しての処理の為、色々やってみたのですがなかなかうまくできません。下記が1次元配列・2次元配列を使用してのコードになります。

[1次元配列]
call C:\Users\a.uws
file="aパス"

file1="bパス"

Dim res = COMMON.test_hairetu1(file)//配列変数res:3つ

Dim res1 = COMMON.test_hairetu1(file1)//配列変数res1:3つ


//ダミーのHTMLオブジェクトを生成
document =createOleObj("htmlfile")
//空っぽなのでbodyだけ作っておく
body =document.createElement("Body")

//tableタグを生成
table =document.createElement("table")
thead =document.createElement("thead")
tr =document.createElement("tr")
tr1 =document.createElement("tr")
th =document.createElement("th")
tbody =document.createElement("tbody")
td =document.createElement("td")


//タグ(要素)に属性がある場合は、setAttribute( 要素名, 値 )
table.setAttribute( "class", "table" )

//th要素を生成・登録
// dim thTexts[]="bb","cc","dd"
dim ths[length(res)]
for i = 0 to length(res)-1
ths[i]=document.createElement("th")
ths[i].appendChild(document.createTextNode(res[i]))
tr.appendChild(ths[i])
next


//th要素を生成・登録
// dim thTexts1[]="bb1","cc1","dd1"
dim ths1[length(res1)]
for i = 0 to length(res1)-1
ths1[i]=document.createElement("td")
ths1[i].appendChild(document.createTextNode(res1[i]))
tr1.appendChild(ths1[i])
next


//その他の要素を登録
body.appendChild(table)
table.appendChild(thead)
thead.appendChild(tr)
tbody.appendChild(tr1)
table.appendChild(tbody)
// tr1.appendChild(td)

//htmlオブジェクトが作ってくれたHTMLを頂く
HTML=body.innerHTML


[2次元配列でためしているコード]

call C:\Users\Desktop\a.uws

hensu="C:\Users\Desktop\管理.xlsx"

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :=hensu)
XLACTIVATE( Excel, "Sheet2")
res=XLGETDATA( Excel, "b1:d1")//3つ要素
res1=XLGETDATA( Excel, "b2:d2")//3つ要素

n1=RESIZE(res[3]) //下位次元
n2=RESIZE(res) //上位次元

//3
factor=n1 * n2

n1a=RESIZE(res1[3]) //下位次元
n2a=RESIZE(res1) //上位次元

//3
factor1=n1 * n2


//ダミーのHTMLオブジェクトを生成
document =createOleObj("htmlfile")
//空っぽなのでbodyだけ作っておく
body =document.createElement("Body")

//tableタグを生成
table =document.createElement("table")
thead =document.createElement("thead")
tr =document.createElement("tr")
tr1 =document.createElement("tr")
th =document.createElement("th")
tbody =document.createElement("tbody")
td =document.createElement("td")


//タグ(要素)に属性がある場合は、setAttribute( 要素名, 値 )
table.setAttribute( "class", "table" )


//th要素を生成・登録
dim ths[length(res)]
for i = 1 to length(res)
ths[i]=document.createElement("th")
ths[i].appendChild(document.createTextNode(res[1,i]))
tr.appendChild(ths[i])

next


//th要素を生成・登録
dim ths1[length(res1)]
for i = 1 to length(res1)
ths1[i]=document.createElement("td")
ths1[i].appendChild(document.createTextNode(res1[1,i]))
tr1.appendChild(ths1[i])

next


//その他の要素を登録
body.appendChild(table)
table.appendChild(thead)
thead.appendChild(tr)
tbody.appendChild(tr1)
table.appendChild(tbody)


//htmlオブジェクトが作ってくれたHTMLを頂く
HTML=body.innerHTML
print HTML

No.4105 2017/06/05(Mon) 11:23:38

Re: 配列データを使用して表作成 / satocha
根本的な部分で配列を理解されていないように思います。
resもres1も3要素の1次元配列ですよね。ヘルプの配列の項を見てください。

ここらへんは何をしたいのでしょうか。

たとえば、resではなくres[3]はただの変数と同じですから"n1=RESIZE(res[3])"で添字を取ってきても無意味ですし、RESIZE(res)は最初から3だと分かっています。

n1=RESIZE(res[3]) //下位次元
n2=RESIZE(res) //上位次元

//3
factor=n1 * n2

n1a=RESIZE(res1[3]) //下位次元
n2a=RESIZE(res1) //上位次元

//3
factor1=n1 * n2

No.4106 2017/06/05(Mon) 12:47:37
SLCTBOXのボタンを押すと串刺しになる時がある / 流れ星
現在、Ver5.3.0.2を使用しているのですが、SLCTBOXの表示が手前にあり、後ろにウィンドウが重なっている状況でSLCTBOXのボタンを押すと、串刺しになって後ろのウィンドウもクリックされる時があるのですが、回避方法とかあるのでしょうか?
No.4031 2017/05/26(Fri) 13:48:38

Re: SLCTBOXのボタンを押すと串刺しになる時がある / koi
関数だけで回避できるようなものは無いと思います
  以前自分でも経験したことがありますが
  明確な発生条件特定ができなかった記憶が
  (同じ環境でも出たりでなかったりしたような)

対処案とすれば
ウインドウが重ならないように事前に最小化表示にする
とかいった事を行えば何とかなるような気はします

串刺し状況でクリックされたといってそれが困る
という状況も限られるような気もします
(ゲーム系ならあり得るかもですがその系統の書き込みは禁止)

No.4053 2017/05/29(Mon) 10:23:48

Re: SLCTBOXのボタンを押すと串刺しになる時がある / 流れ星
返信、有難う御座いました。

自分だけの問題ではないようで、一安心しました。

串刺しになる発生頻度は高いのですが、更に稀にですが串刺し後に下方向にスクロールします。

SLCTBOX表示が一覧表示と重なっている為、本来選択してビューア表示している物が違う物に変わってしまうので困ります。
ビューア表示を見ながら作業している為、最小化は好ましくありません。

業務処理の為に作成したスクリプトなので、回避方法を模索しています。

No.4055 2017/05/29(Mon) 21:35:40

Re: SLCTBOXのボタンを押すと串刺しになる時がある / stuncloud
ショートカットキーを設定しマウス使わずキーボードで入力できるようにする、のはどうでしょうか

slctbox(SLCT_BTN, 0, "キーボードで入力", "ボタン&A", "ボタン&B", "ボタン&C")

キーを示すアルファベット、数字、記号の前に「&」を付けることで下線が引かれショートカットキーとして機能するようになります

No.4073 2017/06/01(Thu) 12:08:07

Re: SLCTBOXのボタンを押すと串刺しになる時がある / satocha
下敷きを当てるのはどうでしょう。
DEBUGをtrueにすれば動作が見えます。別スクリプトで起動することを想定していますが、関数化してスレッドで動かしてもいいかもしれません。難点は一瞬、セレクトボックスが点滅することです。

public DEBUG =true
while !getKeyState(vk_q)
 selid =getid( ,"TUslctBox_uwsc", 0.01 )
 if !status( selid, st_isid)
  sleep(0.01)
  continue
 endif
 x=status( selid, st_X )
 y=status( selid, st_Y )
 width=status( selid, st_width )
 height=status( selid, st_height )
 ctrlwin( selid, hide )

 boardid =getid( genPencilBoard(),,-1 )
 acw( boardid, x, y, width, height )
 ctrlwin( boardid, topmost )
 ctrlwin( selid, show )
 ctrlwin( selid, topmost )
 ctrlwin( selid, activate )
 while status( selid, st_isid )
  sleep(0.01)
 wend
 ctrlwin( boardid,close )
wend
msgbox("終了しました")
exitexit
function genPencilBoard()
 gtime =gettime() + "." + g_time_zz2
 src  =replace( bd, "<gtime>", gtime )
 if DEBUG
  src  =replace( src, "$board.opacity", "#$board.opacity" )
  src  =replace( src, "$board.FormBorderStyle", "#$board.FormBorderStyle" )
  src  =replace( src, "#$board.Add_Click", "$board.Add_Click" )
 endif
 powershell( "$src=[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes( '" + src + "' ));powershell -STA -EncodedCommand $src", true, false )
 result = "PencilBoard_" + gtime
 textblock bd
  Add-Type -AssemblyName System.Windows.Forms
  $board    =new-object System.Windows.Forms.Form
  $board.text   ="PencilBoard_<gtime>"
  $board.FormBorderStyle =[System.Windows.Forms.FormBorderStyle]::NONE
  $board.opacity  =0.01
  #$board.Add_Click({[System.Windows.Forms.messagebox]::show("下敷がクリックされた")})
  $board.showDialog()
 endtextblock
fend

No.4096 2017/06/02(Fri) 13:49:02

Re: SLCTBOXのボタンを押すと串刺しになる時がある / 流れ星
返信、有難う御座いました。

stuncloud様
複数の担当者で作業している為、キーボードでの入力には好みの分かれるところではありますが、選択肢が増えることは良いことなので設定してみます。

satocha様
「下敷きを当てる」というアイディアは持っていたのですが、作り方が分かりませんでした。透明の吹き出しを表示させてSLCTBOXを前面に出そうとしたのですが駄目でした。教えて頂いた方法で試してみます。

No.4097 2017/06/02(Fri) 20:30:15


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


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