ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part59
https://mevius.5ch.net/test/read.cgi/tech/1549692750/
探検
Excel VBA 質問スレ Part60
■ このスレッドは過去ログ倉庫に格納されています
2019/03/16(土) 20:39:09.64ID:6HWXzj9o
115デフォルトの名無しさん
2019/03/22(金) 18:05:28.43ID:wNvbYX88 いまどきマルチポストに眉をしかめるような時代遅れの人間なんていないよ、ね?
116デフォルトの名無しさん
2019/03/22(金) 18:13:30.85ID:f/f2Qmpp >>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
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
117デフォルトの名無しさん
2019/03/22(金) 18:19:28.87ID:wCnCSK0y118デフォルトの名無しさん
2019/03/22(金) 18:37:45.64ID:wCnCSK0y119デフォルトの名無しさん
2019/03/22(金) 19:06:06.24ID:DJ7JSKt5 >>116
そのCreateObject("MSXML2.XMLHTTP")はなんでしょうか?
str2にはたしかに入ってますが"https://www.yahoo.co.jp/"にしたら空欄になってしまいます。
HTMLページは膨大なソースなのでDOMツリーで必要なものだけを取り出したいのですが、それはできますか?
>>117
PHPって知らないのですが簡単に学習できるのですか?
>>118
VBAでイベントってどうやって受けるのですか
そのCreateObject("MSXML2.XMLHTTP")はなんでしょうか?
str2にはたしかに入ってますが"https://www.yahoo.co.jp/"にしたら空欄になってしまいます。
HTMLページは膨大なソースなのでDOMツリーで必要なものだけを取り出したいのですが、それはできますか?
>>117
PHPって知らないのですが簡単に学習できるのですか?
>>118
VBAでイベントってどうやって受けるのですか
120デフォルトの名無しさん
2019/03/22(金) 19:30:29.78ID:s6oj+Xdm >>109
まだ分かんねーのかよw
まだ分かんねーのかよw
121デフォルトの名無しさん
2019/03/22(金) 19:31:45.60ID:f/f2Qmpp >>120
すまん無能、ちょっと静かにしてくれ
すまん無能、ちょっと静かにしてくれ
122デフォルトの名無しさん
2019/03/22(金) 19:35:09.00ID:wCnCSK0y >>119
PHPをおけるサーバーの契約まあ無料のところも有るだろ
学習は無料でツールをダウンロード出来る
比較的簡単な言語でいろいろソースもあるが
VBAは超簡単な方だからな
VBAは特定のイベントしか受けられんのかな
普通VBやc++やPHP などでコーディングするときは
イベントで受ける
PHPをおけるサーバーの契約まあ無料のところも有るだろ
学習は無料でツールをダウンロード出来る
比較的簡単な言語でいろいろソースもあるが
VBAは超簡単な方だからな
VBAは特定のイベントしか受けられんのかな
普通VBやc++やPHP などでコーディングするときは
イベントで受ける
123デフォルトの名無しさん
2019/03/22(金) 19:35:18.99ID:wT5mo1++ アホの考えなんてわからんしわかりたくもないわw
124デフォルトの名無しさん
2019/03/22(金) 19:37:24.46ID:s6oj+Xdm125デフォルトの名無しさん
2019/03/22(金) 19:37:49.10ID:f/f2Qmpp >>118
jsで言うPromise?
非同期がvbaにあるんか、と思って調べたら一応あったけどかなりしんどいな
https://system-engineerlife.com/vba/multithread/
>>119
>CreateObject("MSXML2.XMLHTTP")
http通信するだけのもの。DOM構築しないから軽いはず
jsで言うPromise?
非同期がvbaにあるんか、と思って調べたら一応あったけどかなりしんどいな
https://system-engineerlife.com/vba/multithread/
>>119
>CreateObject("MSXML2.XMLHTTP")
http通信するだけのもの。DOM構築しないから軽いはず
126デフォルトの名無しさん
2019/03/22(金) 19:46:10.91ID:s6oj+Xdm >>125
これ、マルチプロセスだけどな。
別にしんどくない。
ExcelVBAでマルチプロセスやるときはExcel.Applicationを複数作ってやるのが普通だと思うけどね。
最終的に速度どうにもならないときはマルチプロセスにする。
これ、マルチプロセスだけどな。
別にしんどくない。
ExcelVBAでマルチプロセスやるときはExcel.Applicationを複数作ってやるのが普通だと思うけどね。
最終的に速度どうにもならないときはマルチプロセスにする。
127デフォルトの名無しさん
2019/03/22(金) 19:51:03.17ID:s6oj+Xdm128デフォルトの名無しさん
2019/03/22(金) 19:58:09.82ID:s6oj+Xdm >>125
ちなみにマルチスレッドはこっちにあるやり方
https://needtec.exblog.jp/18893727/
場合によっては使える(自分で表示したメッセージボックスのボタンをクリックとか)と言いたいところだが止めとくべきだね。
ちなみにマルチスレッドはこっちにあるやり方
https://needtec.exblog.jp/18893727/
場合によっては使える(自分で表示したメッセージボックスのボタンをクリックとか)と言いたいところだが止めとくべきだね。
129デフォルトの名無しさん
2019/03/22(金) 20:11:29.06ID:f/f2Qmpp >>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しかないなら頑張れるけど、他言語だと瞬殺と思うとやる気が削がれる
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しかないなら頑張れるけど、他言語だと瞬殺と思うとやる気が削がれる
130デフォルトの名無しさん
2019/03/22(金) 20:17:17.71ID:PU7qmvYu131デフォルトの名無しさん
2019/03/22(金) 20:59:52.84ID:EWPhTEeI >>116
httpReqを配列にしてreadyStateが4より小さいものから処理すれば良いだけだろ
httpReqを配列にしてreadyStateが4より小さいものから処理すれば良いだけだろ
132デフォルトの名無しさん
2019/03/22(金) 22:37:39.98ID:kGxcTvNs もうExcelの変な使い方スレでいいよ、ここ。
133デフォルトの名無しさん
2019/03/22(金) 22:41:13.31ID:DJ7JSKt5134デフォルトの名無しさん
2019/03/22(金) 22:51:56.07ID:tgov+uRX PowerShellでやった方が絶対に速い
135デフォルトの名無しさん
2019/03/22(金) 22:54:22.06ID:CAtaruvO136デフォルトの名無しさん
2019/03/22(金) 23:08:19.23ID:E2ofkEmJ まとめてダウンロードしてファイルに保存
その後一つずつ解析するべき
domなんて使わなくても正規表現で何とかするべき
その後一つずつ解析するべき
domなんて使わなくても正規表現で何とかするべき
137デフォルトの名無しさん
2019/03/22(金) 23:19:11.20ID:tgov+uRX でもpowershellなら.NETのWorkflowが手軽に使えるよね
138デフォルトの名無しさん
2019/03/22(金) 23:23:39.28ID:tgov+uRX Runspaceも使えるし
139デフォルトの名無しさん
2019/03/22(金) 23:36:27.88ID:f/f2Qmpp >>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
すまん、無理だった
他の人頼む
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
140デフォルトの名無しさん
2019/03/23(土) 00:08:10.78ID:GJYnZjvR If httpReq.readyState < 4 Then flg = True
If httpReq2.readyState < 4 Then flg = True
片方で抜ける
配列ぐらい使えよ
If httpReq2.readyState < 4 Then flg = True
片方で抜ける
配列ぐらい使えよ
141デフォルトの名無しさん
2019/03/23(土) 00:23:31.53ID:GJYnZjvR 読み込めた物から処理するんだよ
142デフォルトの名無しさん
2019/03/23(土) 00:41:36.68ID:sBAP9hOD143デフォルトの名無しさん
2019/03/23(土) 00:42:04.83ID:sBAP9hOD >>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
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
144デフォルトの名無しさん
2019/03/23(土) 00:42:09.03ID:sBAP9hOD 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
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
145デフォルトの名無しさん
2019/03/23(土) 00:45:06.99ID:sBAP9hOD146デフォルトの名無しさん
2019/03/23(土) 01:11:21.36ID:GJYnZjvR If httpReq(index_foo).readyState < 4 Then flg = True
コレじゃ1つでも読み込めたらループから抜ける
set したのはリリースする
処理がおもいのは
html(index_html).write httpReq(index_html).responsetext
これだろ
コレじゃ1つでも読み込めたらループから抜ける
set したのはリリースする
処理がおもいのは
html(index_html).write httpReq(index_html).responsetext
これだろ
147デフォルトの名無しさん
2019/03/23(土) 01:15:54.12ID:GJYnZjvR 同じ個数配列で使うものはTypeを使って構造体にしろよ
構造体を配列で取る
redimぐらい使えよ
構造体を配列で取る
redimぐらい使えよ
148デフォルトの名無しさん
2019/03/23(土) 01:39:28.59ID:sBAP9hOD >>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は正直もう無理や
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は正直もう無理や
149デフォルトの名無しさん
2019/03/23(土) 02:18:04.14ID:GJYnZjvR 構造体を使うのは処理を分かりやすくするため
リリースは
Set オブジェクト変数 = Nothing
感覚的に難しいかな
リリースは
Set オブジェクト変数 = Nothing
感覚的に難しいかな
150デフォルトの名無しさん
2019/03/23(土) 04:53:32.37ID:4V4ijAbJ >>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 になるだけ
普通は以下のように、自分で状態を調べたりしない。
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 になるだけ
151150
2019/03/23(土) 05:31:12.29ID:4V4ijAbJ 漏れなら、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つのエラーで、すべての処理が止まるし、やってられない!
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つのエラーで、すべての処理が止まるし、やってられない!
152デフォルトの名無しさん
2019/03/23(土) 05:42:27.10ID:GJYnZjvR VBA以外の構造化言語で書けば綺麗に書ける
まあ出来るだけ近いように書くのがよいが
まあ所詮俺もこんな処理ではJavaかPHPでしか書かない
まあ
まあ出来るだけ近いように書くのがよいが
まあ所詮俺もこんな処理ではJavaかPHPでしか書かない
まあ
153デフォルトの名無しさん
2019/03/23(土) 07:22:22.14ID:4ZM/hDcb154デフォルトの名無しさん
2019/03/23(土) 08:17:41.71ID:Rd0MSm4a たぶん、構造体 = Type = 型 = クラス っていうアナロジーで考えてたんだろうね
155デフォルトの名無しさん
2019/03/23(土) 09:27:10.21ID:GJYnZjvR まあ、コードも間違ってるし書き方も良くない
配列すら得意でないようなので・・・
あと、せっかくExcelを使ってるんだから
Url等の情報はセルから読み込むよな
配列すら得意でないようなので・・・
あと、せっかくExcelを使ってるんだから
Url等の情報はセルから読み込むよな
156デフォルトの名無しさん
2019/03/23(土) 11:00:19.04ID:tmlWK/3A >>151
seleniumってまだ使えんの?もう機能しなくなったと思ってた
seleniumってまだ使えんの?もう機能しなくなったと思ってた
157デフォルトの名無しさん
2019/03/23(土) 11:18:14.30ID:sBAP9hOD158fusianasan
2019/03/23(土) 11:19:15.45ID:j1qksDnK Debug.Print("test")
159デフォルトの名無しさん
2019/03/23(土) 11:39:13.69ID:uLwnX5A6160デフォルトの名無しさん
2019/03/23(土) 11:47:22.03ID:4ZM/hDcb161デフォルトの名無しさん
2019/03/23(土) 11:52:28.25ID:/daUWZWt >>157
Excelでコールバックで受けたいって言っても、やったことないな
所詮そんなにクリティカルなルーチンを書く環境じゃないだろ
そんなことしなくても、ステータスが読み込めた物から処理して
全ての配列が処理出来たら終わればいいぐらいのコーディングだな
自分で書かなきゃ意味ないぞ
Excelでコールバックで受けたいって言っても、やったことないな
所詮そんなにクリティカルなルーチンを書く環境じゃないだろ
そんなことしなくても、ステータスが読み込めた物から処理して
全ての配列が処理出来たら終わればいいぐらいのコーディングだな
自分で書かなきゃ意味ないぞ
162デフォルトの名無しさん
2019/03/23(土) 12:03:01.48ID:jhd39dfA163デフォルトの名無しさん
2019/03/23(土) 12:12:55.71ID:/daUWZWt >>162
他の言語で簡単にかけるって言っても
所詮その言語で提供されたルーチンを使うだけだから
適した言語で書けば比較的簡単にかけることは確か
コーディングに関しては直感で書いたからもう少し読んでみよう
他の言語で簡単にかけるって言っても
所詮その言語で提供されたルーチンを使うだけだから
適した言語で書けば比較的簡単にかけることは確か
コーディングに関しては直感で書いたからもう少し読んでみよう
164デフォルトの名無しさん
2019/03/23(土) 12:16:35.94ID:/daUWZWt まあ、所詮夜勤から帰って書き込みしてるから
午後は、お酒が進むんでまあ気にするな
午後は、お酒が進むんでまあ気にするな
165デフォルトの名無しさん
2019/03/23(土) 12:44:05.74ID:4ZM/hDcb >>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
' 続く…
> コールバックの部分だけはマジで分からんかった
> どうやって書くんだ
コールバックなんていらんだろ
素直に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
' 続く…
166デフォルトの名無しさん
2019/03/23(土) 12:44:29.37ID:4ZM/hDcb ' 続き
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
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
167デフォルトの名無しさん
2019/03/23(土) 14:51:45.33ID:uLwnX5A6168デフォルトの名無しさん
2019/03/23(土) 14:57:22.48ID:jhd39dfA169デフォルトの名無しさん
2019/03/23(土) 15:09:34.24ID:4ZM/hDcb >>167
お前はアンカーもまともに見れないのかよw
お前はアンカーもまともに見れないのかよw
170デフォルトの名無しさん
2019/03/23(土) 19:02:03.41ID:4V4ijAbJ 157デフォルトの名無しさん2019/03/23(土) 11:18:14.30ID:sBAP9hOD
>>150
クソ言語乙
142デフォルトの名無しさん2019/03/23(土) 00:41:36.68ID:sBAP9hOD
こいつは荒らしじゃね?
相手しない方がよい
>>150
クソ言語乙
142デフォルトの名無しさん2019/03/23(土) 00:41:36.68ID:sBAP9hOD
こいつは荒らしじゃね?
相手しない方がよい
171デフォルトの名無しさん
2019/03/23(土) 19:19:07.38ID:tumCHHdc >>170
ここはVBAのスレだよ。 そこにRubyとか持ってきたからじゃねえのw
ここはVBAのスレだよ。 そこにRubyとか持ってきたからじゃねえのw
172デフォルトの名無しさん
2019/03/23(土) 20:10:53.10ID:VsaUG60l173デフォルトの名無しさん
2019/03/23(土) 22:49:02.19ID:XxYiFSG+ コールバックって何?
ググると、関数の引数に渡す関数って出てくるけど、
それって、複数の処理を、
↓こうやって横着して1行に書くのと何が違うのかわからん。
a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
ググると、関数の引数に渡す関数って出てくるけど、
それって、複数の処理を、
↓こうやって横着して1行に書くのと何が違うのかわからん。
a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
174デフォルトの名無しさん
2019/03/23(土) 22:57:17.29ID:VsaUG60l >>173
a関数の処理が終わった場合、a関数の引数を受け取ってb関数を自動的に開始する・・・という処理
非同期、特にスクレイピングが多重で続くような場合は非常に強力
https://www.sejuku.net/blog/67743
使う場面が分からないのは、使う必要が無いと思って良い
jsだと死ぬほど使うが、EXCELで使う事はまずない
a関数の処理が終わった場合、a関数の引数を受け取ってb関数を自動的に開始する・・・という処理
非同期、特にスクレイピングが多重で続くような場合は非常に強力
https://www.sejuku.net/blog/67743
使う場面が分からないのは、使う必要が無いと思って良い
jsだと死ぬほど使うが、EXCELで使う事はまずない
175デフォルトの名無しさん
2019/03/23(土) 23:43:32.78ID:vBZJiXyX VBAでコールバックを実装しようとしたら、 Application.Runを使うかクラスモジュールでメソッド書いてCallByName関数で呼び出すようにするかって感じになるんかね
176デフォルトの名無しさん
2019/03/23(土) 23:54:56.46ID:49H4PHbP >>175
AddressOf
AddressOf
177デフォルトの名無しさん
2019/03/23(土) 23:57:25.89ID:49H4PHbP178デフォルトの名無しさん
2019/03/24(日) 00:19:26.62ID:lQI3nZvh >>177
そう、外部プログラムにVBA側の関数ポインタを渡す話じゃなくて、受けとる側の処理の書き方
そう、外部プログラムにVBA側の関数ポインタを渡す話じゃなくて、受けとる側の処理の書き方
179デフォルトの名無しさん
2019/03/24(日) 00:40:55.67ID:MjUvfGmD クラスのメソッドとしてコールバック関数を実装してinterfaceか遅延バインディング使えばいい
180デフォルトの名無しさん
2019/03/24(日) 07:46:43.58ID:myNgr9GS >>173
> a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
これは外側のReplace()に内側のReplace()の「結果」を渡してる
コールバック関数は内部で呼ぶ関数を変えたい時に使う
例えば図形を描くルーチンがあったとして出力先を色々切り替えたいとかだと出力する関数を自体を渡す
やり方はこの辺りを参考にして
https://qiita.com/rai_suta/items/c07b22130b302682b729
> a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
これは外側のReplace()に内側のReplace()の「結果」を渡してる
コールバック関数は内部で呼ぶ関数を変えたい時に使う
例えば図形を描くルーチンがあったとして出力先を色々切り替えたいとかだと出力する関数を自体を渡す
やり方はこの辺りを参考にして
https://qiita.com/rai_suta/items/c07b22130b302682b729
181デフォルトの名無しさん
2019/03/24(日) 11:58:57.43ID:DVu1xjKe182デフォルトの名無しさん
2019/03/24(日) 12:25:58.30ID:3NyLxN/m https://i.imgur.com/nvGsYOy.jpg
エクセルあればワードもパワポもアクセスもいらない
エクセルあればワードもパワポもアクセスもいらない
183デフォルトの名無しさん
2019/03/24(日) 12:32:32.58ID:4ve/ST91 そんな事をエクセルVBAでやる意味って何?
何が何でもVBAって馬鹿のひとつ覚えって言うんだよ
何が何でもVBAって馬鹿のひとつ覚えって言うんだよ
184デフォルトの名無しさん
2019/03/24(日) 12:35:25.20ID:aL5blMH8 >>183
他言語を覚えなくて良いのは大きなメリット
環境構築、記述方法、言語仕様
この辺全部覚えなくて良いのはデカイ
特にvbaはプログラマーじゃなく事務員が使ってる場合も多いので、環境構築が苦手な事が多々ある
他言語を覚えなくて良いのは大きなメリット
環境構築、記述方法、言語仕様
この辺全部覚えなくて良いのはデカイ
特にvbaはプログラマーじゃなく事務員が使ってる場合も多いので、環境構築が苦手な事が多々ある
185デフォルトの名無しさん
2019/03/24(日) 13:44:54.25ID:PQbtijKV ノコギリで刺身切ろうとして包丁使えよって言われて包丁の使い方覚えなくていいのはメリットって言ってる構図
186デフォルトの名無しさん
2019/03/24(日) 13:53:08.65ID:aL5blMH8 >>185
例え下手でわらった
例え下手でわらった
187デフォルトの名無しさん
2019/03/24(日) 13:54:25.82ID:PQbtijKV >>186
お前は仕事下手だよな
お前は仕事下手だよな
188デフォルトの名無しさん
2019/03/24(日) 14:07:22.16ID:OZ1kvGmt 他言語を覚えなくて良いって発想がどうかと思う
適材適所で効率良くするのも仕事だし
死にゆく言語の代表がVBA
適材適所で効率良くするのも仕事だし
死にゆく言語の代表がVBA
189デフォルトの名無しさん
2019/03/24(日) 14:08:05.28ID:myNgr9GS190デフォルトの名無しさん
2019/03/24(日) 14:30:37.07ID:aL5blMH8 >>187
根拠もなく、何を見てそう思ったの?
>>188
>他言語を覚えなくて良いって発想がどうかと思う
>適材適所で効率良くするのも仕事だし
これは同意
俺も効率化のためにphpとjsはある程度覚えてるわ
ただ、人に勧めるのは現実的に厳しい面がある
たまーに出てくるスクレイピングのためにphp覚えろって言うのはなかなか酷
時間がかかって良いならウンコみたいなコードでも処理できるしな
ここの人でもサーバー=レンタルサーバーって発想した人いるけど、
スクレイピングのためにphp動かすならxamppで良い
>死にゆく言語の代表がVBA
ずっと言われてるけど全然死なないので俺も困っている。せめてバージョンアップして
根拠もなく、何を見てそう思ったの?
>>188
>他言語を覚えなくて良いって発想がどうかと思う
>適材適所で効率良くするのも仕事だし
これは同意
俺も効率化のためにphpとjsはある程度覚えてるわ
ただ、人に勧めるのは現実的に厳しい面がある
たまーに出てくるスクレイピングのためにphp覚えろって言うのはなかなか酷
時間がかかって良いならウンコみたいなコードでも処理できるしな
ここの人でもサーバー=レンタルサーバーって発想した人いるけど、
スクレイピングのためにphp動かすならxamppで良い
>死にゆく言語の代表がVBA
ずっと言われてるけど全然死なないので俺も困っている。せめてバージョンアップして
191デフォルトの名無しさん
2019/03/24(日) 14:34:03.77ID:dT6Xb8jy 既に公式にはJavaScriptに置き換わってるのに今更バージョンアップもクソも
192デフォルトの名無しさん
2019/03/24(日) 14:35:01.83ID:aL5blMH8 >>191
JavaScriptに置き換わってるって言ってもアドインだけでしょ
JavaScriptに置き換わってるって言ってもアドインだけでしょ
193デフォルトの名無しさん
2019/03/24(日) 14:43:19.68ID:dT6Xb8jy194デフォルトの名無しさん
2019/03/24(日) 14:53:50.44ID:aL5blMH8195デフォルトの名無しさん
2019/03/24(日) 15:03:11.84ID:A9z4XFqj 自分の現在分かる範囲で創意工夫してやろうとするのは良いことで出来ちゃってるんだろうけどこの先ずっと出来るかは不明
新しいのを取り入れないとダメ
特にエクセルVBAでやる必要のないのがあるなら勉強のチャンスなのに古いのでやろうとするから進歩しない
新しいのを取り入れないとダメ
特にエクセルVBAでやる必要のないのがあるなら勉強のチャンスなのに古いのでやろうとするから進歩しない
196デフォルトの名無しさん
2019/03/24(日) 15:10:13.55ID:gZMjxNOF xampp入れてPHP一から覚えるぐらいなら、VB.NET覚える方がはるかにマシだわ
197デフォルトの名無しさん
2019/03/24(日) 15:19:49.80ID:Mw3X0nZC198デフォルトの名無しさん
2019/03/24(日) 15:23:45.60ID:aL5blMH8 >>197
アドインがjsで書けるように鳴ったんだよ
アドインがjsで書けるように鳴ったんだよ
199デフォルトの名無しさん
2019/03/24(日) 15:39:49.96ID:y9CSgW5G ここは言語スレじゃなくてExcel VBAスレなんだが
バイクやチャリの板で日本縦断の準備とか注意点についての質問レスに対して飛行機使えよ馬鹿とレスしてるやつ居たらアホだろ
バイクやチャリの板で日本縦断の準備とか注意点についての質問レスに対して飛行機使えよ馬鹿とレスしてるやつ居たらアホだろ
200デフォルトの名無しさん
2019/03/24(日) 15:47:43.47ID:aL5blMH8201デフォルトの名無しさん
2019/03/24(日) 15:54:11.30ID:Mw3X0nZC >>198
マクロは関係ないのね。 VBAが無くなるとは考えられん
マクロは関係ないのね。 VBAが無くなるとは考えられん
202デフォルトの名無しさん
2019/03/24(日) 16:01:00.66ID:dT6Xb8jy203デフォルトの名無しさん
2019/03/24(日) 16:08:12.38ID:Mw3X0nZC204デフォルトの名無しさん
2019/03/24(日) 16:19:40.92ID:aL5blMH8 >マクロ自身が廃止
上でそう言ってたけどソースが見つからない
ただの噂かも
>VBAじゃなくてjavascriptになるのか
現状はjsでもアドインを作れるようになっただけ
俺もvbaは廃止しないと思う
上でそう言ってたけどソースが見つからない
ただの噂かも
>VBAじゃなくてjavascriptになるのか
現状はjsでもアドインを作れるようになっただけ
俺もvbaは廃止しないと思う
205デフォルトの名無しさん
2019/03/24(日) 16:19:49.86ID:rXU7uH3v だってVBAってセキュリティ的にヤバいし
エクセルファイルに偽装してマルウェア的なかなりの事までやれちゃうから廃止で良いよ
エクセルファイルに偽装してマルウェア的なかなりの事までやれちゃうから廃止で良いよ
206デフォルトの名無しさん
2019/03/24(日) 16:23:34.70ID:Mw3X0nZC207デフォルトの名無しさん
2019/03/24(日) 16:46:14.04ID:cASdygc2 全くバカばっかりだ。
その場で最適なのを選択すりゃ良いんだよ。
レガシーとか言ってるバカは救いようがない。
VBAで簡潔出来るならその方が良いんだよ。
VBScriptでファイル選択ダイアログを使う時にExcel.Application使うなんてのは本当はやりたくないけど他にうまい方法が無いから仕方ない。
このやりたくないというか筋が悪いと感じることが出来ない奴は結局駄目だね。
レガシーなのはその通りだが、それで別言語使って筋悪プログラミングしてたら意味が無い。
その場で最適なのを選択すりゃ良いんだよ。
レガシーとか言ってるバカは救いようがない。
VBAで簡潔出来るならその方が良いんだよ。
VBScriptでファイル選択ダイアログを使う時にExcel.Application使うなんてのは本当はやりたくないけど他にうまい方法が無いから仕方ない。
このやりたくないというか筋が悪いと感じることが出来ない奴は結局駄目だね。
レガシーなのはその通りだが、それで別言語使って筋悪プログラミングしてたら意味が無い。
208デフォルトの名無しさん
2019/03/24(日) 17:13:35.45ID:cASdygc2 “Office アドインはVBAやVSTOを置き換えるものではないので(現時点では)、「何でこんな簡単なこともできないの!?」とイライラしてはいけない”だとさ。
209デフォルトの名無しさん
2019/03/24(日) 17:17:26.83ID:iA9UpJgV Officeアドインとかいうの忌み子になりそうだよな
210デフォルトの名無しさん
2019/03/24(日) 17:43:12.27ID:bibhGphx とりまIEが消えればVBAでスクレイピングは消える
OS依存の負債を作りかねない機能はどんどん省いて欲しいね
OS依存の負債を作りかねない機能はどんどん省いて欲しいね
211デフォルトの名無しさん
2019/03/24(日) 17:58:19.82ID:XiACCcaf セルの中に、そのセルが存在するシート名を抜き出す関数の定義ってどんなのがある?
シンプルで分かり易い、エクセルの版に依存しないのが良いな。
シンプルで分かり易い、エクセルの版に依存しないのが良いな。
212デフォルトの名無しさん
2019/03/24(日) 18:00:03.79ID:XiACCcaf ここはVBAのスレだから、セル内で使う計算式の質問はスレ違か。
213デフォルトの名無しさん
2019/03/24(日) 18:03:25.87ID:APHXkx0k 言ってみ
214デフォルトの名無しさん
2019/03/24(日) 18:10:28.59ID:aL5blMH8■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- 【悲報】中国営業に熱心な日本人タレントたち、中国のイベントが続々と中止に… まだ予定中のアイドルとか歌手とかたくさんいるけど [452836546]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
- 高市総理で期待してるかもしれないけど、自民党はもうダメだから、超党派の勢力が出てくるみたいだぞ。 [134367759]
- トヨタ、反日だった。2027年に中国にレクサスのEV工場を設立。高市 [931948549]
