[ 掲示板に戻る ]

過去ログ閲覧モード

同タイミングでの2つのPopupWin / tiny
はじめまして。大変お世話になっております。

下記のようなPopupWinを含む1つのスクリプトをランチメニューから同時に起動して2つのIEに対して別々に処理したいのですが、うまくいきません。
PopupWinするタイミングはそれぞれのIEでランダムなのですがほぼ同じになる時があり、その時にPopupWinした2つのウィンドウを区別できないのかうまくクリックできません。
親IEからPopupWinしたウィンドウのみをクリックすることは可能でしょうか?
よろしくお願い致します。

Thread PopupWin()
IESetData(IE,True,"","alt=決定")
BusyWait(IE)

Procedure PopupWin()
ID = getid("Web ページからのメッセージ","#32770",-1)
clkitem(ID,"OK")
Sleep(1)
Fend

No.2926 2016/09/26(Mon) 12:10:38

Re: 同タイミングでの2つのPopupWin / stuncloud
同時にダイアログが出た場合は、双方のスクリプトが同じダイアログからgetidでIDを取得しているのではないかと考えられます
そのため片方のスクリプトではクリックに成功し、もう片方はクリック対象を失って失敗している…と仮定した場合以下で回避できるのではないかと思います

Procedure PopupWin()
 ID = getid("Web ページからのメッセージ","#32770",-1)
 if ! clkitem(ID,"OK") then
  PopupWin()
 endif
Fend

クリックに失敗したらもう一度ダイアログを待機します
こうすれば残ったダイアログも見つけられるのでクリックさせられます

この方法で上手く行けば、どちらのIEが出したダイアログかは考慮する必要がないので楽ですね
ただし懸念点がないわけではなく、双方のスクリプトのclkitemが成功したことになってしまう場合にこれでは上手く処理できないんですね
タイミングによってはそういうこともあり得るかもしれないです

あとそもそも仮定が間違っている可能性もあります
とりあえずお試しください

No.2929 2016/09/26(Mon) 14:56:20

Re: 同タイミングでの2つのPopupWin / tiny
アドバイスありがとうございました。
アドバイス頂いた通りやってみたのですが、うまくいきませんでした。

>同時にダイアログが出た場合は、双方のスクリプトが同じダイアログからgetidでIDを取得しているのではないかと考えられます
>そのため片方のスクリプトではクリックに成功し、もう片方はクリック対象を失って失敗している…と仮定した場合


仰られているこの仮定はその通りだと思います。
実際例えばIE1,IE2の出すダイアログをdlg1,dlg2として、dlg2のクリックを失敗し開いている状態で次のdlg1が開かれるとIE1はdlg2をクリックしている様な現象が見られます。

引き続き良いアイデアがありましたらよろしくお願い致します。

No.2942 2016/09/27(Tue) 10:03:53

Re: 同タイミングでの2つのPopupWin / しろまさ
IEのプロセスが別ならGetAllWinからPIDで判断できるのでは?(タブ型だとダメ)
No.2943 2016/09/27(Tue) 10:37:30

Re: 同タイミングでの2つのPopupWin / stuncloud
あーだめでしたか、やはり両方でOKが押せたことになっちゃってるのかな?
であればもう双方のスクリプトで2回づつクリックを試みるとかでいい気がします

Procedure PopupWin()
 for i = 1 to 2
  ID = getid("Web ページからのメッセージ","#32770")
  clkitem(ID,"OK")
  while status(ID, ST_VISIBLE)
   sleep(0.1)
  wend
 next
Fend

getid空振り時に無限待ちしないように第三引数の-1は外しました
あとはOKをクリックしてからダイアログが消えるまでの間に同じダイアログをgetidしないように待つ処理も入れてみました (意味ないかもですが、不要そうなら消して大丈夫です)
計4回処理を試みるのでどっかしらでふたつのダイアログに引っかかるんじゃないかと思います
getidの無限待ちを止めたので thread PopupWin() はなるべくダイアログが出る直前に呼んでください

No.2944 2016/09/27(Tue) 10:47:49

Re: 同タイミングでの2つのPopupWin / tiny
アドバイス通りやりましたが、やはりうまくいかない時があります。
タイミングによっては、
COM_Error:Access violatin at adress 0068A6B1 in module 'uwsc.exe'.Read of address 00000000
のようなエラーが出て止まります。
調べたところ、実際にはクリックできてないがクリックできたと判定して次の処理に進んでしまうためエラーしている様です。
タイミングの問題ということで、sleepを場所、長さを変えて挿入したり、ループ回数を変えたり等してみましたがだめでした。
何かあと一息のような気がしますので、引き続きよろしくお願い致します。

No.2951 2016/09/27(Tue) 23:13:53

Re: 同タイミングでの2つのPopupWin / 俄プログラマー
TRYを使ってみるとか?
No.2954 2016/09/28(Wed) 00:38:28

Re: 同タイミングでの2つのPopupWin / stuncloud
こちらで検証用ページを作って試した限りでは問題なく動作しています
必要な情報が足りずこれ以上はもうアドバイスのしようもありません
(実際のサイトが見れれば話は別なんですが)
あとはもう、そもそもダイアログ出させなくするとかいった乱暴な手段しか思い浮かばない

> やはりうまくいかない時があります。
うまくいく場合もあるってことですよね
どういった場合にうまくいかないかを調べてそれに対処していくしかないでしょう
> 何かあと一息のような気がしますので
とのことなのでがんばってください

No.2961 2016/09/28(Wed) 09:50:37

Re: 同タイミングでの2つのPopupWin / tiny
わざわざ検証までして頂きありがとうございます。
もう少し原因を調べてさらに試行錯誤したいと思います。
本当にありがとうございました。

No.2964 2016/09/28(Wed) 12:22:07
テキストデータ全体をメッセージ表示 / シン
質問です
すでに開いている秀丸のテキストデータすべてをクリップボードに張り付け、メッセージに反映するにはどうすればいいでしょうか

No.2936 2016/09/27(Tue) 01:39:33

Re: テキストデータ全体をメッセージ表示 / しゅん
秀丸に対してSCKEY等で全選択・コピーを指示し、GETSTRでクリップボードから内容を取得、MSGBOXで表示すれば良いと思います。
No.2959 2016/09/28(Wed) 08:53:23
com_error / あんず
いつもお世話になっております。

過去ログからの質問です。

ie = GETACTIVEOLEOBJ("InternetExplorer.Application")

msgbox("HTMLソースを取得したい部分を選択してからOKを押してください")

selection = ie.document.getSelection()
if selection.rangeCount then
 range = selection.getRangeAt(0)
 content = range.cloneContents()
 elem = ie.document.createElement("div")
 elem.appendChild(content)
 // クリップボードへコピー
 sendstr(0, elem.innerHTML)
else
 msgbox("未選択です")
exitexit
endif

上記はwebサイトで文字選択した箇所をソースコードでクリップボードに張り付くものです。
ただし私の環境だと1行目「ie = GETACTIVEOLEOBJ("InternetExplorer.Application")」
でcom_errorが出てしまいます。
エラー無く走らせるにはどのように修正すればよろしいでしょうか
何卒よろしくお願いします。

No.2934 2016/09/26(Mon) 18:45:20

Re: com_error / トリビア
単純にIEが起動してないだけではないでしょうか。
No.2935 2016/09/26(Mon) 19:23:08

Re: com_error / しろまさ
この辺かな?
http://www.uwsc.info/faq.html#N30

No.2939 2016/09/27(Tue) 08:16:35
クリップボードの中身を変数に置き換え / 初心者
秀丸に文字列が記載されています。
その内容全てを変数や定数に置き換える事は可能でしょうか。

hide_id = GETID("秀丸")
html = fget(hide_id, F_ALLTEXT)

上記ではエラー出ました。

何卒よろしくお願いします

No.2931 2016/09/26(Mon) 15:37:29

Re: クリップボードの中身を変数に置き換え / 初心者
ごめんなさい タイトルに不備がありました

クリップボードの中身を変数に置き換え ×

秀丸の中身を変数に置き換え

No.2932 2016/09/26(Mon) 15:38:35
テキスト内容をIEのabout:blankに反映 / ラム酒
過去ログでの質問です。

----------------------------------------------
テキストファイルにHTMLソースが記載されています。
これをHTMLファイルに書き換え、ブラウザ上の値(ソースではない)を全てクリップボードにコピーしたいと考えています。

上記の動作をhtmlファイルを新たに作らずに配列のようなもので処理する事は可能なのでしょうか。


No.2763 2016/08/16(Tue) 16:55:37


☆ Re: HTMLソースを配列で処理 / stuncloud

htmlfileでいいのでは
IEをabout:blankで開いてdocument.writeしてもいいと思います

以下はhtmlfileの例です

fid = fopen("HTMLの書かれたテキストファイル.txt", F_READ)
html = fget(fid, F_ALLTEXT)
fclose(fid)

document = createoleobj("htmlfile")
document.write(html)

msgbox(document.body.innerText)
----------------------------------------------

「IEをabout:blankで開いてdocument.writeしてもいいと思います」
こちらの方法を取りたいのですが、どのように記載すればよろしいでしょうか。

No.2927 2016/09/26(Mon) 13:24:27

Re: テキスト内容をIEのabout:blankに反映 / stuncloud
htmlfileの場合ととくになにも変わりません、変数htmlは上記の引用と同様にファイルを全行読み出したものです

ie.navigate("about:blank")
BusyWait()
ie.document.write(html)

No.2928 2016/09/26(Mon) 14:32:45

Re: テキスト内容をIEのabout:blankに反映 / ラム酒
ありがとうございます。
うまくいきました

No.2930 2016/09/26(Mon) 15:33:49
メールを受信したい(SSL) / まるぱ
いつもUWSCとここで回答されているご先輩の方々のブログには大変お世話になっています。

SSL対応のメールを受信するプログラムを作りたいのですが、
自力では到底できそうになくお力を借りたい次第です。

これまで調べて、dllを利用する方法を調べました。


●BASP21.dll、これはUWSCの使用例に掲載されていますが、残念ながらGmailなどのSSLが必要なメアドには対応していません。


●NonMailNet.dll、こちらは完全無料ではないために、検討を見送りました。


●TKMP.DLL、VB.NET C#.NET 用のメール送受信クラスライブラリ ということなのですが、
UWSCで利用できるのかどうか自分には判断できません。

C#.NETのdllはCOMではないなどの情報を何処かのページでよみました。
POWERSHELLを使えばできるのでしょうか?


DEF_DLL  POWERSHELL どちらも理解するのが難しく、他のプログラム言語は学習しておりません。


dllを使わなくても構いませんので、SSL対応のメール受信をする方法がございましたら
アドバイスいただけると助かります。


Windows上で稼働させて、定期的にメールを受信して、その内容次第でいろいろな処理をさせたいと思っています。

よろしくお願い致します

No.2895 2016/09/18(Sun) 20:47:52

Re: メールを受信したい(SSL) / しろまさ
この辺で。
http://serialty.blog117.fc2.com/blog-entry-10.html

No.2899 2016/09/19(Mon) 09:24:20

Re: メールを受信したい(SSL) / まるぱ
しろまささん、アドバイスありがとうございます。
よくブログを参考にさせていただくことがあります。

ご紹介いただいたページは「CDOによるメール送信」ですね。
これはすでに実現できております。Windowsに標準でついている機能でできますので理想的です。

でも受信についてはなかなかいい情報が見つからず、ここに書き込んだ次第です。

No.2902 2016/09/19(Mon) 16:56:48

Re: メールを受信したい(SSL) / しろまさ
あ、受信でしたね。失礼しました。
私も昔、諦めた記憶があります。また調べてみます(_ _)

BASP21 Pro FAQ smtps http://www.b21soft.co.jp/basp21/basp21pfaq.html#smtps
Proか。。

Winsockを使えば出来そうですね。
ざっと検索してみましたがダイレクトなコードは見つかりませんでした。
Winsock メール 受信 で検索して他言語のサンプルを書き直すしかないのかな。
ゴリゴリな DEF_DELL 使用のコードになりそうですけどね^^

No.2903 2016/09/19(Mon) 17:32:17

Re: メールを受信したい(SSL) / stuncloud
gmail限定ならAPIで
過去記事: http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=2105

No.2905 2016/09/20(Tue) 12:23:07

Re: メールを受信したい(SSL) / まるぱ
しろまささんも、あきらめたのですか、、、それなら私には無理かも(^ ^;

散々探しても参考になりそうなコードはないですね。

BASP21 Proは、このようなニーズに気づいて作られた有料プログラムなのかもしれません。

以前とはちがって一般的なWindowsが7以降のバージョンになってきましたので
それらのOSに標準で入っていそうなdllとか使うのって無理なんでしょうか?

誰かTKMP.DLLをUWSCで使えるようにCOM化したdll作ってくれたらと思うこのごろです。

ゴリゴリなDEF_DELL使って書いた関数なら、使いやすいかもしれませんね。


stuncloudさん、情報ありがとうございます。
Gmail、google apiでできるというのは私も最近知りました。
でもおっしゃるとおりgmailなんで、汎用性が、、、

海外のを探したとしても、日本語処理が問題になりますね。

No.2907 2016/09/20(Tue) 22:02:36

Re: メールを受信したい(SSL) / stuncloud
Officeが、というかOutlookがインストールされているならそれを使うという手も?
とりあえずこんな感じで受信済みのメールは見れました

// 予めOutlookで必要なメールを受信できるように設定しておく
Outlook = createoleobj("Outlook.Application")
NameSpace = Outlook.GetNamespace("MAPI")
Folder = NameSpace.Folders("xxxxxxx@gmail.com").Folders("受信トレイ") // gmailの「受信トレイ」

with Folder.Items(1) // 添字は1から
 print .Subject
 print .ReceivedTime
 print .Body
endwith

送受信をさせたい場合は
NameSpace.SendAndReceive(TRUE) // 引数: 進捗ダイアログの有無、FALSEだと非表示
でできるみたいです

https://msdn.microsoft.com/ja-jp/library/office/ff866895.aspx
Outlookはなんかわかりづらいな…

No.2909 2016/09/21(Wed) 11:29:50

Re: メールを受信したい(SSL) / しゅん@平凡な職業プログラマー
TKMP.dllをPowerShell経由で使ってみました。
ご参考まで。
http://d.hatena.ne.jp/junjun777/20160921/powershell_mail_recv_ssl

↓TextBlock内はPowerShellスクリプト。戻り値・引数はそれで良いかと思います。

No.2910 2016/09/21(Wed) 12:24:44

Re: メールを受信したい(SSL) / まるぱ
stuncloud さん、どんな風に動作するのか興味はあります.
Outlookで使うメアドは予め設定したものになるのですかねぇ?
ご紹介いただいたmsdnには「CreatObj」という言葉がありますね、まさにUWSCのCreateOLEObj!
こういう知っているような言葉があれば資料も理解できそう、、、な気がします(-^

しゅんさん、
とてもよくブログを参考にさせて頂いています。
多くが高レベルな内容なので、じっくり読んでも理解できないことが多いです、
さぞすごいプログラマーさんなんでしょうね。
!!!
ご紹介いただいたページ拝見したら、なんと!この質問のために書いていただきましたか!!
イヤイヤ、、、なんと言っていいのやら、、、、m(- -;)m アリガトウゴザイマス

さすがですね、サクッと書いてしまったようで。

TKMP.dll 、そのまま使えちゃったんですね、レジストリ登録なしに。スゴイ....

TextBlock文を使うのがなんとも不思議な感覚です。
この文の中って、そのままそのdllで使われている言語なんでしょうかね?

data = PowerShell(TextBlock) という形で実行で、戻り値は得られますね。

引数を渡したいときは
TextBlock文内の変数部分を置換すればいいのでしょうか
PowerShell(Replace(TextBlock,"変数A","値A")
のような感じですか?


これでしたかったことが実現できそうな予感がします。
この掲示板で皆さんにお聞きして本当によかったです。
しろまささん、stuncloudさん、しゅんさん、まことにありがとうございました!

No.2911 2016/09/21(Wed) 21:07:10

dllを使ってSSLメールの受信に成功 / まるぱ
しゅんさんからいただいたアドバイスがきっかけで、
PowerShellとTKMP.dllを使ってSSLのメールを受信するに成功しましたので報告いたします。


目的:

最も日付の新しいメールから順に件名を取得して、
件名の中にキーワードがあれば、そのメール本文を戻り値として得る


方法:

テキストブロック_SearchTKMPmailを変数に代入。

Respon = _SearchTKMPmail


変数中の%%server%%などをReplace文で使用する設定に置き換える。
Respon = Replace(Respon,"%%Title%%",ここにキーワードを入力")
Respon = Replace(Respon,"%%server%%","pop3.yahoo.co.jp")
他も同様に....

PowerShell実行
Data = TRIM(PowerShell(Respon))
Dataにメール本文が入ります。




以下テキストブロックの中身

TEXTBLOCK _SearchTKMPmail

Add-Type -Path TKMP.dll;
$server = "%%server%%";
$port = "%%port%%";
$userid = "%%userid%%";
$pass = "%%pass%%";

$Title = "%%Title%%";
$TargetNum = %%TargetNum%%;

$logon = New-Object TKMP.Net.BasicPopLogon($userid, $pass);
$pop = New-Object TKMP.Net.PopClient($logon, $server, $port);

#SSLを使用します
$pop.AuthenticationProtocol = [TKMP.Net.AuthenticationProtocols]::SSL;

#接続開始
if ($pop.Connect()) {

$Data = "";
$MailFound = $false;

# for ($i=1; $i -lt $pop.MailDatas.Length; $i++){
$j = $pop.MailDatas.Length -1
if ($j -gt -1){

$FoundNum = 0;
$CountNum = 0;
for ($i=$j; $i -gt 0; $i--){
#検索するのは最大10件まで
$CountNum += 1;
if ($CountNum -eq 10){break};

$Mail = $pop.MailDatas[$i];
if ($Mail.ReadHeader()){
# System.IO.Stream
$Header = $Mail.HeaderStream;

$reader = New-Object TKMP.Reader.MailReader($Header, $true);

$subject = $reader.HeaderCollection["Subject"];
$sender = $reader.HeaderCollection["from"];

# メール件名の中にキーワードがあるか探す
$SearchResult = $subject.IndexOf($Title);

if ($SearchResult -gt -1){
if ($Mail.ReadBody()){
$Body = $Mail.DataStream;
$reader = New-Object TKMP.Reader.MailReader($Body, $false);
$MailBody = $reader.MainText;
$FoundNum += 1;
if ($FoundNum -eq $TargetNum){
$MailFound = $true;
Write-Host $MailBody;
break;
}
}
}
}
}
if($MailFound -eq $false){Write-Host "メールがありません";}
} else {
Write-Host "メールがありません";
}

#切断
$pop.Close();

} else {
Write-Host "メールサーバーから応答がありません";
}
ENDTEXTBLOCK

No.2925 2016/09/25(Sun) 14:56:23
IF文について / アオ
初心者です。

クリック項目でラジオボタンとチェックボックスとセレクトボックスがランダムになっているので
IF文を使ってクリックしたいのですが、うまくいきません。
どこがちがうのかよくわかりません。宜しくお願い致します。


if IE.document.forms[0].elements[0].click()
else
IE.document.forms[0].elements[0].selectedIndex = 1
endif

No.2912 2016/09/22(Thu) 11:45:05

Re: IF文について / リキュール
以下でエレメントの情報取得が行えますので参考になると思います。

http://canal22.org/advance/ie/ie-document-forms-elements-propertie/

No.2916 2016/09/22(Thu) 21:39:01

Re: IF文について / アオ
リキュールさん、ご回答ありがとうございます。

エレメントの情報が知りたいのではありません。
私の説明不足ですみません。

単純にクリックをしたいだけなのですが、

例えば、以下のスクリプトではラジオボタンとセレクトボックス
がランダムでもクリックしてくれますが、チェックボックスはクリックしてくれません。

if IESetData(IE,True,"q1","1")=true then
else
IE.document.forms[0].elements[0].selectedIndex = 1
endif

このスクリプトではすべてクリックしてくれると思うですが、エラーになります。

if IE.document.forms[0].elements[0].click()=true then
else
IE.document.forms[0].elements[0].selectedIndex = 1
endif

説明が下手ですみません。
あまりよくわかってないので、出来ましたら、教えてもらえないでしょうか。
宜しくお願い致します。

No.2922 2016/09/23(Fri) 11:47:59

Re: IF文について / stuncloud
> このスクリプトではすべてクリックしてくれると思うですが、エラーになります。
せめてどんなエラーが出たか書きましょうよ

> if IE.document.forms[0].elements[0].click()=true then
click()はなにも返さないのでこの場合必ずelseに行きます
つまり、対象がinputだったとしても
> IE.document.forms[0].elements[0].selectedIndex = 1
をやろうとするので、selectedIndexがないからエラーになってるというオチですかね

対象がなんだかちゃんと調べたほうが良いでしょう
ifだと面倒なのでselectにしましたが、こんなんでいいのでは

select IE.document.forms[0].elements[0].tagName
 case "input"
  select IE.document.forms[0].elements[0].type
   case "radio", "checkbox"
    IE.document.forms[0].elements[0].checked = TRUE
  selend
 case "select"
  IE.document.forms[0].elements[0].selectedIndex = 1
selend

このコードは与えられた情報から予想で書いてるので、アオさんの期待した動作をしない可能性があります

No.2923 2016/09/23(Fri) 14:02:20

Re: IF文について / アオ
stuncloudさん、ご回答ありがとうございます、

すみません。エラーはCOMエラーです。
stuncloudさんのご推察の通りだと思います。

ずっとIF文で拘っていてなかなかできなかったですが、
stuncloudさんのおかげでやっと出来ました。

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

No.2924 2016/09/23(Fri) 15:56:27
エクセルデータを一括で読み込む方法 / まさ

お世話になっております。
15万行のエクセルを変数に読み込ませるにあたり以下のように書いています。
この書き方だとものすごく時間がかかるため、一気に配列変数に入れられないかと
考えています。
どなたかお知恵を拝借いたしたく、アドバイスを頂けると大変助かります。


EXCEL = CREATEOLEOBJ("EXCEL.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="AAA.csv", readOnly :=False) 
Sleep(5)

for i = 1 to 150000

BBB[i] = EXCEL.RANGE("B" + i).value
CCC[i] = EXCEL.RANGE("C" + i).value
DDD[i] = EXCEL.RANGE("D" + i).value

next

EXCEL.ActiveWindow.Close(True)
Excel.quit

No.2913 2016/09/22(Thu) 18:59:18

Re: エクセルデータを一括で読み込む方法 / リキュール
変数に読み込ませるだけならエクセルをオープンする必要は無いと思います。

fid= FOPEN("AAA.csv",F_READ)
dim BBB[150000]
dim CCC[150000]
dim DDD[150000]
for i = 1 to 150000
BBB[i] = FGET(fid,i,2)
CCC[i] = FGET(fid,i,3)
DDD[i] = FGET(fid,i,4)
next
FCLOSE(fid)

No.2914 2016/09/22(Thu) 20:54:25

Re: エクセルデータを一括で読み込む方法 / Nagatani
Pro版でしたら下記の手もあります!
EXCEL = CREATEOLEOBJ("EXCEL.Application")

//遊び半分非表示処理
EXCEL.visible = False
Excel.WorkBooks.Open(FileName :="Book1.csv", readOnly :=False) 
XLACTIVATE(Excel, "Sheet1")

//配列に取り込み(数秒?)
 dd = XLGETDATA(Excel, "A1:C150000")

//取り込んだ内容を確認
 FOR LonI1 = 1 TO 40
  PRINT LonI1 + " A= " + DD[LonI1,1] +" B= " + DD[LonI1,2] + "C= " + DD[LonI1,3]
 NEXT

EXCEL.ActiveWindow.Close(True)
Excel.quit


15万行は確認してません!

No.2915 2016/09/22(Thu) 21:26:50

Re: エクセルデータを一括で読み込む方法 / 俄プログラマー
データの行列を入れ替え出来るなら

fid = FOPEN("aaa.csv",F_READ)
BBB = SPLIT(FGET(fid,1),",")
CCC = SPLIT(FGET(fid,2),",")
DDD = SPLIT(FGET(fid,3),",")
FCLOSE(fid)

No.2917 2016/09/22(Thu) 22:03:01

Re: エクセルデータを一括で読み込む方法 / まさ
リキュール様、Nagatani様、俄プログラマー様

誠にありがとうございます!
どれも早くなりました。

配列には入ったのですが、その後、キーワードを探すところで結局for文でまわして
時間がかかってします。

AAA[]配列からキーワードの配列番号を早く取り出す方法はないでしょうか。

for i = 1 to 150000
ifb AAA[i] = "TEST" then
XXXXX
endif
next

No.2918 2016/09/22(Thu) 22:25:50

Re: エクセルデータを一括で読み込む方法 / 俄プログラマー
HASHTBLを調べてみてください。
No.2919 2016/09/22(Thu) 23:00:41

Re: エクセルデータを一括で読み込む方法 / 俄プログラマー
連想配列で片付けましたが
配列を使わず検索する方法です。
一旦変数にファイルのデータを全て入れ
POSで検索したいキーの位置を探しその行のデータのみに絞ります。
ただし複数ヒットする場合、列2、3以降にもキーにヒットする場合を考慮してませんので
改行やカンマなど利用して工夫してください。(重複ありなしデータ内容のヒントが無いので)
3列16万行のデータでかかった時間は読み出しから表示まで1秒未満でした。
検証データの内容は単純に
1,1,1
2,2,2



160000,160000,160000
で検証しました。
(先の回答の行列は入れ替えしなくて良いです。)


key = "TEST"

fid = FOPEN("aaa.csv",F_READ)
value = FGET(fid,F_ALLTEXT)
FCLOSE(fid)

検索位置 = POS(key,value)
if 0 < 検索位置 then
text = copy(value,検索位置)//キー位置以降をコピー
改行位置 = POS("<#CR>",text)//改行までのデータに絞る為
print copy(text,1,改行位置)
else
print "ヒット無し"
endif

No.2920 2016/09/23(Fri) 02:31:50

Re: エクセルデータを一括で読み込む方法 / まさ
俄プログラマー様

早速のご回答ありがとうございます!!
格段に速くなりました!

No.2921 2016/09/23(Fri) 03:04:08
投稿するときのマナーについて / オレンジペン
初めまして。オレンジペンです。

UWSCに直接関わる話では無いのですが
投稿する際のマナーはどこに記載してあるのでしょうか?

【投稿(質問)の際に入力してほしいこと】
◆ UWSCのバージョン
◆ OS(Windows7 64bit 等)
◆ 何を使って、どうしたいのか

【投稿(質問)の際に気をつけること)】
◆ 終始「敬語」であり、「教えてもらう姿勢」であること
◆ 教えてもらったソースコードを試してみてどうだったか報告すること(できれば)
◆ 回答してもらったら感謝を述べること

他にもあるかとは思いますが、こういった投稿時のマナーについて
どこかに記載してもらうことは出来ないのでしょうか?

基本的にはマナーできている方が多く、私も質問する際には心がけておりますが
掲示板マナーみたいなものが記載してあると良いと思います。

※ 質問に回答くださる皆様は良い人ばかりで、この掲示板は素晴らしいと思います

No.2871 2016/09/16(Fri) 08:53:04

Re: 投稿するときのマナーについて / 俄プログラマー
水を差すような返信になりますが、私的には不要だと思います。

勿論無いより有る方が良いことは間違いないと思っています。
全ての方がそうだとは言いませんが、ヘルプ、豊富なサンプルが
サイト内にあるにも関わらず目を通さずに投稿。
それは良いとして、ありますよと書いても答えだけを求める方は
書式を求めてもその前に読まない傾向が強いです。
個人的な意見ですがマナー云々は書いてそれに従わせるものでも無いかなと思っています。
堅苦しいような感じになるのはちょっと。

>投稿する際のマナーはどこに記載してあるのでしょうか?

失礼を承知で質問返しです。掲示板のトップに記載されている

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

これ読みましたでしょうか?
これだけで十分かと

No.2874 2016/09/16(Fri) 21:41:32

Re: 投稿するときのマナーについて / しろまさ
>個人的な意見ですがマナー云々は書いてそれに従わせるものでも無いかなと思っています。

賛成。礼儀は個人的な常識。自ら示すものであり、求めるものではないと。

環境も必要に応じてで良いと思います。長ったらしいのは読む気を無くしますし。

お礼も言いたくなかったら言わなくて良いんじゃないですか?
それで人間関係が悪くなっていくのは当人なんだし、
そうならないと理解できないでしょ。そういう人間は。

No.2900 2016/09/19(Mon) 09:34:32

Re: 投稿するときのマナーについて / しゅん
マナー、ではなくて、ガイドラインですよね。
ま、あっても良いのではないかと思います。

個人的には、
・UWSCのバージョンは最新
・OSは場合によっては必要(わからないなら書いて)
・「どうしたいか」を重点的に
・やってみたスクリプト(再現できる最小限で)
・丁寧語以上
を満たすのが望ましい、と考えています。

No.2906 2016/09/20(Tue) 14:05:38
UWSCでパソコン自動化動作環境 / 山本一智
UWSC5.2.2.0(フリー版)を下記パソコンにインストールして試してみました。
?@デスクトップ Win10home 4GB 32ビット    IE11.589 11.0.35
?Aノート    Win10pro 8GB 64ビット IE11.51 11.0.34

1.作業内容及び記録内容
 あるS/Wの中にある4個の部品の入力欄に、EXCELに表形式で予め4個入れてある最初の数字を、
  C&Pして、このS/Wの中にある1個目の部品の入力欄に入れてOKを押します。
  次にこのS/Wの中にある2個目の部品の入力欄を出しEXCELの2個目に入れてある数字をC&P
  して、2個目の部品の入力欄に入れてOKを押します。
  同様作業を4回続けます。この作業内容を記録します。

2.動作結果
1)?@デスクトップはうまく動作しましたが、?Aノートはカーソル の動きがうまく再現されません
でした。
2)?@デスクトップでも、EXCELのセル選択でのC&Pではうまく 動作しない場合がありました。
3)このためセル選択後、ダブルクリックして縦のカーソルを出 し、Shift+ →で数字を全部選択
後、Ctrl+Cでコピーします。
4)その後、このS/Wの中にある1個の部品の入力欄にCtrl+Pで数字を入力します。
5)?Aノートは"このS/Wの中"でのカーソルの動きとクリック動作が、再現されていないようです。

3.質問
そこで質問ですが、Win10homeでうまく動くのにWin10proで動かないのはなぜでしょうか?
 Win10proのどこかを変更したら直るのでしょうか?

No.2881 2016/09/17(Sat) 20:24:48

Re: UWSCでパソコン自動化動作環境 / 俄プログラマー
こちらでは再現できないので参考になれば
ヘルプページの
#N1、#N28、#N29

No.2887 2016/09/18(Sun) 11:54:51

Re: UWSCでパソコン自動化動作環境 / 山本
俄プログラマー さんありがとうございます。
初めての投稿なのでわからないのですが、
 ヘルプページの#N1、#N28、#N29
とはどこから見れるのですか?

No.2888 2016/09/18(Sun) 13:24:26

Re: UWSCでパソコン自動化動作環境 / 通りすがりの初心者
↑FAQかな
http://www.uwsc.info/faq.html

No.2889 2016/09/18(Sun) 13:45:43

Re: UWSCでパソコン自動化動作環境 / 俄プログラマー
FAQですね。申し訳ありません。
No.2893 2016/09/18(Sun) 17:27:27

Re: UWSCでパソコン自動化動作環境 / 山本
通りすがりの初心者 様
俄プログラマー   様
                             山本です

ご返事ありがとうございます。
Win10pro 1GB 32ビットがありましたので試してみたところOKでした。
ご指摘の#N1が関係しているのですか?
はっきりしませんが、これですっきりしたような感じがします。
いろいろありがとうございました。

No.2901 2016/09/19(Mon) 10:37:13
全1170件 [ ページ : << 1 ... 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ... 117 >> ]