[ 掲示板に戻る ]

過去ログ閲覧モード

accessのマクロの実行 / bee
すでに起動しているaccessのファイル d:\test\db.mdbのテストマクロという名前のマクロをuwscで実行したいのですが、どのようにすればよいのでしょうか。
No.4305 2017/08/14(Mon) 12:16:15

Re: accessのマクロの実行 / yanyan
VBAをくぐるといろいろなCOM関係の情報が得られるので、UWSC用に変換する

AccessObj = GetActiveOleObj("Access.Application")
AccessObj.DoCmd.RunMacro("テストマクロ")

No.4306 2017/08/14(Mon) 16:31:16

Re: accessのマクロの実行 / bee
教えていただいた方法で、無事にマクロを実行できました。
ありがとうございました。

No.4307 2017/08/15(Tue) 11:50:28
重複しないデータをカウント / 初心者
{"id":111},{"id":222},{"id":333},{"id":111},

この文字列の中から重複しないデータのカウントをして3という結果を出す場合はどうすれば良いでしょうか。

No.4299 2017/08/09(Wed) 19:42:19

Re: 重複しないデータをカウント / satocha
<前提>
>重複しないデータのカウントをして3という結果を出す
ことはできません。なぜなら、重複しないデータの数は4通りあるからです。並び順を変えて
{"id":111},,{"id":222},{"id":333},{"id":111}
とすると問題がはっきりすると思います。
コンマで終わっている(ように見える)ので気づきにくいですが、データが空文字である最後尾の状態も他の状態と区別される一つの状態だからです。

<重複削除>
データの重複を避ける常套的な手段として、連想配列の利用があります。コードで書くとこんな感じ。

hashtbl data_hash
for data in split( DATA_STRING, "," )
 data_hash[ data ]="dummy"
next
msgbox( "重複しないデータの個数は"+length(data_hash) )
textblock DATA_STRING
{"id":111},{"id":222},{"id":333},{"id":111},
endTextBlock

先に述べたようにデータの個数は4となります。これが、どう動くのかを理解しようとすると、結構な頭の体操になります。詳しい説明が本掲示板1489以下のスレッドにあるので見ておいてください。
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=1489

<uniq>
dos/windowsにはありませんが、UNIX系システムには古くから(何十年も前から)重複行を削除する「uniq」というコマンドが実装されています。このコマンドは直前の行と現在の行を比較し、同じなら出力しないというだけなので、使うときはソートコマンドとのセットになります。
ファイル出力|sort|uniq|wc -l

Windows10では去年夏のアップデート以降、Linuxディストリビューションの一つUbuntuがオプションで使えるようになっているので、これを試すこともできます。

UNIX系uniqは使える環境が限られますが、UNIX系シェルを超えることを目標の一つに開発されたpowershellも「get-unique」というコマドレットを持っています。powershellはXP以降のWindowsすべてで使えます。UWSCから利用する方法は下を見てください。

msgbox("重複しないデータの個数は"+powershell(src))
textblock src
$dataArray=@"
{"id":111},{"id":222},{"id":333},{"id":111},
"@ -split ","
($dataArray|sort-object|get-unique).length
endtextblock

No.4300 2017/08/10(Thu) 04:17:46

Re: 重複しないデータをカウント / satocha
追加です。

<uniqを自分でやってみる>

前項を書いてみて、 @ソートし、A直前と比較する なら何も出来合いの機能じゃなくても簡単に書けることに気づきました。

array=split("{<#dbl>id<#dbl>:111},{<#dbl>id<#dbl>:222},{<#dbl>id<#dbl>:333},{<#dbl>id<#dbl>:111},",",")
qsort(array)
count=0
before=null+null+null
for data in array
 if data <> before then count=count+1
 before=data
next
msgbox("重複しないデータの個数は"+count)

ここでキモとなるのはおそらくどんな文字列にも(空文字にも)等しくならないであろう文字列を最初に変数beforeに与えておくこと。自力で発見したのではなく、stuncloudさんのブログからパクった←←←←インスパイアされたのは内緒です。

No.4301 2017/08/10(Thu) 05:31:50

Re: 重複しないデータをカウント / しろまさ
// 連想配列版
HashTbl hDat
ary=split("{<#dbl>id<#dbl>:111},{<#dbl>id<#dbl>:222},{<#dbl>id<#dbl>:333},{<#dbl>id<#dbl>:111},",",",TRUE) // arg3:TURE で空文字削除
for d in ary
 hDat[d] = d
next
msgbox("重複しないデータの個数は"+Length(hDat))

No.4302 2017/08/10(Thu) 10:39:03
MOUSEORG関数のMORG_DIRECT指定時 / name
ver5.2.3ではMOUSEORG関数のMORG_DIRECT指定時 Ctrlが反応するんですが、Ver5.3.0.2では反応してくれません。
同じスクリプトファイルを使っています。

No.4278 2017/07/28(Fri) 12:20:26

Re: MOUSEORG関数のMORG_DIRECT指定時 / name
windows10です
No.4279 2017/07/28(Fri) 12:21:44

Re: MOUSEORG関数のMORG_DIRECT指定時 / name
コマンドプロンプト使用時です
No.4297 2017/08/06(Sun) 11:07:31

Re: MOUSEORG関数のMORG_DIRECT指定時 / umiumi
確認しました。
対処します。

No.4298 2017/08/08(Tue) 18:04:36
ずっとbusy状態になります。 / たく
UWSCバージョン:5.3(フリー版)
OS:Windows 7 Pro
IEバージョン:11.0.9600.18738
IE更新バージョン:11.0.44(KB4025252)

上記環境の2台の仮想PCでUWSCを起動させているのですが、2台のうち1台がこちらのページのGOボタンを押すと、ずっとbusy状態となり、いつまで経ってもループを抜けません。
readystateは4になります。
http://www.geocities.jp/geogeo5533/index.html
(このページは質問のために作成したテストページとなります)

[2台のPCで動作させているソースコード]
IE = getactiveoleobj("InternetExplorer.Application")

while IE.busy or IE.readystate<>4
   print IE.busy+" "+IE.readystate
   sleep(1)
wend

何度か試しているうちに下記のコードだとループを抜けることができました。readystateは4になります。
[改善したソースコード]
IE = getactiveoleobj("InternetExplorer.Application")

while IE.busy or IE.readystate<>4
   IE = getactiveoleobj("InternetExplorer.Application")
   print IE.busy+" "+IE.readystate
   sleep(1)
wend

後者のコードで動作するので、busy状態がループの中で返ってきていない様に感じます。
なぜこのような動作の違いが発生するのでしょうか?

2台のPCともに、UWSCのバージョン、OSやIEバージョンなどは同じですが、その他の構成には若干違いがあります。

しかし、全ての差異を確認するのは大変ですので、何か必要な情報などございましたらお教えください。

どうぞよろしくお願い致します。

No.4290 2017/08/04(Fri) 04:42:58

Re: ずっとbusy状態になります。 / satocha
外しているかもしれませんが、だめなほうは、インターネットオプションの「保護モードを有効にする」が外れてたりしませんか。
No.4291 2017/08/04(Fri) 16:09:41

Re: ずっとbusy状態になります。 / たく
ご返信ありがとうございます。

確認しましたところ、2台のPC共に有効にチェックが入っていました。

こちらからの質問で恐縮ですが、satocha様はこちらのページのGOボタンを押してもbusy状態のままとなりませんでしょうか?
http://www.geocities.jp/geogeo5533/index.html

No.4293 2017/08/05(Sat) 09:32:16

Re: ずっとbusy状態になります。 / satocha
そのスクリプトだと速すぎてGOボタンを押せなかったので、スクリプトの中でボタンを押してみましたが、正常動作でした。
環境はWin10 Creators Update適用

IE = getActiveOleObj("InternetExplorer.Application")
IE.navigate2("http://www.geocities.jp/geogeo5533/index.html")
while IE.busy or IE.readystate<>4
wend
getOleItem(IE.document.getElementsByTagName("input"))
submit=all_ole_item[0]
//ボタンがちゃんと取れてるか確認
msgbox(submit.outerHTML)
//Goボタンクリック
submit.click()
while IE.busy or IE.readystate<>4
   print IE.busy+" "+IE.readystate
   sleep(1)
wend
   print "exited"
   print IE.busy+" "+IE.readystate
   sleep(1)

いずれにせよ、IEオブジェクトの再取得で問題が解決されるなら、一定時間得ループを回したあと、時間切れならオブジェクトを再取得するような手順をスクリプトに追加すればいいのでは?
検証してないけれど、こんな感じ。
wait=0.5   //0.5秒待つ
limit=gettime()
limit=limit+g_time_zz+wait

while IE.busy or IE.readystate<>4
   now=gettime()
   now=now+g_time_zz
   if now > limit
   IE = getactiveoleobj("InternetExplorer.Application")
   endif
   print IE.busy+" "+IE.readystate
   sleep(1)
wend

No.4294 2017/08/05(Sat) 11:05:28

Re: ずっとbusy状態になります。 / たく
検証、改善策のコードのご提供頂きありがとうございます。

個人的に、IEオブジェクトの操作で、なぜPC間によって動作が異なるのか疑問に思いました。

UWSCのバグなのか、または何か必要な更新プログラムをインストールしていないのか、原因が判明すればと思い投稿いたしました。

もし原因がわかる方がいらっしゃいましたら、ご教示頂けると幸いです。

No.4295 2017/08/05(Sat) 19:07:22

Re: ずっとbusy状態になります。 / satocha
こちらで再現できないので、断定できないのですが、たく様の環境でも
    IE = getactiveoleobj("InternetExplorer.Application")
の1業を追加すること(=IEオブジェクト再取得)で動いた、ということですよね。。

もしそうなら、仮にUWSCに何か問題があるとすれば、IEオートメーションが切断されているにもかかわらず、IE.busy だの IE.readystate だのの参照がエラーにせず、前の値を返していることでしかありません。

この問題(あえて不具合とは言いません)に対処しなければならないとすれば、UWSC製作者は、COMオブジェクト配下のプロパティ参照やメソッド実行に際していちいち、オートメーションの接続を確認するコードを付加しなければならなくなり、その結果は程度は分かりませんが、UWSCのパフォーマンスを低下させることになるでしょう。

UWSCの挙動を問題にするのではなく、純粋に知的好奇心から、環境の違いによってIEオートメーションの動きに違いがある原因を知りたいというのでしたら、この掲示板はUWSCに特化した掲示板ですので、質問先としてはふさわしくないと思います。MSのテックネットのIEフォーラムなどで質問されるのがいいと思います。

ただ、現状、たく様がお示しの情報では、2つの環境の差は誰にも分からない状況ですので、最低でも、レジストリのIEまわり、インターネットオプション周りのデータをエクスポートして質問されることをおすすめします。

No.4296 2017/08/05(Sat) 20:06:05
SAVEIMGによるキャプチャについて / IKE
UWSCを利用して、IEで表示させたWebページのキャプチャを取得したいと考えています。
BMPファイルは容量が大きいのでJPG形式にし、なおかつ不要な部分が映らないよう、次のようにしました。

IE = GETACTIVEOLEOBJ("InternetExplorer.Application")
ID = GETID("UWSC - Internet Explorer") //キャプチャ対象のタイトルに適宜変更する
SAVEIMG("test.jpg",ID,,,,,1,100)

しかし、こうして取得したキャプチャが、Webページによっては、一部の表示が消えていたり、真っ黒な画像となってしまいます。これは何が原因なのでしょうか。

また、UWSCを利用して、全画面キャプチャではなく、Webページ全体である「スクロールキャプチャ」を取得したいのですが、何か良い方法はないでしょうか。

OS:Windows 7(32bit)
ブラウザ:IE11になります。

どうぞよろしくお願いいたします。

No.4286 2017/08/03(Thu) 09:07:16

Re: SAVEIMGによるキャプチャについて / stuncloud
> また、UWSCを利用して、全画面キャプチャではなく、Webページ全体である「スクロールキャプチャ」を取得したいのですが、何か良い方法はないでしょうか。

html2canvasというのを使ってみました
https://html2canvas.hertzen.com/

以下のスクリプトはキャプチャしたいページをIEで開いており、IEオブジェクトが変数ieに格納されていることを想定しています
キャプチャした画像はIEからダウンロードして保存するようになっています(ダウンロードは待ってると始まります)

※UWSCからブラウザ上のjsを実行するトリックは
http://language-and-engineering.hatenablog.jp/entry/20090825/p1
を参考にしました、textblock proxyの部分ですね
eval叩いてるのでちょっとこわい

※ちなみに僕自身もhtml2canvasの使い方がわかってるわけではないので、使い込みたいという場合は色々調べてみてください
その場合はtextblock captureの部分を変更します(JavaScriptのコードです)

※html2canvasの注意点にもありますが、flashだとかiframe内の他所のコンテンツだとかはキャプチャできないです

//////////////////////////////////////////////////
html2canvas_path = "C:\path\to\html2canvas.js" // html2canvas.jsのパスを指定

script = ie.document.createElement("script")
script.type = "text/javascript"
script.text = proxy
ie.document.getElementsByTagName("head").item(0).appendChild(script)

fid = fopen(html2canvas_path, F_READ)
html2canvas_script = fget(fid, F_ALLTEXT)
fclose(fid)
script = ie.document.createElement("script")
script.type = "text/javascript"
script.text = html2canvas_script
ie.document.getElementsByTagName("head").item(0).appendChild(script)

ie.document._uwsc_proxy.eval_code(capture)
msgbox("キャプチャを取得中です、ダウンロードが開始されるまでしばらくお待ち下さい")


textblock proxy
document._uwsc_proxy = {
global : this,
_window : window,
eval_code : function( str ){
try{
return eval( str );
}catch(e){
return null;
}
}
};
endtextblock

textblock capture
html2canvas(document.body,{
onrendered: function(canvas){
var blob = canvas.msToBlob();
window.navigator.msSaveBlob(blob, 'capture.png');
}
});
endtextblock

No.4289 2017/08/03(Thu) 11:40:38

Re: SAVEIMGによるキャプチャについて / IKE
stuncloudさん
サンプルプログラムの方は動作させることができました。
私はjavascriptについては詳しくないので、応用は難しいかもしれませんが、参考にさせていただきます。
ありがとうございました。

No.4292 2017/08/04(Fri) 22:56:41
FOPENでメモファイルを64回以上開きたい / skyblue
 いつも大変お世話になっています。

 FOPEN関数を使って、メモ帳(1行の記録データを変化させている)を繰り返し開きますが、開く回数が64回を超えるとエラーとなり中止になります。

 何か良い方法が有ればご指導ください。

a=FOPEN(パス,F_READ or F_WRITE)
b=FGET(a, 1)

No.4284 2017/08/02(Wed) 18:51:50

Re: FOPENでメモファイルを64回以上開きたい / satocha
fopenしたあときちんとfcloseしてますか。
開きっぱなしで扱える数には上限が有りますので。

No.4285 2017/08/03(Thu) 01:11:26

Re: FOPENでメモファイルを64回以上開きたい / skyblue
satocha さん 有難う御座います。

 早々とご指導頂き感謝しています。

 nothing とか close 等が有るかと、ネットで fopen の例題を見負た時には見つける事が出来ませんでした。
また、デスクトップ上には目的のファイルが1枚も開いていなかったので、気になりませんでした。

 早速、実際のソフトで試して、後程報告します。

No.4287 2017/08/03(Thu) 09:34:33

Re: FOPENでメモファイルを64回以上開きたい / skyblue
satocha さん 

 お陰様で解決しました。
実際に走らせて問題無く64回を超えました。
ご指導、有難う御座いました。

No.4288 2017/08/03(Thu) 11:06:39
Google Chromeでの操作について / JIN
Chromeでの操作でつまづいております。(※IEでの操作は考えておりません。)
下記の2つについてお分かりの方、ご教授いただければと思います。

・公式のサンプル(#N37)がきちんと動きません。

  →実行すると動作が途中で止まってしまいます。正しいソースを教えていただけないでしょうか?


・ChromeでのTABの操作について

  →こちらは下記のような形以外にもう少しスマートなやり方はありますでしょうか?

  @リンクをShift+クリック(新しいタブが開く)
  ACtrl+TABボタンで移動(タブの移動)
  BGETIDで目的のものが表示されているか確認

どうぞよろしくお願いいたします。

No.4281 2017/07/29(Sat) 10:16:58

Re: Google Chromeでの操作について / satocha
ページ内の要素にアクセスできないので、本格的にやろうとするとブラウザ自動テストツールの
seleniumを使うくらいでしょうか。

www.google.co.jp/search?q=selenium+chrome

結構大変なので手軽にやるならアドレスBOXにjavascriptを投入してdom経由で操作するぐらいです。下はこの方法で掲示板を開き、chromeを検索する例です。

id=exec( "c:\Chrome.exeのパス http://www.uwsc.info" )
id =getChromeId( "UWSC" )
SenddToAdrBox(id, "http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=find")
js ="document.getElementsByName('word')[0].value='chrome';"
js =js+"document.getElementsByClassName('btn')[0].click();"
SenddToAdrBox(id, "javascript:"+js)

function getChromeId( title )
 result=getid(title + " - Google Chrome","Chrome_WidgetWin_1",-1)
fend
procedure SenddToAdrBox(id,str)
 sendstr(id,str,1,TRUE,TRUE)
 ctrlwin(id,Activate)
 kbd(vk_alt,down)
 kbd(vk_d)
 kbd(vk_alt,up)
 kbd(vk_return)
 sleep(1.5)
fend

No.4282 2017/07/30(Sun) 02:53:10
画像のドラッグアンドドロップについて / JIN
登録した画像の位置(FROM)から(TO)へ動かしたいのですが、うまくいきませんでした。
WEB側ではAJAXでドラッグアンドドロップを感知し、画像の入れかえをしているのですが、ドラッグはできても、ドロップができません。
ドロップするすんぜんに手でマウスを動かすときちんとドロップできているので、何かが抜けているのだと思うのですが、どうぞよろしくお願いいたします。


dx=(TO_X - FROM_X) / 20
dy=(TO_Y - FROM_Y) / 20

BTN(LEFT,DOWN,FROM_X,FROM_Y,300)
SLEEP(0.05)
FOR n=1 TO 20
x=x+dx
y=y+dy
MMV(x,y)
sleep(0.015)
NEXT
BTN(LEFT,UP,TO_X, TO_Y,300)

No.4267 2017/07/26(Wed) 14:48:52

Re: 画像のドラッグアンドドロップについて / JIN
>ドロップするすんぜんに手でマウスを動かすときちんとドロップできているので

と記載しましたが、正しくは、下記となります。

「上記プログラムでマウスが移動している際に」ドロップする寸前に手でマウスを動かすときちんとドロップできているので

どうぞよろしくお願いいたします。

No.4268 2017/07/26(Wed) 16:11:25

Re: 画像のドラッグアンドドロップについて / koi
想像で描いてます
OSがどのような形でドラッグアンドドロップと判定するのか判りませんが
ボタンダウン・マウス移動・ボタンアップ をセットで認識していた場合
MMVの時間が短かったりすると移動の検知が
できていない可能性はあるのではないかと思います
(そこを手で動かすと認識する  と言った事なら尚更そんな気がします)

移動のSLEEP時間を伸ばしたりしたら動いたりしませんか?

No.4269 2017/07/26(Wed) 17:00:22

Re: 画像のドラッグアンドドロップについて / JIN
KOIさん、ご連絡ありがとうございます。
MMV(x,y,100)とやってみましたが、やはりだめでした。

動作が遅いことによって分かったことがあります。

プログラムでは、画像が引っ張っていない状態になっていました。
(通常の画像を手作業でドラッグアンドドロップすると画像がマウスの動きについてくると思うのですが、それができていませんでした。)

マウスを手で動かすだけで(クリックしなくても)画像を掴むようで、その後はドロップまできちんと動いてくれました。

引き続き、どうぞよろしくお願いいたします。

No.4270 2017/07/26(Wed) 17:36:34

Re: 画像のドラッグアンドドロップについて / koi
擬似的にデスクトップのアイコンを
別の場所にドラッグアンドドロップする処理を行ってみました
スクリプトは以下
BTN(LEFT,DOWN,54,726)
SLEEP(1)
BTN(LEFT,UP,53,886)
SLEEP(5)
BTN(LEFT,DOWN,54,926)
SLEEP(1)
BTN(LEFT,UP,55,726)

BTN DOWN 処理後のSLEEPが短い(無い)と
動かないといった現象が確認できました

MOVEでのSLEEPではなくBTN DOWNの後の時間を(も)
延ばしたらどうなりますか?

No.4272 2017/07/27(Thu) 12:07:28

Re: 画像のドラッグアンドドロップについて / JIN
KOIさん、ありがとうございます。
やってみたのですが、やはりだめでした。

またUWSCの記録ボタンで低レベル記録(マウス移動を記録)して画像をドラッグアンドドロップしたのですが、画像がついてきませんでした。

理解できないのが手動でマウスを動かせばきちんと動くのに、UWSCだと動かないという点です。
UWSCは「マウスとキーボード入力を記録して再生する事ができます。」ということが売りだと思うのですが…

No.4273 2017/07/27(Thu) 17:02:43

Re: 画像のドラッグアンドドロップについて / stuncloud
dropfile() はどうかしら、ファイルを指定したウィンドウにドロップするための関数です
ブラウザだとだめですかね

dropfile()の使い方はヘルプを見てください

No.4274 2017/07/27(Thu) 17:28:22

Re: 画像のドラッグアンドドロップについて / JIN
stuncloudさん、ご連絡ありがとうございます。
入力画面で一度、ファイルをアップロードしてから、移動する必要があるためdropfile()では難しいです。
IEだと記録機能を使ってもドラッグができなかったのですが、Chromeでは記録ができたのでChromeでもう一度チャレンジしたいと思います。
みなさん、ありがとうございました!

No.4277 2017/07/28(Fri) 11:48:10

Re: 画像のドラッグアンドドロップについて / しき
//ドラッグ&ドロップでアップロード
//dropzone.jsプラグインのデモページ
//http://plugmin.co/plugmin/demo/dropzone-master/full.php
o_IE = GetActiveOleObj("InternetExplorer.Application")

id_IE = hndtoid(o_IE.HWND)
h_server = getctlhnd(id_IE, "Internet Explorer_Server")
id = hndtoid(h_server)

dropfile(id, 400, 400, get_cur_dir, "sample.jpg") //ドロップ位置は適当


//ドロップする位置を計算
//<div id="my-awesome-dropzone" class="dropzone">
eo_div = o_IE.Document.getElementById("my-awesome-dropzone")
eo_div.scrollIntoView() //見えるようにスクロール

o_rect = eo_div.getBoundingClientRect()
i_x = o_rect.left
i_y = o_rect.top
mmv(i_x + status(id, st_x), i_y + status(id, st_y))
msgbox(i_x +" "+ i_y)

dropfile(id, i_x +50, i_y+50, get_cur_dir, "sample.jpg")

No.4280 2017/07/28(Fri) 13:48:38
Excelシートのダブルクリックを高レベル関数で実現したい / matsu
Excelマクロで作られたツールがあります。他者から提供されたものでマクロは保護されていて中が見れません(無理に覗くのも良くないかと覗いてません)。
このツールはシート上の特定列のセルをダブルクリックすると、その行に記載されている情報を元に動作(詳細情報を表示)するようになっています。

このツールを1行ずつダブルクリックして順番に動作させていく処理をUWSCで実現したいと思います。
低レベル関数では実現出来ていますが、Excelの表示設定によって座標の調整が必要なため、他の方法が無いかと考えております。

上記のツール上で、UWSCの高度記録を試してみたところ、アイテム名がセル名、種別がCLK_ACCとなっているCLKITEMが記録されたため、記録された内容を基に試しに以下の様に組んでみましたが、いずれもCLKITEMの戻り値がFalseになります。

-----------------------------------------------
id = GETID("Book1.xlsx - Excel", "XLMAIN", -1)
ACW(id)
ret1=CLKITEM(id, "A3", CLK_LEFTCLK)
ret2=CLKITEM(id, "A3", CLK_DBLCLK)
print "1:" + ret1 + " , 2:" + ret2
-----------------------------------------------
種別はCLK_ACCなども試してみましたが変わりませんでした。

BTN以外での実現方法はありませんでしょうか。
何卒よろしくお願いいたします。

No.4271 2017/07/27(Thu) 09:50:22

Re: Excelシートのダブルクリックを高レベル関数で実現したい / stuncloud
COMでダブルクリック操作ができそうですよ
https://msdn.microsoft.com/ja-jp/library/office/ff194422.aspx

No.4275 2017/07/27(Thu) 17:32:10

Re: Excelシートのダブルクリックを高レベル関数で実現したい / matsu
ありがとうございます。

ちょうど本日それを試してみたのですが、上手く行きませんでした。
(あまりじっくり試せた訳ではないのですが)
下記は試した内容のイメージです。

EXCEL = GETACTIVEOLEOBJ("Excel.Application")
EXCEL.Workbooks("XXX.xls").Worksheets("XXX").Activate
EXCEL.Workbooks("XXX.xls").Worksheets("XXX").Cells(X, X).select
EXCEL.DoubleClick

selectまでは当然上手く動いて、その後ダブルクリックが出来ていないような動作でした。

対象ブックの中でBeforeDoubleClickにコードは仕込まれているでしょうから、
それが影響している可能性もあるかと想像しています。
簡単なブック作って試してみましたが同じでした。
確認するにはBeforeDoubleClickに何がしか仕込んでおかないといけませんし...

No.4276 2017/07/27(Thu) 18:00:01
Accessに関するサンプルを探しております・・・ / Ysum
【質問背景】
UWSCを使ったAccessへの自動操作(ボタン操作・プルダウン選択・フォーム入力・画面からの文字列取得など)について、色々とググってみたのですが、umiumiさん作成(ソースは本掲示板内のもの)の下記サンプル以外はほぼ見つからず、マクロの作成に苦戦しております。。

[uwsファイル]
http://siromasa.html.xdomain.jp/uwsc/u_sample/Com/Access/ActiveAccessOperator.uws
[テスト対象accdb]
http://www.msactry.com/down704/index.htm

上記サンプルを上手に利用しようかとも考えたのですが、uwsファイルを実行しても
"COM_Error:Could not convert variant of type (Null) into type (Dispatch)
48行目:FOR I=0 TO FORM.Controls.Count-1"
となり前に進みません。。。
(処理は、オブジェクト取得⇒"問題を解く"というボタンを1つ押下する、
 というシンプルなものです。
 デバッグしましたが、accessのオブジェクトは取得できているようですが、
 ボタンを押下する、という関数の上記48行目で弾かれているようです)

【質問1点目】
Accessを用いたuwsファイルのサンプル等が存在するサイトをご存知ないでしょうか。

【質問2点目】
上記背景に記載させて頂いているエラーの原因は何が想定されますでしょうか。

【質問3点目】
Excel comオブジェクトを利用したマクロは作成できるのですが、accessはからっきしでして、
やはり諦めて、画像認識等を駆使してマクロを組んだ方が宜しいでしょうか・・・?
(あるいは、あまりサンプルが転がっていないので感じたことなのですが、
 Accessで込み入ったUWSファイルの作成を皆さんなされないのでしょうか?)

No.4263 2017/07/24(Mon) 20:36:53

Re: Accessに関するサンプルを探しております・・・ / stuncloud
> 上記背景に記載させて頂いているエラーの原因は何が想定されますでしょうか。
FORMがNULL、あるいはFORM.ControlsがNULL
だということですね、変数にオブジェクトが入ってないです
(どうしてそうなったかはコードを見てみないことにはわからないですが)

1点目と3点目に関してはAccessのVBAで情報を探したほうが良いと思います
VBAでのApplicationオブジェクトがUWSCで言うGETACTIVEOLEOBJ("Access.Application")したものとほぼ同じです
文法も似てるところがあるのでUWSCのスクリプトが書けるのなら十分読み解けると思いますよ
これはExcelでもWordでもそうなんですが、やはり本家のVBAのほうが情報たくさんありますからね
読み解くのが難しいと感じたならば、少し遠回りになりますがVBAの簡単なサンプルからUWSCへの移植を試みると良いでしょう
そうやって慣れていけばVBAのサンプルを見ただけでUWSCのコードに落とし込めるようになるはずです

個人的にはAccess全く使わないのでUWSCで処理させるってこともないですね
DBを使いたいというケースが過去にありましたがそのときはADODBとか使ってました

No.4264 2017/07/25(Tue) 09:57:27

Re: Accessに関するサンプルを探しております・・・ / Ysum
stuncloudさん、ご返信ありがとうございます。
なるほどAccessのVBAから勉強する(あるいは調べる)というのが確かに王道ですね。
盲点でした。少し勉強してみたいと思います!ありがとうございました!

No.4266 2017/07/26(Wed) 10:48:59
全1137件 [ ページ : << 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 114 >> ]