Excel VBA 質問スレ Part53

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/04/27(金) 19:02:38.39ID:+ocy8bIv
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part52
http://mevius.5ch.net/test/read.cgi/tech/1517052305/
2018/05/08(火) 12:38:19.90ID:fJWr41VM
>>714
>>716
うんうん
「〜によってファイルが開かれているため、操作を完了できません。」なんてエラーメッセージは
見たこともないんだろうねぇ

大層な10年間だねぇ
718デフォルトの名無しさん
垢版 |
2018/05/08(火) 12:55:25.46ID:q/XYqxRj
>>716
エクセルのインスタンスが残ってもメモリを圧迫するくらいやからな
おまえが気がついとらんだけやろw
そもそもプロセスの終了時にGCは動かんと言っておろうがw
2018/05/08(火) 13:10:03.51ID:iJTBAWwZ
>>717
rubyでExcel操作してるけど見たことない
2018/05/08(火) 13:13:01.29ID:fJWr41VM
これさぁ
よくある処理で読み込み終わったファイルは別フォルダに移動するときに解放されてなかったら一発で終わりだよねぇ

何年間もやっててそういうのに当たらなかったってラッキーだよねぇ
2018/05/08(火) 13:55:31.26ID:PZU+/yxW
こんなクソみたいな言い合いで流されていく質問がかわいそう
2018/05/08(火) 17:48:39.27ID:RLDOeZ1j
>>717, 720
そんなマヌケなエラーはExcel開きっぱなしVBAerの専売特許だろw

>>718
論外

>>721
ログを見るとわかるがVBAerは質問にろくな回答を変えしてない
PSerの方が解答率が高いという意味がわからない状況になってる
VBAerもっと頑張れよ
2018/05/08(火) 18:03:05.92ID:n71fT5S2
PSer VBAer

気色悪い造語まで作ってまぁ。
次は Rybyer か? C#er か?
2018/05/08(火) 18:23:15.70ID:8UeVEK10
PSer(笑)が居なければ皆 質問に答えてくれると思うんですがそれは…
2018/05/08(火) 18:47:27.59ID:0Wckg3pR
>>722
へー
自分がマヌケなのをVBAやってる人に転嫁してVBAやってる人に喧嘩売るんだぁ
VBA自体分からない人がいつまでこのスレで暴れ回って居座っていられるかねぇ
2018/05/08(火) 18:51:24.86ID:RLDOeZ1j
>>725
事実を述べただけなんだよなぁ
727デフォルトの名無しさん
垢版 |
2018/05/08(火) 19:12:51.48ID:xEIBE+xH
PSと言えばポストスクリプト
でも頭の中にあるのはパーフェクトソルジャー
2018/05/08(火) 19:50:54.67ID:nQl5yvJD
>>715
プロセス終了してるのにCOMへの参照?
お前COMの仕組みわかってないだろ w
2018/05/08(火) 19:51:44.12ID:26d0nyKi
築二十年の人ン家へ勝手に上がり込んで、トイレが遠いだのオール電化じゃないだの
床暖房じゃないだの言い募ってるのと一緒だな

ウォシュレットとかIHとかソーラーとかをつぶさに語る前に、自分が居座り強盗並みの行為を
してるのには気付けないのかな  勝手に上がり込んだのはマズイとは思わないのかな
2018/05/08(火) 19:51:54.02ID:nQl5yvJD
>>717
うん、ないよ
それ作り方がヘボいだけだし
2018/05/08(火) 19:55:04.51ID:nQl5yvJD
>>729
むしろトイレが遠くてもオール電化じゃなくても快適だもーん
ってやせ我慢してるだけにしか見えん w
2018/05/08(火) 19:57:51.93ID:rh4JdchR
そもそもお前の家じゃない
2018/05/08(火) 20:07:26.39ID:3X1kagHT
結局VBAの質問スレに何しに来てるんだろうなぁこいつら
所詮は本来のスレで変なことばっかり言って追い出されて
仕方なく居場所を求めて荒らし回ってる口だろうなぁ


ああ見苦しい
2018/05/08(火) 20:52:10.15ID:26d0nyKi
>>731
邪魔だ っつってんの 迷惑だと明言してる 喩えも判らんレベルか
わかりやすい例えにしたらガッツリ食い付いてくるんだな
グレードアップする時は自ら選びにいくわ 助言はその時に求めるわ、みずから
戦後の押し売りか トランクにゴム紐入れて売り歩く寅さんか
面白いこと言って見ろよ、ほら

思わず苦笑いするようなチャチャなら読み飛ばすが、連続居座りは御免被る
2018/05/08(火) 21:19:47.00ID:OdLjkejS
勝手にスレを私物化してるお前も十分迷惑だよ
わざわざ長文で反応してんじゃねえよてめぇも出てけ
2018/05/08(火) 21:44:06.06ID:J/XX4wKL
複数条件が重なるとどういった書き方をするのが良いのかわからず混乱してしまいます、何か良い方法がありましたら教えてください
例えば、変数x,y,zがありそれぞれ1-10までの数字が入る可能性があり、x,y,zそれぞれの値が違うと処理も違います
例えばx,y,zが1,1,1だと処理A 1,1,2だと処理B 1,2,1だと処理Kといった様子です
case文をネストして書いてしまっても良いんでしょうか?
2018/05/08(火) 21:59:14.00ID:SsMGLoTY
>>736
ネスとしてもいいし、if文の条件式のとこにandで複数条件書いてもいいんちゃう
738デフォルトの名無しさん
垢版 |
2018/05/08(火) 22:05:22.53ID:UggVkA90
>>736
言葉通りにとると1000通りの分岐になるけど、
そんなことはないんでしょ?
おおまかなパターンとしてはどうなってるの?
739デフォルトの名無しさん
垢版 |
2018/05/08(火) 22:10:52.74ID:RuTuN8AF
>>736
処理Xがx,y,zを変数として一般化できそうなら頑張って一般化して書く方法を考える

x,y,zによってどんな処理になるか論理的に決定できるなら
x,y,z -> 処理X を返すような関数を先に作って処理ごとにcaseで分岐

論理的に決定できない場合はkeyを"xyz"、valueが"処理X"みたいなDictionaryを用意する

x,y,zの組み合わせごとに処理が全部異なるなら、
index = 1000^(x-1) + 100^(y-1) + 10^(z-1)
みたいにindexを計算してindexごとにcaseで分岐させる
(10^3通りになってありえないケースだと思うけど)

思いつくのはこんなもん
caseネストするのは頭おかしなるで
740デフォルトの名無しさん
垢版 |
2018/05/08(火) 22:15:38.92ID:RuTuN8AF
最後のindex計算するのは意味ねえな忘れてくれ
2018/05/08(火) 22:19:59.22ID:fJWr41VM
>>736
後ろに続く処理次第だねぇ
一つの役割内で短く細かく纏まる分岐ならそれでいいし
分岐先がちょっと大きくて役割も違う処理だったら関数やメソッドにして呼んでやればいいし
根幹部分で大きな処理に沢山分かれるようなら
分岐を行うところも関数化して処理番号を返却するようにして
その番号に該当する関数名を前もってコレクションに突っ込んでおいて
引っ張り出してCallByNameで呼ぶ方法もあるよぉ

他にもあるけどVBAではこのくらいが丁度いいと思うなぁ
2018/05/08(火) 22:27:45.23ID:X/JD7QJy
>>734
> わかりやすい例えにしたらガッツリ食い付いてくるんだな
アホな喩えをバカにされてるだけだろ
743デフォルトの名無しさん
垢版 |
2018/05/08(火) 22:54:19.84
>>736
やりたい処理内容によるけど、こういう書き方をするとすっきり書けるかも

Dim sid As String

sid = CStr(x) & “-” & CStr(y) & “-” & CStr(z)

Select Case True
 Case sid Like “1-1-1”
  Call ProcA
 Case sid Like “1-1-2”
  Call ProcB
 Case sid Like “1-2-1”
  Call ProcK
 Case sid Like “1-3-*”
  Call ProcC
 Case sid Like “[4,5,6]-[!1,2,3]-*”
  Call ProcD
 Case Else
  Call ProcZ
End Select

パターンマッチングの記法はLike演算子のヘルプを見てね
744デフォルトの名無しさん
垢版 |
2018/05/08(火) 23:00:52.76
>>743
あとは、

> sid = CStr(x) & “-” & CStr(y) & “-” & CStr(z)

sid = Format(x, “00”) & “-” & Format(y, “00”) & “-” & Format(z, “00”)
にして
“01-02-03” の形式にしたほうが

sid Like “##-15-##”
sid Like “9#-##-##”

みたいに書けて、より扱いやすいかも
2018/05/08(火) 23:27:07.19ID:J/XX4wKL
皆さんありがとうございます
レス参考に考えてみます

後から小出しに条件変えるのはどうかと思ったんですが、例が少しアレだったのでもう少し状況説明します

x,y,z全て文字列型でxは4通り,yは12通り,zは18通り、後続処理はメール送信です
使用する既定の本文テンプレートのどれを使うかを変数で判定してます
テンプレート自体は8通りで変数の組み合わせによってはメール送信しない場合もあります
ただ規則性はほとんど無く、例ですが1[1-3]1はテンプレA。 1[4-6]1はテンプレB。 171は未送信。 181はテンプレAのようにごちゃごちゃしてます。

ただxが3.4の時は処理がそれぞれ固定の為、早期リターン?で処理を書き、xが1,2の場合は全部羅列しようかと思ってます
2018/05/08(火) 23:35:13.46ID:FrjuwbIK
>>695
いや、貼られたコード見てない。
アホらしいので。

>>699
正にその通り。
しかし、VBAが使われる場面を考えれば当然Excelでやるべき場面なわけ。
君がExcelである必要無いと言っても、仕事では他のExcel文書とやり取りしたり、その処理以外に関数とかExcelの便利機能も使うわけで。
組む処理以外の面でExcelであるべきということはたくさんある。

>>705
Excel起動せずにVBAを動かすのが普通か?

どれも共通してるのはPSやRubyの例はバッチ処理だろうけどVBAで想定されてるのはバッチ処理ではないということ。
あるいはバッチ処理もするけど、それ単体で使われることは想定されてない。
単体で使われる処理"も"書けるけど、Excel使った業務に沿って対応する処理を書けるのは有利だ。
それで、業務に沿ってExcel開いた状態で実行する処理についてはVBA以外だと不利じゃないの?ということ。

例えばADOでDBに繋げて取ってきたデータをそのExcel上でその場で見れるわけ。
もちろんC#とかでExcelを介在させないで組むなんてのもありだがExcelは会社のPCなら誰のPCにも入っているし、別のデータ(当然Excelのデータ)ともやり取りしやすい。
というか、開いた状態で、別のデータも表示されてる状態からのスタートだったりするからやり取りじゃないか。
2018/05/08(火) 23:42:26.20ID:FrjuwbIK
>>707
違う。そういう意味合いで開いた状態について言及したわけじゃない。
実際、VBAで書く処理はバッチ処理じゃなくて今表示されてる表に対しての処理だとか、バッチ処理でも今表示されてる表にバッチ処理の結果を組み合わせたりの場合が普通で、単純なバッチ処理なんて殆ど組むことが無い。
2018/05/09(水) 00:00:09.89ID:Yu+xGlRu
>>746
バッチ処理じゃねーよ
2週ぐらい理解が周回遅れだぞ
749デフォルトの名無しさん
垢版 |
2018/05/09(水) 00:19:49.71ID:w1k9kHe1
なんか「少なくともExcel上では〜」とか縄張り争いみたいになってるね。
自分はExcelに限らずVBA使ってるよ。例えばOutlook。これは常に立ち上がってるから。
Outlookのオブジェクトモデルなんて知らないし、メールとは全然関係ない処理で使う。
イミディエイトウィンドウをシェル代わりにしてワンライナーを書くのさ。
ExcelはIOが多めになったときにシートを使うくらいかな。
バッチ的な処理ももちろんVBAだ。
750デフォルトの名無しさん
垢版 |
2018/05/09(水) 00:35:13.23
>>749
それは個人の趣味の範疇だから好きにすればって感じ
2018/05/09(水) 02:52:59.97ID:fZf43uAK
なんでこんなくだらない話をいつまでも続けてるのかわからないけど
ここはあなた達が何をしてるか発表する場じゃなくて、わからない人が質問をしてわかる人がそれに答える場なので
どれだけ良いコードが書けようがそんな事もわからないんじゃまともな仕事はできそうにないですね
2018/05/09(水) 03:47:11.80ID:wUvS2pdo
>>749
さすがにそれはPS最高君を見習ってもいいぞ
2018/05/09(水) 04:08:41.95ID:DtKw0WOF
連休が終わったら話も終わるだろうと思って見てたけど、さてはお前らまともに仕事してないエアプログラマーだな?
2018/05/09(水) 05:53:37.33ID:SERID1ot
変なのが来たときみんな触るからいけないんだよ
NGIDにしといて誰もレスつけなければそのうち勝手に消える
2018/05/09(水) 06:04:55.40ID:SavMNDDu
>>746
> Excel起動せずにVBAを動かすのが普通か?
だからお前が普通と思うかどうかはどうでもいい
そう言うことをやりたい>>529がいてPSの方が楽に実現できると言う事実があるだけ

> 例えばADOでDBに繋げて取ってきたデータをそのExcel上でその場で見れるわけ。
PSでもC#でもExcel起動して表示したままにするとか普通にできるぞ
まさかそんなことも知らんのか?
2018/05/09(水) 06:57:27.89ID:SERID1ot
>>755
はいはいPSすげーすげー

PSを賞賛するスレとかPSerが傷を舐め合うスレとか立ててそっちでやれや
2018/05/09(水) 07:11:12.83ID:yKqvqHOX
> NGIDにしといて誰もレスつけなければそのうち勝手に消える
>>756はバカと言うことだなww
2018/05/09(水) 07:29:34.49ID:SERID1ot
>>757
馬鹿はすぐ釣れるから困る
コイツもNGIDだな
759デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:48:12.99ID:u9lv0tHz
>>745
スパムメール
2018/05/09(水) 08:50:09.41ID:Yu+xGlRu
どうやらExcel起動してPSで動かすことも可能という事がわかってない奴がいるらしい
2018/05/09(水) 10:13:15.95ID:idFoGogH
>>760
あと、どんなことができますか?
VBScriptみたいにVBA内に記述できるとうれしいのですが、、、
2018/05/09(水) 10:27:49.21ID:Yu+xGlRu
>>761
何を言っているのかよくわからない
VBScriptだったらGetObjectですでに開いてるExcelのインスタンス取得してどうとでも操作できるけど
VBA内に記述????
2018/05/09(水) 11:03:26.74ID:idFoGogH
>>762
いやぁ、VBScriptってCreateObjectでVBE内に直書きできるじゃないですか。
PSも似たような感じで中にかけると便利だなと思って。
PS1ファイルに記述するとして、たとえばExcel内のボタンやEventに割り付けるときって
具体的にどのようにするのでしょうか。
2018/05/09(水) 11:43:28.49ID:Yu+xGlRu
>>763
powershellがcomサーバーに登録されてないから無理だね
WScript.Shellで無理やりできなくもなさそうだけど

ボタンやユーザー定義ワークシート関数とかのイベントハンドラが出てくるときは今のところVBAを使うしかない
以前のレスでも散々言われてるVBAの唯一のアドバンテージ
2018/05/09(水) 11:57:17.22ID:idFoGogH
>>764
なるほど、外のファイルを直接叩くんですか。
中から呼ぶとすると、Shellコマンドで呼ぶ感じですか?

ちなみに管理ユーザ以外でPS1ファイル実行する際、Set-ExecutionPolicyでしたっけ、
これ設定されていない端末では一般ユーザは実行できましたっけ?
2018/05/09(水) 12:10:21.66ID:Yu+xGlRu
>>765
忘れた
そんくらい自分で試すかググれや
2018/05/09(水) 12:22:14.29ID:yKqvqHOX
久々に後釣り宣言なんて見たわ w
2018/05/09(水) 12:25:06.10ID:idFoGogH
>>766
冷たいなぁ。もっとやさしくPowerShell啓蒙してくださいよ。
みんなにおすすめしたいから、わざわざこのスレにこられているんですよね?
Excel操作に詳しいPowerShell関連サイトでおすすめがあったら教えてください。
VBAとの比較とかあるとうれしいです。
2018/05/09(水) 12:26:57.73ID:idFoGogH
>>767
後釣り宣言って?
2018/05/09(水) 12:29:51.31ID:et5rpIq2
>>767
釣り宣言したら釣りにならないだろ?
そんなことも分からないゴミは死んどけ

>>768
PowerShellのスレに行け
2018/05/09(水) 12:31:39.91ID:idFoGogH
じゃぁ、話題を変えてVBAの質問です。
教えてください。
1.4万行の検索範囲セルx1.4万行の検索値の単純マッチングをMatch関数で行った場合、
約36secかかります。これを高速化しようと思い、前者TableをVariant型に投げ込んで
検索したところ、結果120secに延長してしまいました。
配列上で処理したほうがより高速に動くという認識だったのですが、どのように解釈すれば
よいでしょうか?
検索値、値はStringです。
2018/05/09(水) 12:40:19.25ID:3+WmT7VP
>>771
ソートしたか?
2018/05/09(水) 12:43:03.63ID:QVPn4o2T
後釣りの意味がわからないならググれ
どのレスのこと言ってるのかわからないならこのスレを「釣」で検索
2018/05/09(水) 12:56:39.40ID:idFoGogH
>>772
検索範囲を昇順ソートしてみました。結果、、
 ・Cell範囲の場合: 43sec
 ・配列の場合: 127sec
ん? 更に延びた。さっきのはキャッシュでも効いてたのかな?
Stringの中身は "ID-枝番" 書式の文字列です。
2018/05/09(水) 14:17:26.27ID:3+WmT7VP
>>774
検索アルゴリズムをバイナリサーチにしてないんじゃないの?
2018/05/09(水) 15:17:53.88ID:eDrKJyoy
初めまして。共有保護について教えていただけませんでしょうか。
共有保護解除→マクロ処理終了→共有保護設定をする方法を作ってみましたが問題がありました。
「On Error Goto」を入れるとエラー発生→共有保護設定後、一回閉じてまた開くと「共有」が消えてしまう。
色々試したけどダメでした。(「On Error Goto」を設定しないとうまくいく。)

Sub 共有保護解除設定()
Dim x As String:x=1
On Error GoTo myError
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ActiveWorkbook.UnprotectSharing Sharingpassword:="aaa"

Do: Sheets( x ).Delete: x = x + 1: Loop

  myError:

  ActiveWorkbook.ProtectSharing Sharingpassword:="aaa"

End Sub
2018/05/09(水) 18:14:36.75ID:iSDGF1Po
>>776
よく分からんけど
何故にエラーの飛び先をループの中に突っ込むのか
2018/05/09(水) 18:16:21.44ID:moyciPZH
>>765
実行ポリシーにはスコープという概念がある
スコープはマシン、ユーザー、プロセスがある
ユーザー、プロセスの実行ポリシー変更は管理者権限不要
ユーザースコープの実行ポリシーを変更するのがベターだね

>>763
コマンドプロンプトみたいにVBSファイルを指定して実行できるし
スクリプティング環境をComインスタンスとして生成することもできる
直書きというのは何のこと言ってるのかわからんな

需要がないからやったことないけれどexcelのイベントにCLRのハンドラを登録することは可能だよ
オススメはしない
2018/05/09(水) 19:46:24.05ID:wUvS2pdo
>>771
VBAは基本的にシングルスレッドで動く
今のワークシート関数とかは、条件が整えばマルチスレッドで動く

なので、必ずしもVBAの方が早くなるとは限らんのだよ
Match関数がどうなってるかは知らんがな
2018/05/09(水) 19:58:04.93ID:hUIK0iNE
二分探索使ってないとか初歩的なことじゃなく?
2018/05/09(水) 20:43:17.83ID:z3LuxVKv
>>771
Variant配列には何が入ってるかわからんので最適化しにくい
2018/05/09(水) 20:59:13.98ID:HhkRUfwj
このように答えがついても反応しない質問者がよくいるからQA以外の話題で盛り上がる。
ま、興味深い話題ならいいんだけどね。
2018/05/09(水) 21:26:33.65ID:fZf43uAK
>>777
ループの中じゃなくね?
784デフォルトの名無しさん
垢版 |
2018/05/09(水) 21:43:05.88
>>776
ActiveWorkbook.ProtectSharing の後に
ActiveWorkbook.ExclusiveAccess を入れてみれば?

知らんけど
2018/05/09(水) 21:52:15.61ID:idFoGogH
>>778
スコープの件、了解です。
いろいろ試してみます。
2018/05/09(水) 21:53:17.93ID:idFoGogH
>>779
メモリに乗せれば単純に早くなるわけではないんですね。
787デフォルトの名無しさん
垢版 |
2018/05/09(水) 21:55:25.27ID:w1k9kHe1
>>786
配列のマッチングはどうやって書いたの?
2018/05/09(水) 21:57:44.24ID:idFoGogH
>>780
Match使うときはたいてい絶対一致でつかってました。
クロスマッチになっちゃうんでしたっけ?
ここのカキコみて、以前、高速Lookupは使ったことがあるのですが、、
半分うろ覚えです。
リストを昇順ソートして、第3引数を 1 にするだけじゃ
だめですよね。変な答えが返ってきます。
2018/05/09(水) 21:58:30.50ID:idFoGogH
>>781
そうですか。型かえてみようかな?
2018/05/09(水) 22:14:27.61ID:idFoGogH
>>787
いろいろ省略してますが、こんな感じです。

Dim rngFdList as Range: Set rngFdList= Range( ** 以下略(調査表) **
Dim arrFdList as Variant: arrFdList = rngFdList

For each r In Range( ** 以下略(駆動表) **
 With Application
 iHit = .IfError( _
    .Match(r.value, arrFdList, 0), _
    0 _
   )
 End With

 (処理...)
Next
791デフォルトの名無しさん
垢版 |
2018/05/09(水) 22:19:47.47ID:w1k9kHe1
>>790
なんだ、ワークシート関数を使ってるのか。
それじゃ配列処理にする意味ないな
2018/05/09(水) 22:23:25.94ID:idFoGogH
>>779
ああ、ワークシート上の関数と比較して、じゃなく、VBA上でMatch関数を使う際に
テーブルをRange指定するか、配列指定するかで速度が変わった、という話です。
これもマルチスレッドが関係します?

たぶんMatchの使い方がまずいんだと思いますが、、
2018/05/09(水) 22:25:05.08ID:idFoGogH
>>791
Matchのほうが早いかなと思って。
Forで回したほうが早いですかね?
それとももっといい方法が、、、
教えてください。
2018/05/09(水) 22:28:35.61ID:iSDGF1Po
>>783
本当だ
セミコロンで複数の命令繋げて
ご丁寧にインデントまで変えてあるから分からなかった
795デフォルトの名無しさん
垢版 |
2018/05/09(水) 22:49:17.51ID:w1k9kHe1
>>793
>>772>>775は理解できたの?
これに反応しないからこちらからは状況がよくわからん。
2018/05/10(木) 01:15:35.99ID:/NGeWAX7
エクセル2016や2013等の新しいエクセルで追加された関数を、
2010等の下位バージョンで動作させるような、
ユーザー定義関数が書かれたVBAモジュールを配布しているサイトってありますか?
検索の仕方が悪いのか、自分では見つけられませんでした。
2018/05/10(木) 06:25:28.16ID:hUon7v2K
>>793
セルにアクセスしてループしてるじゃん。そりゃ遅いわ。
メモリ上でループすれば速くなるよ。

処理がこれだけならセル上の関数でも工夫すりゃ同じ速度出そう。
完全一致使わない方法とかで。
2018/05/10(木) 06:42:21.45ID:n6BTi4dI
>>796
ピンポイントで〇〇の関数を2010で使いたいと言うならまだしも2013/2016の関数って一言で言われてもなぁ
799デフォルトの名無しさん
垢版 |
2018/05/10(木) 06:45:52.61
>>790
何回も検索するんならDictionary使えばいい
最初にDictionaryに登録するのにある程度時間がかかるだろうが
一回登録してしまえば検索自体は数秒もかからん
2018/05/10(木) 08:15:00.88ID:/JKhPozC
>>796
(関数名) 再現 2010
とか検索したら出てくるんじゃないかな。
IFSとか見つけたけど。
2018/05/10(木) 10:09:42.27ID:1RQmg1q/
答えがついてもろくに反応しない質問者がいるからQA以外の話題で盛り上がる

ってのは本当だな
2018/05/10(木) 10:46:30.23ID:JA/wCecl
>>776です。

>>784
ありがとうございます。
試したけどエラーになります、、、。
いろいろ調べた結果、共有設定の条件によって保存できない。
諦めます(泣)

ありがとうございました。
2018/05/10(木) 13:58:29.65ID:IeALN+vJ
>>795
二分探索は理解不十分。Matchの第3引数を0にするとバイナリサーチにはならない
んですよね。わかってないからこのザマです。ちょっと勉強してみます。
2018/05/10(木) 13:58:57.48ID:IeALN+vJ
>>797
>>797
駆動表側のこと?
今はテストなのでセル範囲だけど、実際はもっと時間のかかる別からの供給。
そしてその先にSQL処理があるので、余計なクエリを投げなくていいように篩いにかけて
おこうという意図です。
なので調査対象の表(こちらはセル範囲へ記録した履歴情報)だけでも配列に入れて
高速化しようと試みたんだけど、このザマです。
2018/05/10(木) 14:05:11.32ID:IeALN+vJ
>>797
Dicかぁ、今、ちょっと時間がとれないので、また試してみます。
早くなるかな?普通の入れ子のLoopとか、Dictionaryとか、いろいろ試してみます。
目標10sec。
2018/05/10(木) 14:06:13.75ID:IeALN+vJ
>>805
あれ、安価ミス。799への回答でした。
2018/05/10(木) 15:30:36.46ID:QBpsjCo6
SQLiteでいいじゃん
2018/05/10(木) 16:51:36.95ID:jLma9UA8
>>807
それ言えば、またこちらの環境ではセキュリティがどうのこうので入れられない〜とか言い出す奴が出てくる
んで、もうExcel限定で良いっしょ。パワーシェルキチは論外としてw
809デフォルトの名無しさん
垢版 |
2018/05/10(木) 17:47:50.99
>>805
このへん見るに、かなり高速化できそう
まあループよりハッシュのほうがそりゃあ圧倒的に速いに決まってるけど
https://excel-ubara.com/excelvba4/EXCEL268.html
2018/05/10(木) 17:54:52.83ID:7DjALtvb
エクセルマクロはやりたい放題なのにセキュリティとか片腹痛いわ
2018/05/10(木) 19:14:27.72ID:39NqoQfJ
Excel VBAで悪意のあるもの作るには本人の意思が必要。
外部ソフト入れるなら意図しないものが混入する可能性がある。
これぐらい理解できないのか?
2018/05/10(木) 19:26:28.88ID:NzRSgzkJ
オプソならすっきり解決
2018/05/10(木) 20:08:04.83ID:F9pCnCSA
>>811
内部犯やチョンボを考えられないあたりが事務員さんって感じで微笑ましい
2018/05/10(木) 21:33:49.65ID:n6BTi4dI
>>811
怪しいサイトからダウンロードするならまだわかるけどメジャーなオプソでそんなコードが見つかったら祭りになるわ w
2018/05/10(木) 21:36:46.67ID:w2ga1e/f
EXCELはWebシステムみたいに外部と繋がってないから
比較的被害は小さくて済むよね

でも以前仕事場で
内部にファイル勝手に消えたり
外部接続の無い環境でウイルスらしきものが見つかったりしたことがあって
上の人から秘密裏に頼まれてファイル監視システム作ったこともあったな
2018/05/10(木) 21:39:40.05ID:39NqoQfJ
>>813
チョンボでセキュリティを突破するようなもの作れるの?


>>814
で、どうやって有名無名を判断するの?

会社勤めしたことあるのかって発言してるよ?w
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況