[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/24 06:47 / Filesize : 292 KB / Number-of Response : 1024
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part60



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
感覚的に難しいかな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef