!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part58
https://mevius.5ch.net/test/read.cgi/tech/1542577644/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
Excel VBA 質問スレ Part59
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ d2a3-A3MQ)
2019/02/09(土) 15:12:30.70ID:3lTArmdf0596デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/02(土) 11:40:34.50ID:heck9gfNa >>595
こ文脈でループを回すの意味がわからないしどっから出てきて何を意味してるんだ?
こ文脈でループを回すの意味がわからないしどっから出てきて何を意味してるんだ?
597デフォルトの名無しさん (ワッチョイ f7da-3oSp)
2019/03/02(土) 13:55:25.27ID:WupyvY1Q0 話変わるがセルのコピーとか移動したときに条件付き書式が壊れてやたら重くなって直すの苦労したことある
598デフォルトの名無しさん (ワッチョイ 9f2f-nxCI)
2019/03/02(土) 15:18:36.62ID:EfeqCtIS0 お前らまず、
ワークシートの機能を活用する
というのをどういうことかちゃんと合わせてから話してくれるか
ワークシートの機能を活用する
というのをどういうことかちゃんと合わせてから話してくれるか
599デフォルトの名無しさん (アークセー Sx0b-Yt/p)
2019/03/02(土) 18:22:41.70ID:BmvnLX83x >>598
ワークシートの機能ってのはワークシートの機能一般のことでしかないだろ
ワークシートの特定の機能を想定して話をしてるんじゃない
ワークシートの機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
ワークシートの機能ってのはワークシートの機能一般のことでしかないだろ
ワークシートの特定の機能を想定して話をしてるんじゃない
ワークシートの機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
600デフォルトの名無しさん (ワッチョイ ffda-3oSp)
2019/03/02(土) 19:24:09.91ID:PK2Geudt0 ワークシートって言いすぎww
Withでまとめたくなってきたわ。
Withでまとめたくなってきたわ。
601デフォルトの名無しさん (JP 0Hdf-lo0V)
2019/03/02(土) 19:30:50.79ID:6n8BrDHBH With ワークシート
.の機能ってのは
.の機能一般のことでしかないだろ
.の特定の機能を想定して話をしてるんじゃない
.の機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
End With
.の機能ってのは
.の機能一般のことでしかないだろ
.の特定の機能を想定して話をしてるんじゃない
.の機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
End With
602デフォルトの名無しさん (ワッチョイ bf8c-9NtP)
2019/03/02(土) 20:23:41.79ID:VydunwR60 ワークシートの機能って単独のワークシート関数で実現できることなの?
それをVBAでやるのは確かに馬鹿らしい。
そうじゃないならVBAのほうがいいな。
それをVBAでやるのは確かに馬鹿らしい。
そうじゃないならVBAのほうがいいな。
603デフォルトの名無しさん (ワッチョイ 9f2f-nxCI)
2019/03/03(日) 01:17:47.50ID:5kU0Dorz0 >599
だからワークシートの機能一般ってなんのことを言ってるの?
セルの計算式?
計算式用のワークシート関数?
Application.WorksheetFunction?
だからワークシートの機能一般ってなんのことを言ってるの?
セルの計算式?
計算式用のワークシート関数?
Application.WorksheetFunction?
604デフォルトの名無しさん (ワッチョイ f7b0-VAd9)
2019/03/03(日) 03:16:39.28ID:1gVEOeax0 VBA以外のExcelで出来ること全てだろ
理解力低過ぎないか?
理解力低過ぎないか?
605デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/03(日) 11:57:08.93ID:XBWTxj+a0 なんでVBAを外すのか分からない
このスレにいる連中ならワークシートにはイベントも含まれるという感覚の方が普通でしょ
このスレにいる連中ならワークシートにはイベントも含まれるという感覚の方が普通でしょ
606デフォルトの名無しさん (ワッチョイ ffda-3oSp)
2019/03/03(日) 12:44:05.38ID:87SKey7q0 シートを方眼紙だと思っている人の視点での機能一般だろう。
ここの人たちは、クラスモジュールの1つくらいの感覚かもしれんが。
ここの人たちは、クラスモジュールの1つくらいの感覚かもしれんが。
607デフォルトの名無しさん (ワッチョイ 377c-vuRV)
2019/03/03(日) 14:18:18.29ID:ilhG1tLW0 そこはかとなく臭うというか湧き出るダサさが嫌い
608デフォルトの名無しさん (アウアウウー Sa9b-fNI3)
2019/03/03(日) 18:57:15.36ID:dGd12yAna EXCELの全ての機能のうちVBAを除いた残りってことじゃね
609デフォルトの名無しさん (アークセー Sx0b-yUTo)
2019/03/03(日) 19:26:33.74ID:2dKZwCIHx エクセルのオブジェクトモデルでメソッドが提供されてるような機能をわざわざVBAでスクラッチするなって意味もあるんじゃね
ListObjectオブジェクト(テーブル)の存在や機能を知らずに、同一列内のセル数式ほコピーの機能を自作するような話だろ
ListObjectオブジェクト(テーブル)の存在や機能を知らずに、同一列内のセル数式ほコピーの機能を自作するような話だろ
610デフォルトの名無しさん (ブーイモ MM3b-hSmr)
2019/03/03(日) 20:55:07.59ID:C10iXUczM 初心者です。わかる方いましたらお教えください。
IE.Visible = False
として、
IE.Quitが何らかの理由で実行されなかったり、それを書かなかった場合
どうなってしまうんでしょうか…?
バックグラウンドでずっとフワフワといるんでしょうか?
見方もよくわからないタスクマネージャーで見てみるとアプリケーションとしてはたぶん起動されていませんでした…
IE.Visible = Falseとした場合はもしかして特に閉じる指示が必要ないのでしょうか…?
IE.Visible = False
として、
IE.Quitが何らかの理由で実行されなかったり、それを書かなかった場合
どうなってしまうんでしょうか…?
バックグラウンドでずっとフワフワといるんでしょうか?
見方もよくわからないタスクマネージャーで見てみるとアプリケーションとしてはたぶん起動されていませんでした…
IE.Visible = Falseとした場合はもしかして特に閉じる指示が必要ないのでしょうか…?
611デフォルトの名無しさん (ワッチョイ f7ce-uydA)
2019/03/03(日) 21:00:52.17ID:sl8Y8jOC0 >>610
バックグラウンドでずっと動き続ける、が正解
ちゃんと起動してないのはコードがおかしいかタスクマネージャの見方がおかしい
そこをTrueに変えるだけでちゃんとIEのウィンドウが表示されるか確認
バックグラウンドでずっと動き続ける、が正解
ちゃんと起動してないのはコードがおかしいかタスクマネージャの見方がおかしい
そこをTrueに変えるだけでちゃんとIEのウィンドウが表示されるか確認
612デフォルトの名無しさん (ブーイモ MM3b-hSmr)
2019/03/03(日) 21:44:32.70ID:C10iXUczM613デフォルトの名無しさん (ワッチョイ 3791-IK5z)
2019/03/04(月) 09:46:01.18ID:TvaJY4yu0 関数使うかVBA使うかも内容で決める。
関数だと物凄く重くなることがある。
Sumproductとかを多用した場合とか、複数シートの集計を1日の集計としてさらに1ヶ月分の集計するとか。
自動計算を切れば良いんだけど、運用で微妙だね。
それに昔、銀行の仕事で大量のデ―タとSumproductのせいで1回の計算でさえいつまでたっても終わらないことがあった。
その時はVBAに書いたら5秒で終わった。
関数だと物凄く重くなることがある。
Sumproductとかを多用した場合とか、複数シートの集計を1日の集計としてさらに1ヶ月分の集計するとか。
自動計算を切れば良いんだけど、運用で微妙だね。
それに昔、銀行の仕事で大量のデ―タとSumproductのせいで1回の計算でさえいつまでたっても終わらないことがあった。
その時はVBAに書いたら5秒で終わった。
614デフォルトの名無しさん (ブーイモ MM1b-9NtP)
2019/03/04(月) 10:53:05.90ID:RuY9YBtCM ワークシート関数を関数と表現するのってUSBメモリをUSBと呼ぶのと同様にアレな感じ
615デフォルトの名無しさん (ワッチョイ 178e-4jKm)
2019/03/04(月) 10:55:32.34ID:TFGUk6BN0 その違和感を持てる知識がない頭が残念な人なんだろ
616デフォルトの名無しさん (JP 0H4f-j5yB)
2019/03/04(月) 11:15:22.83ID:gwy/L6iPH WorksheetFunctionプロパティで呼ぶもの(sumとかvlookupとか)がワークシート関数
VBAでしか使えないもの(CIntとかInstrとか)がVBA関数
上記と自作関数をまとめて関数
VBAでしか使えないもの(CIntとかInstrとか)がVBA関数
上記と自作関数をまとめて関数
617デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/04(月) 11:25:35.49ID:vFn2j9Kt0 >VBA関数
標準関数だろう
エクセルの場合はVBA標準関数とでも言うべきか
>自作関数
ユーザー定義関数という名称がある
まぁ俺は関数としか呼ばんけどな、ハハハ
vbaでワークシート関数使う時はそう呼ぶ
標準関数だろう
エクセルの場合はVBA標準関数とでも言うべきか
>自作関数
ユーザー定義関数という名称がある
まぁ俺は関数としか呼ばんけどな、ハハハ
vbaでワークシート関数使う時はそう呼ぶ
618デフォルトの名無しさん (JP 0H4f-j5yB)
2019/03/04(月) 11:45:46.92ID:gwy/L6iPH619デフォルトの名無しさん (ワッチョイ 3791-IK5z)
2019/03/04(月) 14:30:16.31ID:TvaJY4yu0 関数とVBAと対比させてるのに勘違いする奴がいるとはとても思えないが。
いたらそいつはアホだよ。
いたらそいつはアホだよ。
620デフォルトの名無しさん (ワッチョイ 178e-4jKm)
2019/03/04(月) 14:32:37.46ID:TFGUk6BN0 >>619
馬鹿が恥の上塗りに来ましたよ、と
馬鹿が恥の上塗りに来ましたよ、と
621デフォルトの名無しさん (ワッチョイ 3791-IK5z)
2019/03/04(月) 14:57:43.98ID:TvaJY4yu0 >>620
あらら、アホが恥の上塗りに来たよw
あらら、アホが恥の上塗りに来たよw
622デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/04(月) 15:02:35.15ID:vFn2j9Kt0 vbaだし何でもええやろ
どうせ大事に至ることはない、争う程の事ではない
どうせ大事に至ることはない、争う程の事ではない
623デフォルトの名無しさん (ワッチョイ 178e-4jKm)
2019/03/04(月) 15:28:20.01ID:TFGUk6BN0624デフォルトの名無しさん (ブーイモ MM1b-9NtP)
2019/03/04(月) 16:20:08.03ID:RuY9YBtCM 「文脈上USBメモリのことであるとわかるときはUSBでいい」
「そもそもそんな呼び方普段からするなよ」
「そもそもそんな呼び方普段からするなよ」
625デフォルトの名無しさん (アウアウクー MM0b-VAd9)
2019/03/04(月) 18:20:48.65ID:FDpjfwBmM わかるかどうか判断するのは読み手側だからな
書く側が勝手に略すのは読ませる気がないんだろう
書く側が勝手に略すのは読ませる気がないんだろう
626デフォルトの名無しさん (ワッチョイ 37e6-W5e4)
2019/03/04(月) 23:23:23.24ID:dF1M3atd0 そういえばCD-ROM2をロムって呼んでたやついたな
これSUPER CD-ROM2だから
これSUPER CD-ROM2だから
627デフォルトの名無しさん (ワッチョイ 178e-XA5H)
2019/03/05(火) 00:24:00.61ID:YDI1bFmR0 ID:TvaJY4yu0みたいな馬鹿がメンテできなくなるVBAを作る
628デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/05(火) 00:37:29.46ID:yUBkGE+g0629デフォルトの名無しさん (アウアウエー Sadf-vuRV)
2019/03/05(火) 03:34:27.88ID:VDry4yCPa 馬鹿には無理
630デフォルトの名無しさん (ワッチョイ d709-nvQ/)
2019/03/05(火) 05:56:45.90ID:pou1Iepn0 >>628
見てきたけど、なんかすげえめんどくさそう。出来ることも見新しいことってほとんどないじゃん
普通のWin32APIとかやったことあるのか。そっち勉強した方が遥かにまし。 VBAでもやれるから
見てきたけど、なんかすげえめんどくさそう。出来ることも見新しいことってほとんどないじゃん
普通のWin32APIとかやったことあるのか。そっち勉強した方が遥かにまし。 VBAでもやれるから
631デフォルトの名無しさん (アウアウエー Sadf-hSmr)
2019/03/05(火) 07:48:42.24ID:VSxyPtP8a いやMacとかOffice Onlineで使えることに意味があるんだろ
まあOffice Online使うくらいならGSuite使うという企業が殆どだろうけどw
まあOffice Online使うくらいならGSuite使うという企業が殆どだろうけどw
632デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/05(火) 08:12:27.21ID:yUBkGE+g0 >>628
はこういう事だった
誰も使ってないのね
https://qiita.com/y__na_ka_ya_ma/items/2575e79248978ff7828d
>>629
自己紹介乙
>>630-631
もちろんやれることは同じ
jsで書ける事自体がメリット
googleSpreadsheetのマクロを移植する時に使える
一生に一回もないと思うけどな
はこういう事だった
誰も使ってないのね
https://qiita.com/y__na_ka_ya_ma/items/2575e79248978ff7828d
>>629
自己紹介乙
>>630-631
もちろんやれることは同じ
jsで書ける事自体がメリット
googleSpreadsheetのマクロを移植する時に使える
一生に一回もないと思うけどな
633デフォルトの名無しさん (アークセー Sx0b-yUTo)
2019/03/05(火) 08:56:53.06ID:K5flI6jox Win32APIとOffice JavaScriptAPIどっちを勧めるかと聞かれたら今なら後者かな
後者の案件あるのか知らんが
後者の案件あるのか知らんが
634デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/05(火) 12:20:11.68ID:IGhfqt8ja そもそも全くの別物を比較してどうすんねん
635デフォルトの名無しさん (エムゾネ FFbf-IK5z)
2019/03/05(火) 12:44:55.98ID:bZMGULjeF636デフォルトの名無しさん (エムゾネ FFbf-IK5z)
2019/03/05(火) 12:47:21.71ID:bZMGULjeF637デフォルトの名無しさん (エムゾネ FFbf-IK5z)
2019/03/05(火) 12:51:32.81ID:bZMGULjeF638デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/05(火) 13:01:00.32ID:yUBkGE+g0639デフォルトの名無しさん (ワッチョイ 178e-4jKm)
2019/03/05(火) 13:14:26.63ID:YDI1bFmR0 ID:bZMGULjeF
マジモンのアスペルガーのキチガイ
マジモンのアスペルガーのキチガイ
640デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/05(火) 13:18:51.34ID:yUBkGE+g0 jsアドインもう少しぐらい使われてるのかと思ったけど、
誰も使ってないようで安心した
誰も使ってないようで安心した
641デフォルトの名無しさん (ワッチョイ 377c-nl/e)
2019/03/05(火) 13:32:20.37ID:YOwkwz810 Excel Python API とかも Excel.js Office.js とかと同じ扱いになる悪寒
642デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/05(火) 13:36:30.59ID:yUBkGE+g0643デフォルトの名無しさん (ワッチョイ 3791-IK5z)
2019/03/05(火) 20:23:23.29ID:ruLmgCaM0644デフォルトの名無しさん (ワッチョイ 3791-IK5z)
2019/03/05(火) 20:34:12.08ID:ruLmgCaM0645デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/05(火) 20:39:11.81ID:yUBkGE+g0 逆引き系辞典はネットあると本当に使わない
646デフォルトの名無しさん (ワッチョイ ff2c-hSmr)
2019/03/05(火) 21:11:49.71ID:WmyrgrGT0 会社で異動になった人が作ったマクロの稀に出るバグを直そうと頑張っています。
ちょっと怪しいかなと思ったプロシージャがあるので見にくく長いと思うのですが見て頂けませんか?
勉強しながらの初心者です。
Sub wait(IE As InternetExplorer)
Const リトライ = 2
Dim IEDOC As HTMLDocument
Dim ReCount As Long,i As Long
Do
«略»
Set IEDOC = IE.Document
«略»
Loop While IEDOC Is Nothing
If IEDOC.frames.Length < リトライ Then
ReCount = リトライ
Else
ReCount = IEDOC.frames.Length
End If
For i = 0 To ReCount
Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Next
End Sub
このあとすぐに書き込みに参ります
ちょっと怪しいかなと思ったプロシージャがあるので見にくく長いと思うのですが見て頂けませんか?
勉強しながらの初心者です。
Sub wait(IE As InternetExplorer)
Const リトライ = 2
Dim IEDOC As HTMLDocument
Dim ReCount As Long,i As Long
Do
«略»
Set IEDOC = IE.Document
«略»
Loop While IEDOC Is Nothing
If IEDOC.frames.Length < リトライ Then
ReCount = リトライ
Else
ReCount = IEDOC.frames.Length
End If
For i = 0 To ReCount
Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Next
End Sub
このあとすぐに書き込みに参ります
647デフォルトの名無しさん (ワッチョイ ff2c-hSmr)
2019/03/05(火) 21:26:50.63ID:WmyrgrGT0 オレンジの部分がIE.Busy = Trueという風に教科書通りになっていないのですがこれで大丈夫なのでしょうか
上手いことちゃんとなっているか調べようとやってみましたが私には難しかったです
そして水色の部分なのですが、フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
フレームがいくつかあると取得のたびにIE.BusyがTrue,Falseに切り替わると聞いたのでそのためで合っていますか
それよりもさっき調べて出てきた
'完全にドキュメントが読み込まれるまで待機する
Do Until IE.document.ReadyState = "complete"
DoEvents
Loop
ではダメなのでしょうか、別物でしょうか
ざっとみておかしい部分はありますか?
図々しくすみません
https://i.imgur.com/DQxGNB5.jpg
上手いことちゃんとなっているか調べようとやってみましたが私には難しかったです
そして水色の部分なのですが、フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
フレームがいくつかあると取得のたびにIE.BusyがTrue,Falseに切り替わると聞いたのでそのためで合っていますか
それよりもさっき調べて出てきた
'完全にドキュメントが読み込まれるまで待機する
Do Until IE.document.ReadyState = "complete"
DoEvents
Loop
ではダメなのでしょうか、別物でしょうか
ざっとみておかしい部分はありますか?
図々しくすみません
https://i.imgur.com/DQxGNB5.jpg
648デフォルトの名無しさん (ワッチョイ ff2c-hSmr)
2019/03/05(火) 21:32:38.87ID:WmyrgrGT0 どういうマクロかと言うと、IEを開いてリンクボタンをいくつか押して文字を引っ張ってきてIEを閉じるというのを何度か繰り返すものです。
リンク先を正しく閉じられていないまま次の回転に入っていることが稀にあるのです
リンク先を正しく閉じられていないまま次の回転に入っていることが稀にあるのです
649デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/05(火) 21:58:09.97ID:yUBkGE+g0 >>646
別物だな
>>646はvbaオブジェクトのプロパティ
WebBrowserControl.ReadyState
https://docs.microsoft.com/ja-jp/office/vba/api/access.webbrowsercontrol.readystate
>>647はwebのapi
Document.readyState
https://developer.mozilla.org/ja/docs/Web/API/Document/readyState
どっちが信用できるかは分からない
どちらにしてもIEオブジェクトがどこまでwebの技術に対応してるか分からない。難しい
かなり雑な解決策としては、
>リンク先を正しく閉じられていないまま次の回転に入っている
とりあえず必ず開いていると仮定して、最初に閉じる処理を噛ませばいいだけな気もする
あと個人的にだけど、untilはあんまり好きじゃない。「否定の否定」が出て来ないように注意した方が良い。あれは読みづらくなる
とりあえず応急処置として、併用してみてはどうかな。うまくいくかどうかはわからない
Do While IE.Busy Or _
IE.readyState <> READYSTATE_COMPLETE Or _
IE.document.readyState <> "complete"
DoEvents
Loop
別物だな
>>646はvbaオブジェクトのプロパティ
WebBrowserControl.ReadyState
https://docs.microsoft.com/ja-jp/office/vba/api/access.webbrowsercontrol.readystate
>>647はwebのapi
Document.readyState
https://developer.mozilla.org/ja/docs/Web/API/Document/readyState
どっちが信用できるかは分からない
どちらにしてもIEオブジェクトがどこまでwebの技術に対応してるか分からない。難しい
かなり雑な解決策としては、
>リンク先を正しく閉じられていないまま次の回転に入っている
とりあえず必ず開いていると仮定して、最初に閉じる処理を噛ませばいいだけな気もする
あと個人的にだけど、untilはあんまり好きじゃない。「否定の否定」が出て来ないように注意した方が良い。あれは読みづらくなる
とりあえず応急処置として、併用してみてはどうかな。うまくいくかどうかはわからない
Do While IE.Busy Or _
IE.readyState <> READYSTATE_COMPLETE Or _
IE.document.readyState <> "complete"
DoEvents
Loop
650デフォルトの名無しさん (ワッチョイ 9f34-0snV)
2019/03/05(火) 23:41:58.62ID:b71Efr460 IE11からreadystateもbusyも使えなくなったとかどこかで見た
利用出来ないという意味ではなくて使い物にならないという意味で
なので移動後に表示されるタブ見つけたら、とか移動後に表示される文字列を見つけたらという条件で対処してるわ
利用出来ないという意味ではなくて使い物にならないという意味で
なので移動後に表示されるタブ見つけたら、とか移動後に表示される文字列を見つけたらという条件で対処してるわ
651デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/05(火) 23:46:48.59ID:yUBkGE+g0 ここでもIEかよ・・・
652デフォルトの名無しさん (ワッチョイ bf8c-9NtP)
2019/03/05(火) 23:57:28.83ID:AE45wcOz0 逮捕されないように気をつけろ
653デフォルトの名無しさん (ワッチョイ 9701-gWFi)
2019/03/06(水) 00:08:19.97ID:qZfNBEKA0 >>646
・ IE.Busy = Trueという風に教科書通りになっていない
「if A then B」自体が既に「AがTrueならB」っていう意味だから、更に「= True」は冗長
・ フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
作者はそのつもりだったんだろうけど、Whileの条件が真になった瞬間に全ループが終わるだろうから無意味
その後何かがFalseになってもEnd Subになる
・完全にドキュメントが読み込まれるまで待機する
偶にIEの受信が終わってもDocumentが読み込み終わってない時があるから、付けたほうがいい
フレームの件も、フレーム毎にdocument.ReadyStateを待つことで解決できる(ことが多い)
>>649
VBAは短絡評価出来ないから、IE.documentが取得できないとreadyStateプロパティが見れずに参照エラーが起きるよ
先にIEを待ってから、安全策としてdocument.readyStateも確認すると安定してDOMが使える
・ IE.Busy = Trueという風に教科書通りになっていない
「if A then B」自体が既に「AがTrueならB」っていう意味だから、更に「= True」は冗長
・ フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
作者はそのつもりだったんだろうけど、Whileの条件が真になった瞬間に全ループが終わるだろうから無意味
その後何かがFalseになってもEnd Subになる
・完全にドキュメントが読み込まれるまで待機する
偶にIEの受信が終わってもDocumentが読み込み終わってない時があるから、付けたほうがいい
フレームの件も、フレーム毎にdocument.ReadyStateを待つことで解決できる(ことが多い)
>>649
VBAは短絡評価出来ないから、IE.documentが取得できないとreadyStateプロパティが見れずに参照エラーが起きるよ
先にIEを待ってから、安全策としてdocument.readyStateも確認すると安定してDOMが使える
654デフォルトの名無しさん (ワッチョイ d701-9DxJ)
2019/03/06(水) 00:12:35.24ID:M8vFX/4l0 csvを読み込む手法はいくつかありますが以下のような場合どの方法が最適でしょうか
1行1レコードになっていない(セル内改行あり)
csvが複数ありそれをすべて読み込んで集計処理がしたい
普段はデータインポートやopenで1行づつ読み込んでいましたが1行≠1レコードだと難しいのかと考えています
1行1レコードになっていない(セル内改行あり)
csvが複数ありそれをすべて読み込んで集計処理がしたい
普段はデータインポートやopenで1行づつ読み込んでいましたが1行≠1レコードだと難しいのかと考えています
655デフォルトの名無しさん (ワッチョイ ff2c-hSmr)
2019/03/06(水) 00:17:18.56ID:0oqXehnm0656デフォルトの名無しさん (ワッチョイ 9701-gWFi)
2019/03/06(水) 00:29:35.50ID:qZfNBEKA0 >>655
既存のウインドウを触るのは初心者にとっては結構大事だよ
閉じれてないのはQuitメソッドの前に次の処理が入ってしまってるだけだと思うから、
処理が終わったと思われる場所に自分でコードを挿入したらどうだろう
既存のウインドウを触るのは初心者にとっては結構大事だよ
閉じれてないのはQuitメソッドの前に次の処理が入ってしまってるだけだと思うから、
処理が終わったと思われる場所に自分でコードを挿入したらどうだろう
657デフォルトの名無しさん (ワッチョイ 9701-gWFi)
2019/03/06(水) 00:33:49.27ID:qZfNBEKA0658デフォルトの名無しさん (ワッチョイ 9701-gWFi)
2019/03/06(水) 00:36:57.21ID:qZfNBEKA0659デフォルトの名無しさん (オッペケ Sr0b-9DxJ)
2019/03/06(水) 00:54:59.22ID:jXlQSKwgr660デフォルトの名無しさん (ワッチョイ 9f7c-sBsz)
2019/03/06(水) 01:00:18.09ID:wqRC+Uom0 >>654
replace(str,vbcrlf,"うんこ")
replace(str,vbcrlf,"うんこ")
661デフォルトの名無しさん (ワッチョイ 9701-gWFi)
2019/03/06(水) 01:08:03.42ID:qZfNBEKA0662デフォルトの名無しさん (JP 0H4f-j5yB)
2019/03/06(水) 07:35:28.45ID:3ub5rlP9H IEってBusy以外にステータスも見てないとループ抜けちゃわなかったっけ
663デフォルトの名無しさん (ラクッペ MMcb-Z6MB)
2019/03/06(水) 07:51:07.24ID:9ZQV49QQM 抜けた気がする
要素がありませんってよく怒られた
要素がありませんってよく怒られた
664デフォルトの名無しさん (スプッッ Sd3f-IK5z)
2019/03/06(水) 08:14:30.41ID:OZZFIuGOd 両方見てても抜ける時が有る。
滅多に無いけど。
例えばClickで遷移する場合に、抜けてからBusyになることがあった。
Submitに比べてClickは単純に文字通りClickするだけなので遷移しないページも有るから必ずBusyになると想定されていないと想像してる。
それ以降Clickの時は最初にSleepを入れるようにしてる。
滅多に無いけど。
例えばClickで遷移する場合に、抜けてからBusyになることがあった。
Submitに比べてClickは単純に文字通りClickするだけなので遷移しないページも有るから必ずBusyになると想定されていないと想像してる。
それ以降Clickの時は最初にSleepを入れるようにしてる。
665デフォルトの名無しさん (スプッッ Sd3f-IK5z)
2019/03/06(水) 08:20:35.12ID:OZZFIuGOd >>654
別に方法は色々あると思うけど1行ずつ読み込んでも良いんじゃない?
1行ずつでも条件に合うまで1レコードとしなければ良い。
1レコードの最後にも改行は有るんだろ。
もし1行ずつ読むなら1レコード内に複数改行が有る可能性を考慮すること。
別に方法は色々あると思うけど1行ずつ読み込んでも良いんじゃない?
1行ずつでも条件に合うまで1レコードとしなければ良い。
1レコードの最後にも改行は有るんだろ。
もし1行ずつ読むなら1レコード内に複数改行が有る可能性を考慮すること。
666デフォルトの名無しさん (ワッチョイ ff2c-Im2K)
2019/03/06(水) 08:57:22.69ID:Uli2bEJM0 >>654
Ruby では、列をダブルクオートで囲むと、その中にカンマや改行を含める事もできる。
他の仕様も含め、詳しくはRFC4180を参照
require 'csv'
p CSV.parse_line( "a,\"あ\nい\"" )
# => ["a", "あ\nい"]
\n は改行
列区切りはカンマで、外側の"〜" は文字列を表すための囲み。
内側の\"〜\" は、"〜"内での"〜"を表すため、\ でエスケープしている。列囲みを表す
a の部分は、\"〜\"で囲まなくてもよい
Ruby では、列をダブルクオートで囲むと、その中にカンマや改行を含める事もできる。
他の仕様も含め、詳しくはRFC4180を参照
require 'csv'
p CSV.parse_line( "a,\"あ\nい\"" )
# => ["a", "あ\nい"]
\n は改行
列区切りはカンマで、外側の"〜" は文字列を表すための囲み。
内側の\"〜\" は、"〜"内での"〜"を表すため、\ でエスケープしている。列囲みを表す
a の部分は、\"〜\"で囲まなくてもよい
667デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/06(水) 09:17:24.17ID:R/1sU7PR0 rubyって・・・
もう完全に終わってる言語なんだからそんなもの勧めないでよ
もう完全に終わってる言語なんだからそんなもの勧めないでよ
668デフォルトの名無しさん (ブーイモ MM1b-9NtP)
2019/03/06(水) 09:47:16.43ID:HGc0sPl8M669デフォルトの名無しさん (ワッチョイ bfab-GrE3)
2019/03/06(水) 11:28:25.04ID:p4qnJjw30 下記リンク先のページ下部にあるユーザ定義関数がVBAとして正しく書けてるかチェックして貰えませんか
https://peltiertech.com/loess-smoothing-in-excel/
https://peltiertech.com/loess-smoothing-in-excel/
670デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/06(水) 11:39:12.31ID:R/1sU7PR0 >>669
どういう計算をしてるかは知らんけど、コード上は問題ない
どういう計算をしてるかは知らんけど、コード上は問題ない
671デフォルトの名無しさん (ワッチョイ bfab-GrE3)
2019/03/06(水) 15:05:39.78ID:p4qnJjw30 多分スレチだろうと思いますが、>>669をLibreoffice最新版に実装したところ戻り値に=LOESS(x,y,z,n)で指定したyの配列がそのまま表示されたのでコードどこか間違ってるか仕様変更したのを俺が見落としてるのかなと思って聞きました
ありがとうございました
ありがとうございました
672デフォルトの名無しさん (ワッチョイ 9fa3-+f+8)
2019/03/06(水) 15:12:15.84ID:n2VNtnMC0 >>666
市ね
市ね
673デフォルトの名無しさん (ワッチョイ 9701-SKB1)
2019/03/06(水) 21:16:11.63ID:qNVr+Lwh0 指定した列以外の列を削除する方法を模索しています。
たとえば、ABCDE列の1行目にそれぞれ
あ い う え お
と入っていて、
"あ"と"う"と"お"以外の列を削除し、
あ う お
というよにしたく、
このようなプログラミングをしたのですが意図するように動作しません。
ド素人と罵られること承知で質問に参りました。
論理式自体考え方がおかしいものとも思っています。
どなたかお力添えいただけないでしょうか?
Sub 不要列削除()
Dim i As Long
For i = 1 To 50
If Cells(1, i).Value <> "あ" Or Cells(1, i).Value <> "う" Or Cells(1, i).Value <> "お" Then
Columns(i).Delete
End If
Next
End Sub
たとえば、ABCDE列の1行目にそれぞれ
あ い う え お
と入っていて、
"あ"と"う"と"お"以外の列を削除し、
あ う お
というよにしたく、
このようなプログラミングをしたのですが意図するように動作しません。
ド素人と罵られること承知で質問に参りました。
論理式自体考え方がおかしいものとも思っています。
どなたかお力添えいただけないでしょうか?
Sub 不要列削除()
Dim i As Long
For i = 1 To 50
If Cells(1, i).Value <> "あ" Or Cells(1, i).Value <> "う" Or Cells(1, i).Value <> "お" Then
Columns(i).Delete
End If
Next
End Sub
674デフォルトの名無しさん (アウアウウー Sa9b-fNI3)
2019/03/06(水) 21:30:16.04ID:o9MkSJEKa >>673
ifの条件がおかしい
ifの条件がおかしい
675デフォルトの名無しさん (ワッチョイ 377c-u5eM)
2019/03/06(水) 21:31:48.30ID:LIhekGiK0 表示形式が混在したセルを見た目通りのまま表示形式が文字列の別のセルにコピーするいい方法ありませんか
例えばA1〜A3を、この見た目のまま表示形式が文字列のB1〜B3にコピーしたい場合
A
1 $1,000
2 2019/1/1
3 9:30
@
Dim buf() As Variant
buf = Range("A1:A3").Value
Range("B1:B3").Formula = buf '←そのまま入れてみる
B1〜B3は 3/6/2019、0.836111111、\10,000.00 になる
A
Dim buf() As Variant
Dim buf2(1 to 3, 1 to 1) As String
buf = Range("A1:A3").Value
For i = 1 to 3
buf2(i, 1) = buf(i, 1) '←文字列型にして入れてみる
Next
Range("B1:B3").Formula = buf2
B1〜B3は 2019/03/06、0.836111111111111、10000 になる
@Aどちらも書式が勝手に変わります
ちなみにセル範囲を配列に直接つっこまず、文字列型の配列に1セルずつ buf = Range(i, j).Text みたいな感じで入れてからセルに貼り付けると希望の結果になりますがめちゃくちゃ時間がかかります(大量データに使いたいので)
他にやり方があれば教えてください
例えばA1〜A3を、この見た目のまま表示形式が文字列のB1〜B3にコピーしたい場合
A
1 $1,000
2 2019/1/1
3 9:30
@
Dim buf() As Variant
buf = Range("A1:A3").Value
Range("B1:B3").Formula = buf '←そのまま入れてみる
B1〜B3は 3/6/2019、0.836111111、\10,000.00 になる
A
Dim buf() As Variant
Dim buf2(1 to 3, 1 to 1) As String
buf = Range("A1:A3").Value
For i = 1 to 3
buf2(i, 1) = buf(i, 1) '←文字列型にして入れてみる
Next
Range("B1:B3").Formula = buf2
B1〜B3は 2019/03/06、0.836111111111111、10000 になる
@Aどちらも書式が勝手に変わります
ちなみにセル範囲を配列に直接つっこまず、文字列型の配列に1セルずつ buf = Range(i, j).Text みたいな感じで入れてからセルに貼り付けると希望の結果になりますがめちゃくちゃ時間がかかります(大量データに使いたいので)
他にやり方があれば教えてください
676675 (ワッチョイ 377c-u5eM)
2019/03/06(水) 21:34:55.08ID:LIhekGiK0 例のA列は↓の間違いです、すいません
1 2019/3/6
2 20:04
3 \10,000
1 2019/3/6
2 20:04
3 \10,000
677デフォルトの名無しさん (アウアウウー Sa9b-fNI3)
2019/03/06(水) 21:37:03.61ID:o9MkSJEKa 画面表示を止めても遅い?
678デフォルトの名無しさん (アークセー Sx0b-yUTo)
2019/03/06(水) 21:54:06.80ID:ZuXoITq7x >>673
列インデックスで加算ループをしている途中で列削除をしてるから、削除した回数分だけ参照参照列の位置がおかしくなるのでは
例えば2列目を削除した後にループ処理の最初の処理に戻ると、次にi=3として.Cells(1,3)とセルアクセスしたときに見ることになるのは本来D1に位置していたセルになる
列削除した分インデックスがずれるので
こうやって減算ループにするのが正解の一つかと
Sub 不要列削除()
Dim i As Long
For i = 5 To 1 Step -1
If Cells(1, i).Value <> "あ" Or Cells(1, i).Value <> "う" Or Cells(1, i).Value <> "お" Then
Columns(i).Delete
End If
Next
End Sub
あるいは、列削除した場合にはEnd Ifの手前でiから1を引いてインデックス調整するようにしたりか
列インデックスで加算ループをしている途中で列削除をしてるから、削除した回数分だけ参照参照列の位置がおかしくなるのでは
例えば2列目を削除した後にループ処理の最初の処理に戻ると、次にi=3として.Cells(1,3)とセルアクセスしたときに見ることになるのは本来D1に位置していたセルになる
列削除した分インデックスがずれるので
こうやって減算ループにするのが正解の一つかと
Sub 不要列削除()
Dim i As Long
For i = 5 To 1 Step -1
If Cells(1, i).Value <> "あ" Or Cells(1, i).Value <> "う" Or Cells(1, i).Value <> "お" Then
Columns(i).Delete
End If
Next
End Sub
あるいは、列削除した場合にはEnd Ifの手前でiから1を引いてインデックス調整するようにしたりか
679デフォルトの名無しさん (アークセー Sx0b-yUTo)
2019/03/06(水) 21:56:07.90ID:ZuXoITq7x680デフォルトの名無しさん (ワッチョイ 178e-4jKm)
2019/03/06(水) 22:13:28.72ID:0dxLNo3Q0 馬鹿過ぎるのが問題
681デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/06(水) 22:23:00.33ID:R/1sU7PR0 >>675
textプロパティ
Sub foo()
Range("c1").Value = Range("a1").Text
End Sub
範囲で代入は出来なかったので、適当にforeachで回してくれ
Range("c1:d2").Value = Range("a1:b2").Text
textプロパティ
Sub foo()
Range("c1").Value = Range("a1").Text
End Sub
範囲で代入は出来なかったので、適当にforeachで回してくれ
Range("c1:d2").Value = Range("a1:b2").Text
682デフォルトの名無しさん (ワッチョイ 377c-2g28)
2019/03/06(水) 22:36:44.70ID:LIhekGiK0683デフォルトの名無しさん (ワッチョイ 37e6-W5e4)
2019/03/06(水) 22:56:49.85ID:xGO4PHc60 CSVで書き出せばTEXTが得られるぞ
684デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/06(水) 23:08:59.57ID:R/1sU7PR0 >>682
あぁtext使ったって書いてたね、ゴメン
配列でも無理なら高速化はどうだろうか
https://15g.jp/post-314/
高速化でも配列でも重いなら、
もうアクセス辺りに移行した方がいいかも
あぁtext使ったって書いてたね、ゴメン
配列でも無理なら高速化はどうだろうか
https://15g.jp/post-314/
高速化でも配列でも重いなら、
もうアクセス辺りに移行した方がいいかも
685デフォルトの名無しさん (ワッチョイ bf68-W5e4)
2019/03/06(水) 23:09:20.80ID:R/1sU7PR0 >>683
csvは勝手に変換されるのが鬼門すぎる
csvは勝手に変換されるのが鬼門すぎる
686675 (ワッチョイ 377c-2g28)
2019/03/06(水) 23:48:56.32ID:LIhekGiK0 やっぱりTextプロパティ使う以外無理そうですかね…
687デフォルトの名無しさん (ワッチョイ 1e68-uGU8)
2019/03/07(木) 00:01:59.48ID:UepKFInK0688デフォルトの名無しさん (ワッチョイ a701-ZBQD)
2019/03/07(木) 00:20:00.91ID:UmWyYgm40689デフォルトの名無しさん (ワッチョイ a3e6-uGU8)
2019/03/07(木) 00:26:34.58ID:bl5ieqXF0 >>688
遅いって書いてあるだろ。もっと上をお望みなんだよ
遅いって書いてあるだろ。もっと上をお望みなんだよ
690デフォルトの名無しさん (ワッチョイ a701-ZBQD)
2019/03/07(木) 00:44:39.67ID:UmWyYgm40 >>689
直接入力が遅いって言ってるから、入力だけ一括でやれば?と思ったんだが
直接入力が遅いって言ってるから、入力だけ一括でやれば?と思ったんだが
691675 (ワッチョイ a37c-DZHv)
2019/03/07(木) 00:46:43.69ID:zt2fCEgu0692デフォルトの名無しさん (ワッチョイ a701-ZBQD)
2019/03/07(木) 01:15:09.98ID:UmWyYgm40 描写と計算止めてCopyメソッドで10万行×30列を列ごとにコピペしたら一瞬で終わったが・・・
っていうかこれ以上増やそうとするとリソース不足でエクセルが悲鳴を上げるし、どういうデータをコピーしたいんだろ
っていうかこれ以上増やそうとするとリソース不足でエクセルが悲鳴を上げるし、どういうデータをコピーしたいんだろ
693デフォルトの名無しさん (ワッチョイ a701-ZBQD)
2019/03/07(木) 01:18:31.96ID:UmWyYgm40 あ、書式変わるのか・・・上のレスは忘れてください
694デフォルトの名無しさん (ワッチョイ cbb0-fHMV)
2019/03/07(木) 02:33:57.63ID:cMWEbvvB0 コピーしてテキストとして貼り付けじゃダメなのか?
695デフォルトの名無しさん (アウアウウー Sac3-tGXB)
2019/03/07(木) 02:58:39.40ID:Wb+CU65ma 早い遅いは個人の感覚でしかないとおもう
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市朗報】 日本政府「一昨年は1300億円。去年も防衛費が1100億円余ったw」 日本の防衛費は充分足りてる事が判明。増やす必要無し [485983549]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
