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
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:aL5blMH8215デフォルトの名無しさん
2019/03/24(日) 18:26:04.21ID:bibhGphx216デフォルトの名無しさん
2019/03/24(日) 19:01:26.26ID:eoRp1F4j217デフォルトの名無しさん
2019/03/24(日) 20:51:56.44ID:IVIO7oct というか、IE消えても出来るぞ。Winsockとか知らんか?
218デフォルトの名無しさん
2019/03/24(日) 21:58:17.14ID:aL5blMH8 >>216
onlineか、無いっぽい
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_excel-mso_other/excelonline%E3%81%A7%E3%83%95%E3%82%A1%E3%82%A4/5d3f3344-87e7-4977-80c5-600013790290?auth=1
SHEET()ってのもあるみたいでどうにかすれば行けそうな気もしたけどやっぱり無理だった
onlineか、無いっぽい
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_excel-mso_other/excelonline%E3%81%A7%E3%83%95%E3%82%A1%E3%82%A4/5d3f3344-87e7-4977-80c5-600013790290?auth=1
SHEET()ってのもあるみたいでどうにかすれば行けそうな気もしたけどやっぱり無理だった
219デフォルトの名無しさん
2019/03/24(日) 23:27:39.47ID:APHXkx0k スクレイピングならJSで良いと思うけど何が何でもVBAなの?
何か幼少期に家庭的な問題でお父さんから虐待されてたとか?
何か幼少期に家庭的な問題でお父さんから虐待されてたとか?
220デフォルトの名無しさん
2019/03/24(日) 23:39:48.89ID:3fqiTHWE pythonスレのスレタイに、ruby禁止と入れて、スレ立てしている奴は荒らしだよ
lodash 禁止とか、jQuery 禁止とか、ライブラリの話は禁止とか書いて、
テンプレを勝手に改変して、スレ立てしている奴は荒らし
色々なスレを荒らしてる
相手をすると居つくから、相手をするな!
lodash 禁止とか、jQuery 禁止とか、ライブラリの話は禁止とか書いて、
テンプレを勝手に改変して、スレ立てしている奴は荒らし
色々なスレを荒らしてる
相手をすると居つくから、相手をするな!
221デフォルトの名無しさん
2019/03/24(日) 23:41:24.84ID:dT6Xb8jy 次スレはここもRuby禁止をスレタイに入れよう
222デフォルトの名無しさん
2019/03/24(日) 23:46:49.32ID:3fqiTHWE スクレイピングのために、xampp, PHP を学ぶのはキツイ。
Ruby, Nokogiri, Selenium WebDriver で良い。
JavaScript, jQuery も呼び出せるし
VBScript のスレ主のピッコロ大魔王のように、
VBScript, PowerShell で、.NET のライブラリを使って、5ch をスクレイピングする猛者もいるけど、これもキツイ
書きやすいのは、やっぱりRuby!
Ruby, Nokogiri, Selenium WebDriver で良い。
JavaScript, jQuery も呼び出せるし
VBScript のスレ主のピッコロ大魔王のように、
VBScript, PowerShell で、.NET のライブラリを使って、5ch をスクレイピングする猛者もいるけど、これもキツイ
書きやすいのは、やっぱりRuby!
223デフォルトの名無しさん
2019/03/24(日) 23:52:43.94ID:aL5blMH8 という荒らしがいるのでruby禁止をスレタイに入れるのは賛成だ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★3 [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★2 [BFU★]
- 小野田氏、”中国経済への依存“に警戒感 高市首相の国会答弁巡り [煮卵★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 中国とのパイプ役がいない高市政権、実施詰みか [668970678]
- とうすこ🏡愛され絵文字♡🤥👊😅👊👶♡
- 【なぜ】安倍晋三の評価、地味に上がってる模様… [343591364]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 【悲報】ココイチ、売上増収も客離れが止まらずジリ貧。「さらなる値上げも視野」😳 [518915984]
- 【画像】セクシー女優・天沢りんさん「お休み頂いてた半年間でこんな体になりました🪽🤍」👉予想通りの展開に [242521385]
