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/
52 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 00:32:23.83 ID:vmDq6MjZ.net] ActiveSheet.Buttons(Application.Caller).Characters.Text でいけないかな 試してないから駄目だったらごめん
53 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 00:47:38.18 ID:vmDq6MjZ.net] >>49 インデックス番号は、同じ種類のシート間に付けられる番号で、左からのシート見出しの順に基づきます。 https://docs.microsoft.com/ja-jp/office/vba/excel/concepts/workbooks-and-worksheets/refer-to-sheets-by-index-number シートオブジェクトの移動や削除を行ったときにダイナミックにインデックスが変更されるのか、ファイル保存等の更新イベントがあるのかという細かい部分は調べてないから分からない デフォルトのシート名がSheet & シート追加時のインデックス値になるのは経験上知ってる
54 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 00:58:10.12 ID:+iQ33M/7.net] >>49 画像のボタンがSheet1に貼ってあったからそれに合わせて書いただけ "Sheet1"っていう名前のシートのオブジェクト名がSheet1になってるっしょ
55 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 01:11:06.91 ID:+iQ33M/7.net] >>51 シートのインデックスは常に左からの連番 シートの追加削除等あればもちろん都度変わる
56 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 01:39:18.38 ID:6ln9W50J.net] >>50 行けそうでダメでした 何で〜? https://i.imgur.com/kZaCjUg.png https://dotup.org/uploda/dotup.org1801319.zip >>51 >デフォルトのシート名がSheet & シート追加時のインデックス値 削除すると変わるので、これは違います >>52 その仕様ってどこかに書いてないのでしょうか
57 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 02:22:30.37 ID:+iQ33M/7.net] >>54 どこに書いてるかは知らないけど、ボタンもシートもブックもオブジェクトの指定の仕方は同じ オブジェクト名 オブジェクトのコレクション(インデックス) オブジェクトのコレクション("名前") 好きなのを使うがよい
58 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 02:25:30.67 ID:+iQ33M/7.net] MS公式でWorksheetオブジェクトに関する説明調べればどっかにあるかもねえ、知らんけど
59 名前:デフォルトの名無しさん [2019/03/20(水) 11:46:18.93 ID:KyvcPrHu.net] マクロを10時間ぶっ通しで走らせるのはよくないですか?途中で再起したほうがいいですか?
60 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 11:59:24.66 ID:xEZ65DiY.net] >>57 また馬鹿が来た 死ねよ
61 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 12:06:20.76 ID:6ln9W50J.net] >>55 >>56 ありがとうございました もう少し調べたかったけど、疲れたので断念します >>57 とりあえず動かして、エラーが起きなければ何も問題はない ただ、セルを触る物を10時間も動かすとメモリエラーが起こるかも知れない >>58 笑った
62 名前:デフォルトの名無しさん [2019/03/20(水) 12:33:29.40 ID:KyvcPrHu.net] >>59 ありがとうございます。 メモリの心配はありますが、ぶっ通しでやってみます。
63 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 13:54:52.74 ID:2xsXzlGP.net] >>57 応答なしにならないか?
64 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 15:56:43.40 ID:1jasQYq3.net] だから、どういう状況で10時間ぶっとおしが必要なんだよwwwwww マジでExcelを何に使ってるのか気になるわ。
65 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 16:27:03.42 ID:xEZ65DiY.net] 馬鹿の考えることをまともに相手をしてはいけない
66 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 20:36:03.66 ID:nDF65YVh.net] 結果セットは小さいけど重いDBクエリを繰り返すとかだったらわかる
67 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 20:53:54.94 ID:EpI850Tv.net] 10時間動かし続けるとなると思いつくのは 出勤時間中にwebサイトやフォルダ監視し続けて何かをキッカケに何かするみたいなのかな
68 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 22:28:30.85 ID:ad3N4bFR.net] エクセルでやることなんですかねそれ...
69 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 22:53:02.96 ID:1jasQYq3.net] ExcelVBAでパワーポイント動かしたいんですけど、 とか言われても、もう驚かんわ。
70 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 23:11:09.25 ID:7O8FfDv3.net] 馬鹿はそこでマクロと言い出す 更には、「教えて」「助けて」で始まり 「急いでます」「作って」と要求する
71 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 23:20:32.29 ID:dyVQ1wUM.net] >>67 やろうと思えば出来んでもないのか
72 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 23:21:49.19 ID:dyVQ1wUM.net] なんだお前ら、勿体無いな 10時間動かすなんて奇抜な事をしてくれるんだから、全力で応援するべきだろう かなり貴重なサンプルが手に入る可能性があるのに、バカだの言って切り捨てるのはあまりに勿体無い
73 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 23:38:22.03 ID:9h7AJaIR.net] >>70 まともな報告がある可能性は殆どない。 報告が役に立つ可能性はもっとない
74 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 23:45:57.48 ID:dyVQ1wUM.net] >>71 この辺は感性の違いかな 面白い物が見れそうな時はどんどん投資してしまう
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 感覚的に難しいかな