1 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:39:09.64 ID:6HWXzj9o.net] ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part59 https://mevius.5ch.net/test/read.cgi/tech/1549692750/
75 名前:デフォルトの名無しさん [2019/03/21(木) 02:02:16.06 ID:+l8n8fiW.net] 肛門に穴があいたんですけど、 とか言われても、もう驚かんわ。
76 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 06:33:27.17 ID:LeqqYBVH.net] >>73 痔瘻でつか?
77 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 07:23:06.55 ID:u3u8nbsq.net] >>69 むしろ楽勝の方だろ ちょっと前にシートの内容をスライドに埋め込むとかはやったことがある やったのはPowerShellだったけどCOM経由なら似たようなもんだし
78 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 10:02:44.62 ID:TiVPJMex.net] パワーポイントでVBAって何すんの? パワーポイントって発表用のアプリだろ。 それでVBAって需要なんてあまりあるとは思えんが
79 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 10:04:16.17 ID:XMapNPTs.net] シートの内容をスライドに埋め込むとか
80 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 10:26:55.37 ID:VaVZDR1N.net] プレゼンが定例業務としてある会社もあるんじゃね
81 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 10:29:58.00 ID:epreAi+X.net] 例えば、気象庁のホームページからクエーリーでデータを取得し パワポにデーター貼り付けながら、加工してそれをアニメーションで かっこよく表示していくとか、考えれば応用はいくらでもあるだろう
82 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 10:37:01.43 ID:epreAi+X.net] 言葉が足りなかった、プレゼン用ではなく、情報表示モニター用にな いくらでも機能はつけられる
83 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 11:18:23.86 ID:TiVPJMex.net] なんかどれも一般個人には無縁のものばかりだな
84 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 11:20:14.60 ID:TiVPJMex.net] まあパワーポイント自身、個人で使うことなんてないのか でも企業でも極一部の部署しか使わないものばかりじゃん
85 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 11:39:33.97 ID:cL16VMj6.net] パワポVBAで何か作ってみたいという逆需要で、発表後喋ってる間にスターウォーズのエンドロールみたいなのを流すのを昔作ったことあるなw それ以降、私の開発現場では(個人的にも)パワポVBAは全く需要なし WordVBAも、補助ツールとして数年に一回作るくらいかな
86 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 11:42:12.40 ID:XMapNPTs.net] スライドシェアとか見てもかったるいだけだからな 大昔の改行しまくりのテキストサイト思い出す
87 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 11:45:36.88 ID:epreAi+X.net] なんか、ExcelのVBAでパワポを操作するのと、パワポのVBAを同一で語ってるやついるか? ちなみにWordのVBAはいくつか作って今も使ってるけど、まあ対比で言えばExcelの 100分の1程度だな
88 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 12:40:04.02 ID:epreAi+X.net] >>84 >スライドシェア 何だよ、かったるいのしか見たことないんだろ >テキストサイト 何もわからんバカなのね(笑)
89 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 12:46:45.76 ID:epreAi+X.net] >>84 まあ、言葉もわからんカスが書き込みするスレだよな
90 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 12:51:57.24 ID:VaVZDR1N.net] >>86 カッコイイパワポを見てみたいんだが、どこかにある? 俺は見たことない
91 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 12:55:25.94 ID:epreAi+X.net] >>88 そうか、じゃあそのままでいいよ 検索もできないカスのお前に見せる必要ないからな
92 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 13:01:18.94 ID:epreAi+X.net] 自分では何もできないくせに、人の作ったものは全力で否定するカスいるな 生きてる必要あるんか?・・ってかどうなの?(笑)
93 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 16:10:00.98 ID:rariafKZ.net] >>83 単に、バカじゃん(大笑)
94 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 18:21:43.40 ID:AEHjc1Fb.net] >>82 accessよりは使ってる
95 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 18:38:57.53 ID:jb0c41ul.net] >>75 そういう問題か? PowerPointなのにPowerPointVBAを使わずにExcelVBAという所が驚きの対象なんじゃないの?
96 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 18:40:52.37 ID:UMX0gRc1.net] 起点がExcelってのがポイントだよな
97 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 18:59:32.81 ID:susRoq6I.net] >>67 の冗談が起点なのになんで真剣に語っているんだ
98 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:40:57.90 ID:u3u8nbsq.net] >>93 Excel VBAで扱うのとPowerPoint VBAで扱うのはたいして変わらんよ どっちから制御するかだけの問題
99 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 21:02:50.21 ID:UMX0gRc1.net] 他アプリから制御するのはいちいちアプリケーションインスタンスを起動しなきゃならんのが糞面倒 パワポだけで済むならパワポにする
100 名前:デフォルトの名無しさん [2019/03/21(木) 21:15:08.25 ID:HmxAO54P.net] VBAを使ってる人って御老人のイメージだけど合ってる?
101 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 21:48:16.24 ID:7ESjhGWi.net] ナウでヤングな人は何使うん
102 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 22:10:39.42 ID:susRoq6I.net] そろばん
103 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 08:13:43.08 ID:s6oj+Xdm.net] >>96 PowerShellなんて言い出す奴だからわからないんだろうな。 大して変わらんのなんて当たり前だろ。 PowerPointVBAからExcel.Application使って、そのExcelオブジェクトからPowerPoint.Application使ってを10回繰り返した所で変わらんけどアホ丸出しなのが分からんのかね。
104 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 08:17:26.70 ID:wT5mo1++.net] >>101 で? 例がアホすぎて何を主張したいのかさっぱりわからんw
105 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 09:00:55.13 ID:7FUJ+LGH.net] パワーポイントVBAって色々と勝手が違って面倒臭かった記憶があるけどな そもそもエクセルやワードと違って空のアプリケーションインスタンス作れないんじゃなかったっけか ファイル実行時に読み取りパスワードを指定するときもファイル名と連結する必要があるし
106 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 09:13:17.49 ID:s6oj+Xdm.net] >>102 バカにはわからない。 というか例がアホ過ぎる所がミソなんだがw そんなアホなことをするのかというのが驚きの対象であって、大して変わらんかどうかなんて頓珍漢な話はどうでもいい。
107 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 09:35:36.14 ID:wT5mo1++.net] いや、当たり前なんてみんな知ってる(>>93 を除くw)のに今更何を言いたいんだってこと バカの上塗り?
108 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 10:34:34.64 ID:1snpMqV+.net] 結局、ワッチョイ抜きにするから荒れるんだろ 誰がどう主張したいのかわからなくなる ワッチョイが嫌な奴がこのスレ建てたんだろうな、立て直すか?
109 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 10:58:31.28 ID:f/f2Qmpp.net] >>101 それ面白いw
110 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 12:26:36.58 ID:s6oj+Xdm.net] >>105 プッ 当たり前なのは>>93 を含めてみんな知っている。 今更何を言いたいのかは>>102 を除いてみんな知っているw
111 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 12:41:30.27 ID:VWKP5DOZ.net] で、結局>>101 は当たり前の事をほざいてただけ? やっぱりバカの上塗りじゃねーか w
112 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 13:05:17.10 ID:xmRgZnoh.net] OLEアプリケーション連携の話になると途端に荒れるのやべーな 前も下らんAccessの話でクッソ揉めてたし 他アプリ連携のスキルをプライドの拠り所にしてる人が結構いるのかな 凄いことやってる風に見てもらえるときあるし分からんでもないけどさ
113 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 13:46:53.89 ID:CAtaruvO.net] こっちに移動しる https://mevius.5ch.net/test/read.cgi/tech/1432173164/
114 名前:デフォルトの名無しさん [2019/03/22(金) 14:07:54.62 ID:DJ7JSKt5.net] こっちに移動しろ https://mevius.5ch.net/test/read.cgi/tech/1432173164/ 日本語は正確に
115 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 14:18:45.03 ID:CAtaruvO.net] こいつ、知ってて言ってるのか知らないのか
116 名前:デフォルトの名無しさん [2019/03/22(金) 17:56:53.75 ID:DJ7JSKt5.net] 会社でブラウザの検索結果のページで いっぱいURLのリンク先が表示されるのですが そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。 IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが 1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。 この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな?
117 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 18:05:28.43 ID:wNvbYX88.net] いまどきマルチポストに眉をしかめるような時代遅れの人間なんていないよ、ね?
118 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 18:13:30.85 ID:f/f2Qmpp.net] >>114 IEオブジェクト作らずに通信すると早くなる気がするけど早くならないかもしれない 試してみて Sub foo() Set httpReq = CreateObject("MSXML2.XMLHTTP") httpReq.Open "GET", "https://www.nicovideo.jp/watch/sm31763534" httpReq.Send Do While httpReq.readyState < 4 DoEvents Loop str2 = httpReq.responseText End Sub
119 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 18:19:28.87 ID:wCnCSK0y.net] >>114 どっかのサーバーでPHPなどで書けば
120 名前: 一度に取得を投げて戻ったイベントで処理を書く ネットワークに依存しないし負荷はサーバー 詳しくはPHPなどの質問スレッドでしろ [] [ここ壊れてます]
121 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 18:37:45.64 ID:wCnCSK0y.net] >>116 VBAでは書いたことないけど リクエストを配列にして一度に投げ 戻った奴から処理する 普通はイベントで受ける
122 名前:デフォルトの名無しさん [2019/03/22(金) 19:06:06.24 ID:DJ7JSKt5.net] >>116 そのCreateObject("MSXML2.XMLHTTP")はなんでしょうか? str2にはたしかに入ってますが"https://www.yahoo.co.jp/"にしたら空欄になってしまいます。 HTMLページは膨大なソースなのでDOMツリーで必要なものだけを取り出したいのですが、それはできますか? >>117 PHPって知らないのですが簡単に学習できるのですか? >>118 VBAでイベントってどうやって受けるのですか
123 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:30:29.78 ID:s6oj+Xdm.net] >>109 まだ分かんねーのかよw
124 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:31:45.60 ID:f/f2Qmpp.net] >>120 すまん無能、ちょっと静かにしてくれ
125 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:35:09.00 ID:wCnCSK0y.net] >>119 PHPをおけるサーバーの契約まあ無料のところも有るだろ 学習は無料でツールをダウンロード出来る 比較的簡単な言語でいろいろソースもあるが VBAは超簡単な方だからな VBAは特定のイベントしか受けられんのかな 普通VBやc++やPHP などでコーディングするときは イベントで受ける
126 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:35:18.99 ID:wT5mo1++.net] アホの考えなんてわからんしわかりたくもないわw
127 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:37:24.46 ID:s6oj+Xdm.net] >>119 出来る。 ResponseTextをDOMに入れる。
128 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:37:49.10 ID:f/f2Qmpp.net] >>118 jsで言うPromise? 非同期がvbaにあるんか、と思って調べたら一応あったけどかなりしんどいな https://system-engineerlife.com/vba/multithread/ >>119 >CreateObject("MSXML2.XMLHTTP") http通信するだけのもの。DOM構築しないから軽いはず
129 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:46:10.91 ID:s6oj+Xdm.net] >>125 これ、マルチプロセスだけどな。 別にしんどくない。 ExcelVBAでマルチプロセスやるときはExcel.Applicationを複数作ってやるのが普通だと思うけどね。 最終的に速度どうにもならないときはマルチプロセスにする。
130 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:51:03.17 ID:s6oj+Xdm.net] >>123 10時間ぶっ通しのVBAのようにアホ丸出しの例としてExcelVBAからPowerPoint動かすって話だろ。 >>75 のような当たり前の話じゃないんじゃないの? という問い掛けが>>93 だろ。
131 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:58:09.82 ID:s6oj+Xdm.net] >>125 ちなみにマルチスレッドはこっちにあるやり方 https://needtec.exblog.jp/18893727/ 場合によっては使える(自分で表示したメッセージボックスのボタンをクリックとか)と言いたいところだが止めとくべきだね。
132 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 20:11:29.06 ID:f/f2Qmpp.net] >>119 Sub foo() Set httpReq = CreateObject("MSXML2.XMLHTTP") httpReq.Open "GET", "https://www.yahoo.co.jp/", False httpReq.Send Do While httpReq.readyState < 4 DoEvents Loop Set HTML = CreateObject("htmlfile") HTML.write httpReq.responsetext End Sub これでHTMLがdomになる ちなみにphpなら二行で終わる サーバー借りなくてもxamppっての使えばPCだけで行けるけど、 どっちにしても学習コスト高い気がする ついでにHP作ってみると良いかも知れない >>126 >>128 excelかVBSインスタンスをスレッドの分作って文字列作ってevalみたいにして実行か もうここまで来るとVBAでやるのはなぁ VBAしかないなら頑張れるけど、他言語だと瞬殺と思うとやる気が削がれる
133 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 20:17:17.71 ID:PU7qmvYu.net] >>127 > 10時間ぶっ通しのVBAのようにアホ丸出しの例としてExcelVBAからPowerPoint動かすって話だろ。 その例がアホって話だろw
134 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 20:59:52.84 ID:EWPhTEeI.net] >>116 httpReqを配列にしてreadyStateが4より小さいものから処理すれば良いだけだろ
135 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:37:39.98 ID:kGxcTvNs.net] もうExcelの変な使い方スレでいいよ、ここ。
136 名前:デフォルトの名無しさん [2019/03/22(金) 22:41:13.31 ID:DJ7JSKt5.net] レスありがとうございます。 >>122 なるほどそうですかありがとうございます。 いまの直近の問題が解決したらあとで勉強してみます。 >>124-125 , >>129 DOMができたとして 50個くらいある複数のURLの1つ1つに Do While httpReq.readyState < 4 DoEvents Loop で時間待ちするのが問題なんです。 1つあたり1分近くかかるから。 一気に全部同時にやれないかなと。
137 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:51:56.07 ID:tgov+uRX.net] PowerShellでやった方が絶対に速い
138 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:54:22.06 ID:CAtaruvO.net] >>134 PowerShellのプログラミングってめっちゃめんどくさい タイプ量が半端なく多くなる。 大嫌い
139 名前:デフォルトの名無しさん [2019/03/22(金) 23:08:19.23 ID:E2ofkEmJ.net] まとめてダウンロードしてファイルに保存 その後一つずつ解析するべき domなんて使わなくても正規表現で何とかするべき
140 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 23:19:11.20 ID:tgov+uRX.net] でもpowershellなら.NETのWorkflowが手軽に使えるよね
141 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 23:23:39.28 ID:tgov+uRX.net] Runspaceも使えるし
142 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 23:36:27.88 ID:f/f2Qmpp.net] >>133 すまん、無理だった 他の人頼む arrayでurl設定して、class使ってforeachだろうけど vbaのclassを覚える気力がもう内 とりあえず2つだとこんな感じ Sub foo() Set httpReq = CreateObject("MSXML2.XMLHTTP") httpReq.Open "GET", "https://www.yahoo.co.jp/", False httpReq.Send Set httpReq2 = CreateObject("MSXML2.XMLHTTP") httpReq2.Open "GET", "https://urasunday.com/", False httpReq2.Send Do flg = False If httpReq.readyState < 4 Then flg = True If httpReq2.readyState < 4 Then flg = True DoEvents Loop While flg Set HTML = CreateObject("htmlfile") HTML.write httpReq.responsetext Set HTML2 = CreateObject("htmlfile") HTML2.write httpReq.responsetext End Sub
143 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 00:08:10.78 ID:GJYnZjvR.net] If httpReq.readyState < 4 Then flg = True If httpReq2.readyState < 4 Then flg = True 片方で抜ける 配列ぐらい使えよ
144 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 00:23:31.53 ID:GJYnZjvR.net] 読み込めた物から処理するんだよ
145 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 00:41:36.68 ID:sBAP9hOD.net] >>140 ・普通に逆だった、スマン ・pushくれ。redimしなくていい素直なpush ・なんかテキトーにやってもうまいことやってくれる非同期欲しい ・eachで自動生成されるindexくれ ・インクリメントくれ ってことでうんこコードになったわ、すまん >>141 それは分かるし書きたいんだけど documrnt.ready(function(){}〜 的な奴が分からなかった
146 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 00:42:04.83 ID:sBAP9hOD.net] >>133 Sub foo() Const max_count = 1000 '1000で決め打ち url_arr = Array( _ "https://www.yahoo.co.jp/", _ "https://urasunday.com/" _ ) Dim httpReq(max_count) index_httpReq = 0 For Each url_foo In url_arr Set httpReq(index_httpReq) = CreateObject("MSXML2.XMLHTTP") httpReq(index_httpReq).Open "GET", url_foo, False httpReq(index_httpReq).Send index_httpReq = index_httpReq + 1 Next
147 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 00:42:09.03 ID:sBAP9hOD.net] Do flg = False For Each url_foo In url_arr ' どれかがまだ If httpReq(index_foo).readyState < 4 Then flg = True Next DoEvents Loop While flg Dim html(max_count) index_html = 0 For Each url_foo In url_arr Set html(index_html) = CreateObject("htmlfile") html(index_html).write httpReq(index_html).responsetext Cells(index_html + 1, 1).Value = httpReq(index_html).responsetext 'テスト。A列に出力する index_html = index_html + 1 Next End Sub
148 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 00:45:06.99 ID:sBAP9hOD.net] >>143 までは問題ないと思う >>144 でグダグダになった。 パフォーマンス的にはそんなに変わらんだろう。大量にあるとメモリにも影響してきそうだけど
149 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 01:11:21.36 ID:GJYnZjvR.net] If httpReq(index_foo).readyState < 4 Then flg = True コレじゃ1つでも読み込めたらループから抜ける set したのはリリースする 処理がおもいのは html(index_html).write httpReq(index_html).responsetext これだろ
150 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 01:15:54.12 ID:GJYnZjvR.net] 同じ個数配列で使うものはTypeを使って構造体にしろよ 構造体を配列で取る redimぐらい使えよ
151 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 01:39:28.59 ID:sBAP9hOD.net] >>144 Do flg = False For Each url_foo In url_arr ' どれかがまだ If httpReq(index_foo).readyState < 4 Then flg = True Next DoEvents Loop While flg ↓ For Each url_foo In url_arr ' どれかがまだ Do flg = False If httpReq(index_foo).readyState < 4 Then flg = True DoEvents Loop While flg Next >>146 >コレじゃ1つでも読み込めたらループから抜ける 入れ子逆だった、スマン >set したのはリリースする httpReq is nothingがエラーになる vbaって配列 is nothing出来ないのか >処理がおもいのは 相対的に重いけど体感上重くは無いと思う >>147 vbaのclassは正直もう無理や
152 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 02:18:04.14 ID:GJYnZjvR.net] 構造体を使うのは処理を分かりやすくするため リリースは Set オブジェクト変数 = Nothing 感覚的に難しいかな
153 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 04:53:32.37 ID:4V4ijAbJ.net] >>142 普通は以下のように、自分で状態を調べたりしない。 If httpReq.readyState < 4 Then flg = True これは、Node.js などの低レベルな書き方で、普通はこれらの状態をラップして、 簡潔に書ける方法が、ライブラリ・フレームワークに用意されている 例えば以下は、JavaScript, jQuery の非同期処理の書き方。 ready になったら、引数で定義した、callback 関数を呼んでもらう。 document.ready(function(){}〜 非同期処理には、promise, deffered, async/await の書き方もある Ruby で、Selenium WebDriver なら、非同期処理を考えなくても、普通に同期的に書ける。 非同期処理の書き方のすべてが、ラップされているから。 Timeout 設定時間までに、状態が満たさなければ、Timeout Error になるだけ
154 名前:150 mailto:sage [2019/03/23(土) 05:31:12.29 ID:4V4ijAbJ.net] 漏れなら、Ruby で、Selenium WebDriver で、 url.txt には、行区切りでURL を書いておく。 script.rb には、Selenium WebDriver での処理を書いておく main.rb には、以下を書いておいて、このファイルを、ruby main.rb で実行する File.foreach( "url.txt" ) do |line| `ruby script.rb #{ line }` end url.txtを、1行ずつ処理して、各URLを取得して、それを引数にして、 ruby script.rb URL の別プロセスを呼び出す。 ただし、Selenium WebDriverでの処理が、URLだけが異なって、他は同じ事が条件 つまり、マルチプロセス これをマルチスレッドにすると、排他処理などが面倒。 それに同一プロセス内の処理になるので、1つのエラーで、すべての処理が止まるし、やってられない!
155 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 05:42:27.10 ID:GJYnZjvR.net] VBA以外の構造化言語で書けば綺麗に書ける まあ出来るだけ近いように書くのがよいが まあ所詮俺もこんな処理ではJavaかPHPでしか書かない まあ
156 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 07:22:22.14 ID:4ZM/hDcb.net] >>148 > vbaのclassは正直もう無理や TypeとClassは関係ないぞ Typeは単に複数の値を纏めるだけ
157 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 08:17:41.71 ID:Rd0MSm4a.net] たぶん、構造体 = Type = 型 = クラス っていうアナロジーで考えてたんだろうね
158 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 09:27:10.21 ID:GJYnZjvR.net] まあ、コードも間違ってるし書き方も良くない 配列すら得意でないようなので・・・ あと、せっかくExcelを使ってるんだから Url等の情報はセルから読み込むよな
159 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:00:19.04 ID:tmlWK/3A.net] >>151 seleniumってまだ使えんの?もう機能しなくなったと思ってた
160 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:18:14.30 ID:sBAP9hOD.net] あぁvbaってclassと構造体両方あったのか >>155 コールバックの部分だけはマジで分からんかった どうやって書くんだ >>150 クソ言語乙
161 名前:fusianasan mailto:sage [2019/03/23(土) 11:19:15.45 ID:j1qksDnK.net] Debug.Print("test")
162 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:39:13.69 ID:uLwnX5A6.net] >>130 だから、お前が真面目に出来るとか言ってるのは、真面目な話じゃ無くてアホな話だろと言ってるんだが。 アホな例を出さなかったらそれこそアホだろw
163 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:47:22.03 ID:4ZM/hDcb.net] >>159 はあ? >>67 が > やろうと思えば出来んでもないのか って書いてるからやること自体は難しくないって書いてるだけだぞ そもそもExcel VBAでPowerPointを操作するのがアホとか言ってるわけじゃないことも理解できてないのかよw
164 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:52:28.25 ID:/daUWZWt.net] >>157 Excelでコールバックで受けたいって言っても、やったことないな 所詮そんなにクリティカルなルーチンを書く環境じゃないだろ そんなことしなくても、ステータスが読み込めた物から処理して 全ての配列が処理出来たら終わればいいぐらいのコーディングだな 自分で書かなきゃ意味ないぞ
165 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:03:01.48 ID:jhd39dfA.net] >>160 無能の相手はほどほどで >>161 やっぱり難しいよな >全ての配列が処理出来たら終わればいいぐらいのコーディングだな これで書いたよ DOM部分はどうせ瞬殺だからまとめて良い
166 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:12:55.71 ID:/daUWZWt.net] >>162 他の言語で簡単にかけるって言っても 所詮その言語で提供されたルーチンを使うだけだから 適した言語で書けば比較的簡単にかけることは確か コーディングに関しては直感で書いたからもう少し読んでみよう
167 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:16:35.94 ID:/daUWZWt.net] まあ、所詮夜勤から帰って書き込みしてるから 午後は、お酒が進むんでまあ気にするな
168 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:44:05.74 ID:4ZM/hDcb.net] >>157 > コールバックの部分だけはマジで分からんかった > どうやって書くんだ コールバックなんていらんだろ 素直にreadyStateが4になったら処理すればいいだけ スマホから打ってるからデバッグしてないけどこんな感じ Type Request Session As Object Done As Boolean End Type url_arr = Array("https://www.yahoo.co.jp/", "https://urasunday.com/") Dim Requests() ReDim Requests(LBound(url_arr) To UBound(url_arr)) Dim Index As Integer For Index = LBound(url_arr) To UBound(url_arr) With Requests(Index) Set .Session = CreateObject("MSXML2.XMLHTTP") .Session.Open "GET", url_arr(Index), False .Session.Send .Done = False End With Next ' 続く…
169 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:44:29.37 ID:4ZM/hDcb.net] ' 続き Dim AllDone As Boolean Do AllDone = True For Index = LBound(url_arr) To UBound(url_arr) With Requests(Index) If Not .Done Then If .Session.readyState < 4 Then AllDone = False Else Cells(Index + 1, 1).Value = .responseText .Done = True End If End If End With Next DoEvents Until AllDone
170 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 14:51:45.33 ID:uLwnX5A6.net] >>160 いや、だから... それに>>67 じゃなくて>>69 だろ。 やろうと思えば出来るけど、驚いてるのはそこじゃ無いだろという指摘が理解できなかったから>>96 みたいな頓珍漢なことを言ったんだろ。 じゃなかったら>>96 みたいに噛み合わない発言にならない。
171 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 14:57:22.48 ID:jhd39dfA.net] >>165 俺も使わなくてもいいと思うが 上でコールバックコールバック言ってたからな >>167 お前に何の能力もないのは分かったから落ち着け
172 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 15:09:34.24 ID:4ZM/hDcb.net] >>167 お前はアンカーもまともに見れないのかよw
173 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 19:02:03.41 ID:4V4ijAbJ.net] 157デフォルトの名無しさん2019/03/23(土) 11:18:14.30ID:sBAP9hOD >>150 クソ言語乙 142デフォルトの名無しさん2019/03/23(土) 00:41:36.68ID:sBAP9hOD こいつは荒らしじゃね? 相手しない方がよい
174 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 19:19:07.38 ID:tumCHHdc.net] >>170 ここはVBAのスレだよ。 そこにRubyとか持ってきたからじゃねえのw
175 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 20:10:53.10 ID:VsaUG60l.net] >>170 そのruby信者が荒らしだぞ あらゆるスレで「rubyなら〜」と言ってrubyを貶めしている pythonスレではスレタイにruby禁止とまで入る始末