Excel VBA 質問スレ Part58

■ このスレッドは過去ログ倉庫に格納されています
2018/11/19(月) 06:47:24.99ID:Qq88xGOU
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/
488デフォルトの名無しさん
垢版 |
2019/01/15(火) 09:14:01.41ID:S3yO0kW1
>>487
自己紹介乙
2019/01/15(火) 13:10:33.30ID:4ICOKV5/
相手するなよ…
490デフォルトの名無しさん
垢版 |
2019/01/15(火) 15:44:09.85ID:+MTMyzJj
アプデしたらExcelうごかんくなった
たすけてえろいひと
2019/01/15(火) 17:14:50.09ID:bs6RyUw7
まず服を服を脱ぎます
492デフォルトの名無しさん
垢版 |
2019/01/15(火) 17:49:29.10ID:yHGEgwFF
>>490
ID:p535EsUFに聞け
2019/01/15(火) 17:53:44.09ID:LAAyKIEn
>>487
できる奴ほど言語のメリットデメリットを正確に理解してるから優劣を語る
出来ない人はそもそも語るほどの知識がない
2019/01/15(火) 20:59:40.68ID:2H7V8WUe
>>493
メリット、デメリットを把握してたら優劣つかないんだが。

そうだな、このスレで何度となく言われてることだが、Excelのみで完結できるというメリットを挙げると、別ファイルが有っても大きな問題じゃないとかくだらない言い訳を始めるんだよ。
今まで、どんな場合でもVBAは駄目とか言ってたくせに。
2019/01/15(火) 21:49:29.77ID:LAAyKIEn
もうそれしか拠り所がない感じなのかな
2019/01/15(火) 23:55:27.89ID:7/bomr1d
出たな単一ファイル老人
2019/01/16(水) 12:53:07.07ID:dguj1mvw
どんな場合でもと言ってたのが破綻したわけだ。
それに、この点は全てに係る重要な点だ。

他にも沢山あっただろ。
でもこれ1つで「どんな場合でも」は破綻したな。
2019/01/17(木) 10:25:15.47ID:yJSDrWu9
そもそも職場でexcelしか許可されてなくてほかのソフトが入れられない人にとって
ほかの言語がどれだけメリットがあっても使わせてもらえなければどうしようもないんじゃね
俺はVBA以外も多少知っているけどそっちの話は別のスレでやってる
2019/01/17(木) 11:51:25.20ID:a+HEJ0Au
本当に必要なら申請すれば入れさせてもらえるはずとか言ってもねぇ
VBAでは絶対無理ってわけでもなく、出来ないこともないので、
本当に必要かって言われるとそうではないことも多いからなぁ
2019/01/17(木) 12:21:24.46ID:oU9OMPiG
C#やPowershellも含めて使えないってことは滅多にないだろ
そういう特殊環境を前提に語るべきではない
2019/01/17(木) 12:56:14.54ID:JYUOuN3I
仕事ではその特殊環境となる場合が結構あるんだが。
VBA禁止って所もある。

けどこのスレはVBAが前提なんでね。
C#やPowerShell禁止はデメリットになるけどVBA禁止はデメリットにならないという前提を理解出来ない奴は結構来るけど。
502デフォルトの名無しさん
垢版 |
2019/01/17(木) 13:09:47.45ID:gy8QMGRk
VBA禁止の本当の意味は、
馬鹿が作ったVBA禁止
2019/01/17(木) 13:42:50.54ID:K8cT5dis
IEをオブジェクトにしてフォームに入力、実行まではできます。
実行後、更新されたHTMLを取得するにはどうすればよいのでしょうか?
504デフォルトの名無しさん
垢版 |
2019/01/17(木) 13:45:27.52ID:Vm2XnGVD
>>498
わかるわ。うちもシンクライアントでガチガチにOS固められてるから必然的にVBAとJavascript覚えた。
2019/01/17(木) 14:38:35.71ID:m9vUe5gc
>>503
VBAでやることではありません
RPAでも購入してください
2019/01/17(木) 16:39:21.64ID:yJSDrWu9
>>500
C#やPowershell のスレでやるべきである
507デフォルトの名無しさん
垢版 |
2019/01/17(木) 16:39:45.91ID:Vm2XnGVD
>>503
objIE.Document.Body.innerHTML で読めないの?
508デフォルトの名無しさん
垢版 |
2019/01/17(木) 16:44:36.37ID:YCcy3q+Y
>>500
ここはVBAのスレ。文字読めないヴァカ?
C#やPowershell自慢やりたいんならそのスレに逝けアホンダラ
509デフォルトの名無しさん
垢版 |
2019/01/17(木) 16:47:10.66ID:6nl0xXGy
>>508
何で自慢になるんだ?
馬鹿なのか?
510デフォルトの名無しさん
垢版 |
2019/01/17(木) 17:43:02.84ID:8rj4oJ0j
馬鹿には無理
2019/01/17(木) 18:08:51.74ID:yJSDrWu9
自慢じゃなくて荒らしだな
2019/01/17(木) 19:42:56.03ID:buYHz7fQ
>>503
普通は、Ruby, Selenium WebDriver, Nokogiri で、スクレイピングするけど、

ピラフ大王は、5ch のスレを、PowerShell でスクレイピングしていた、強者!
513デフォルトの名無しさん
垢版 |
2019/01/17(木) 19:57:04.61ID:Vm2XnGVD
>>512
あ、俺Seleniumでスクレイピングしてるわ
IE面倒なんだもんw
2019/01/17(木) 20:39:11.18ID:JYUOuN3I
IEオブジェクトはHTMLコード内の改行も1つのノードとして扱ってる点が特殊だな。
MSXML2.XMLHTTPとかhtmlfileでやる場合はそんなこと無いけど。
2019/01/17(木) 20:51:55.46ID:/w6CmWBz
スクレイピングをわざわざVBAでやろうという発想がどこから出てくるのか不思議だな
個人なら裁量があるのにあえてVBAを使う選択はありえないし、
会社だとするとスクレイピングをやろうと考える程度にリテラシーがありコンプライアンス意識が低く、
かつ他のツールを使えない程度には厳格なちゃんとした企業なのにRPAを買う金はない?
2019/01/17(木) 21:30:07.38ID:Vm2XnGVD
>>515
どうしてって、うーん、ただPCにOFFICEが入ってたから使ってるw
javascriptもPerlとかも無料だし、大体どこでも使えるし何か買うほどやる気ないし……
あなたの思っていることは理にかなっていると思うよ、多分色々なことを知っててそれが出来れば視野も広がるって親切心なんだろう。
でも、なんつーか個人で使うだけだから脱線しててもやりたいことが短時間で出来ればいいっていう視点もまぁ理解して欲しい。困ったら聞くかもしんないけどお手柔らかに頼みますw
あとありがとう。
2019/01/17(木) 21:48:09.40ID:3qXsUeDf
IEが消えりゃVBAでスクレイピングなんてのも消えるし
そう遠い未来じゃない
2019/01/17(木) 23:47:45.37ID:1381LMvg
>>499
俺もそんな理由でVBS使ってるわ。
本当は専用の開発ソフト欲しいけど、
やろうと思えばメモ帳だけで出来なくもない、ってのが曲者。
2019/01/18(金) 00:09:50.30ID:3Aai6ayN
うーんどうやら開発ツールを申請できない/入れてもらえない会社が無視できないくらい存在する、
というのはデタラメじゃなかったんだな
2019/01/18(金) 00:58:32.59ID:ld1N2+LD
無視できないくらいってどのくらいだよw
521デフォルトの名無しさん
垢版 |
2019/01/18(金) 04:56:39.52ID:iqHxmsyd
馬鹿には入れさせないだけ
2019/01/18(金) 08:20:26.64ID:FdTpqa5z
>>515
別にわざわざでは無いけどね。
一瞬で出来るんだわ。
それ用のツールを昔、作ったんでね。

>>519
それは仕事の規模によるだろ。
それに、こっちも入れる迄もないと思ってるから申請なぞせんぞ。
VBAだとどうにもならない仕事が継続的に続くなら申請するんだろうが。
2019/01/18(金) 08:59:50.59ID:HmTdANXo
まずOS標準のPowershellでできることをやる
規模が大きくなって型安全性などが欲しくなったら.net CLIとVSCodeを入れる
VBAは本当にVBAが必要で他に選択肢がない場合にしょうがなく使う
2019/01/18(金) 09:13:15.26ID:FdTpqa5z
なんでExcel標準のVBAを使わないのかねw
バカじゃないの?
2019/01/18(金) 09:58:22.02ID:Xg90leRQ
VBAは公式には「レガシー」で「非推奨」な機能だよ
2019/01/18(金) 10:27:15.84ID:02H4sO2V
うちは無料ならツール申請すれば通常通るし、理由もそんなに掘り下げて詮索されることはない。
有料だととたんにハードルが上がるけど。
んでVisual Studioやらなんやら入れた後もVBAはがんがん使ってるな。
C++/C#と比較してもアドバンテージはあると思うよ。
ちなみにPowershellは起動できないようになってる。権限の問題だから単なるインストール申請よりハードル上がるとおもう。
2019/01/18(金) 12:01:36.56ID:dGgLcYHd
>>526
C# を禁止せずに PowerShell 禁止とか意味わからん
まあよくわかってない情シスとかが決めてたりするんだろうな
2019/01/18(金) 12:06:44.97ID:Xg90leRQ
>>527
そりゃ情シスなんかちょっとだけ意識高いPCユーザーに過ぎないんだから、その辺の層の人にとってexeは怖いでしょ
PowerShellなんか所詮テキストファイルだから安心
2019/01/18(金) 12:54:22.16ID:FdTpqa5z
PowerShellはデフォルトで実行出来ないでしょ。
で、実行できるようにして良いかが問題となる。
2019/01/18(金) 13:32:03.41ID:ld1N2+LD
うちは共有pcだと社員の個人情報とか社外秘のデータも扱っているから
情報漏洩やコンプライアンスはうるさいんだよね
そういうの適当な会社がうらやましいよ
2019/01/18(金) 13:46:56.62ID:dGgLcYHd
>>528
???
禁止してるのはテキストファイル(PowerShell)の方だよ?
2019/01/18(金) 13:52:14.57ID:dGgLcYHd
>>529
> PowerShellはデフォルトで実行出来ないでしょ。
できるよ
powershell -ExecutionPolicy RemoteSigned xxxx.ps1
ってやるだけ
2019/01/18(金) 15:05:03.66ID:u9bkOu0s
PowerShellデフォルトでスクリプト実行できないのは致命的。
「え?デフォルトからセキュリティ弛めるの?大丈夫なの?」ってなる。
2019/01/18(金) 15:58:31.39ID:N2j3ka14
>>533
>>532
2019/01/18(金) 18:10:43.98ID:u9bkOu0s
>>534
ウザっ
2019/01/18(金) 18:21:14.18ID:FdTpqa5z
>>532
それをどこでやるの?
当然ダブルクリック1発でできるんだよね。

もしかしてそのためにバッチファイルも作るとか言わんよな。
2019/01/18(金) 18:36:02.88ID:dGgLcYHd
>>536
やれる/やれないの話な
後出しでダブルクリックガーとか恥ずかしすぎるだろ w
ちなみに若干トリッキーだがバッチファイルにPowerShellのソースを入れちゃうこともできる
2019/01/18(金) 19:50:38.17ID:BPWAMvDw
ExecutionPolicyはCurrentUserスコープなら権限不要で変更可能

この情報はプロならみんな知ってるけどアマチュアは知らない人が多いね
2019/01/18(金) 20:36:05.00ID:3Aai6ayN
実行の話じゃないでしょ
2019/01/18(金) 20:43:46.91ID:FdTpqa5z
>>537
???
今まで何の話をしてたんだ?
PowerShellの方がVBAより有利だと言いたかったんじゃないの?

君の発言を聞いてるとPowerShellはますます使いものにならないように感じるんだが、もしかして君は実はVBAの方が有利だと言いたかったのか?
2019/01/18(金) 21:06:07.91ID:dGgLcYHd
>>540
> 今まで何の話をしてたんだ?
>>529 > PowerShellはデフォルトで実行出来ないでしょ。
とか言う情弱がいたって話 w
2019/01/18(金) 21:45:43.94ID:WMbv0rpV
あれ? ExcelってVBAをデフォルトで実行できたっけ?
2019/01/18(金) 22:19:33.59ID:dGgLcYHd
>>542
まあ設定いるんだけど管理者権限は要らない
PowerShell も>>538が言うように管理者権限不要だけど>>529はSet-ExecutionPolicyの-scopeを知らなかったんだろうな
2019/01/18(金) 23:37:19.13ID:c34mocfv
設定を変えなければ動かないことをデフォルトでは動かないというんじゃないかね
設定を変えるのが簡単かどうかは別問題だろ
2019/01/18(金) 23:49:44.04ID:LGpZNaP9
右クリックするだけだろ
2019/01/19(土) 00:13:36.27ID:Fjsb0QYM
既定では
右クリック→管理者として実行
右クリック→やWindowsPowerShellで実行

いずれも.ps1スクリプトは実行できない

>>543もまちがい
既定状態のPCでも
powershell -executionpolicy remotesigned -file 'hoge.ps1'
などと打てば自動的にプロセススコープで自作のスクリプトなどを実行可能
2019/01/19(土) 02:49:20.82ID:S0ghMGDC
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
2019/01/19(土) 05:10:03.36ID:+IqL7b8U
>>544
だからそんなこと言い出したらVBAだってディフォルトでは動かないって話
逆にPowerShellはオプションつければ設定変更なしに実行可能
要するに>>529が情弱っていう事実は変わらない

>>546
> >>543もまちがい
話の流れを読めよ…
既に>>532に書いてあることでドヤ顔されても困る w
2019/01/19(土) 06:27:03.00ID:wkXfpZQC
VBAってデフォルトでは動かないんだっけ?
マクロ入りファイルを開く時は許可か設定が必要だけど、新規ブックならいきなり使えたような
再インストールして確認するのは面倒だからうろ覚えだけど
2019/01/19(土) 07:08:08.04ID:fPDnzLoP
VBAはそもそもオフィスのインストールという過酷な作業が必要だからな
アマチュアの事務員さんは用意されたパソコンを使うだけだから知らないのかもしれないがな
プロはプロジェクトのたびに全員のパソコンを誰かが準備しなきゃならんのよ
オフィスのインストール作業は地味にでかい工数になるんだ
2019/01/19(土) 08:17:46.72ID:pNQS4Xn+
デフォルトで信頼されてる場所のファイルでも動かなかったっけ?

大昔のエクセルならデフォルトでどこでもマクロ動いてたけどなw
2019/01/19(土) 10:55:07.59ID:gJfblIQ2
実行するファイルとは別に呼び出す仕組みを用意する必要があるからpowershellがクソだって言われてるのが分からないのか?
頭悪すぎない?
2019/01/19(土) 11:03:22.61ID:Fjsb0QYM
実行スコープを細かく規定出来るのは進歩。クソだとのたまうアホはセキュリティ意識がおかしい
2019/01/19(土) 11:07:55.26ID:OmtBIHUo
右クリックするだけだろ
2019/01/19(土) 11:12:21.71ID:gJfblIQ2
そのスコープを組み込めない時点で終わってるという話をしているんですよ?
2019/01/19(土) 11:39:33.19ID:fPDnzLoP
スコープを組み込む

この言葉の意味がよくわからんので詳しく説明してみて
2019/01/19(土) 11:47:23.37ID:fPDnzLoP
vbaもエクセルファイル自体が実行可能な訳じゃなくエクセルというプログラムが解釈してやってるだけ
なのでvbaも別に呼び出す仕組みが必要と言っていい
その仕組みは膨大なインストール時間とライセンス料金を支払ってオフィスをインストールするという苦行を乗り越えないと利用できない

それに比べたらパワーシェルは実行までの手間は殆ど無視できるほど小さい
シェルでたったの1行コマンドレットを打つだけでOK
しかも無料なので嬉しいね
2019/01/19(土) 11:47:30.68ID:gJfblIQ2
OSのデフォルト状態で出来ることが前提
拡張子が.ps1の場合右クリックのメニューにremotesingedを表示させるとか?
2019/01/19(土) 11:51:02.97ID:8CGfSDeG
もうその話はpowershellのスレに移動してやってください
2019/01/19(土) 11:51:52.41ID:1cEunHBW
>>552
> 実行するファイルとは別に呼び出す仕組みを用意する必要がある
はあ?
情弱自慢かよww
2019/01/19(土) 12:11:34.94ID:lm8WiCyM
現実社会では話ができない寂しい「プロ」」のプログラマどもが何やらくだらん
雑談をしてスレを潰してるけど質問者の皆さんはそんなヨタ話に付き合う必要
はありませんので、遠慮なく質問をどぞ〜
562デフォルトの名無しさん
垢版 |
2019/01/19(土) 12:14:32.41ID:oaSrkPrl
ところでホンマにブロなん?プロさんて?なんかあやしいんですけどw
2019/01/19(土) 12:25:03.26ID:4FsWRGgY
Officeインストールするしないがオプションなんて事業所あるの?
2019/01/19(土) 12:40:58.29ID:wkXfpZQC
厳密な定義や資格があるわけじゃないんで「プロ」を名乗るのは自由です
2019/01/19(土) 13:14:50.16ID:fPDnzLoP
>>563
そりゃもちろんあるよ
禁止してる事業所だってある
そもそもOS違いで使えないこともある
2019/01/19(土) 13:21:53.40ID:+IqL7b8U
>>563
うちの会社は開発専用機にはインストールしないけどそういう機器は自分でセットアップするからなぁ
>>550の言うプロジェクトの度に準備とかはよくわからんな
2019/01/19(土) 13:26:53.56ID:4FsWRGgY
CADなんかの専用ソフトしか動かさんとか開発機とかそういうのならわかるけど、
このスレで話題にする以上関係ないというか対象外でしょ
2019/01/19(土) 13:35:07.44ID:Fjsb0QYM
普通はイメージで展開して、個別はライセンス認証だけっしょ一台数分
569デフォルトの名無しさん
垢版 |
2019/01/19(土) 14:06:33.45ID:/+FUwnIm
>>558
へえ、ExcelってOSのデフォルト状態で使えるんだ?
570デフォルトの名無しさん
垢版 |
2019/01/19(土) 14:46:59.67ID:Qiw5pxsO
WSHだろ常考
2019/01/19(土) 15:22:25.47ID:wiNfQeeu
>>523-537
例えば、クリップボードでも、Ruby から、powershell コマンドを呼ぶ。
a.rb

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

これをダブルクリックで起動したいのなら、バッチかVBS で起動する。
a.bat

ruby .\a.rb

テキスト処理は、VSCode, Rubyで十分!
2019/01/19(土) 15:49:39.46ID:BW5TF7JU
>>571
VSCodeは個別にライセンスのある膨大な数のオープンソースソフトウェアの塊であり、
PowerShellを禁止しているような糞組織のPCにインストールすることは不可能
RubyもライセンスにGPLの文字を見つけた途端に情シスが卒倒するレベルで全くもって論外
573デフォルトの名無しさん
垢版 |
2019/01/19(土) 21:28:25.59ID:AuMD8hxP
プロさんてバカしかおらんの?
2019/01/19(土) 21:35:07.05ID:+IqL7b8U
所詮自称プロだしw
575デフォルトの名無しさん
垢版 |
2019/01/19(土) 21:40:37.46ID:AuMD8hxP
>>574
開きなおるなバカ
2019/01/19(土) 22:05:47.19ID:+IqL7b8U
>>575
開き直り?
嘲笑って意味わかる? w
2019/01/19(土) 22:06:05.61ID:ARTGttMK
excelってVBAからpythonに変わるっていってなかったっけ?
2019/01/19(土) 22:08:25.92ID:KpXpzNLK
>>577
いってるだけ、今のところは
2019/01/20(日) 00:48:58.52ID:QFn18v7i
dictionaryに格納してるItemを検索して、存在してればKeyを返却する方法が知りたいのだけど、ループさせてヒットしたら値を出す方法以外でfind的な一発でポンと返す記述の仕方はない?
2019/01/20(日) 01:04:30.85ID:yiNhGfDQ
>>579
Item 間に順序関係があればそれを利用して二分探索を適用できる、無論、記述はループチェックに比べて量が多くなる
2019/01/20(日) 03:54:11.74ID:IAu7YphR
>>579
一行で書きたいということなら、文字列ならワークシート関数Matchで検索できます。
ただ存在しなかった場合はエラーが返るので例外処理か事前に調べておく必要があります。

例)
Dim map As Dictionary
Set map = New Dictionary
map.Add "みかん", "橙"
map.Add "りんご", "赤"
map.Add "さくらんぼ", "赤"
map.Add "ぶどう", "紫"

On Error Resume Next

Debug.Print map.Keys(WorksheetFunction.Match("赤", map.Items, 0) - 1)
'りんご
Debug.Print map.Keys(WorksheetFunction.Match("白", map.Items, 0) - 1)
'エラー

On Error GoTo 0

個人的には普通に関数作った方が使いやすいと思います。
2019/01/20(日) 08:04:01.23ID:cWi8furK
>>439
Excel.Application.Onkey で最優先ショートカットキーにできる
次いで.macroOptionsの古いほうが動くよ
2019/01/20(日) 08:25:03.17ID:KJwN8fo6
配列とかコレクションに対してSQLが使えればいいんだけどな。
matchやvlookupより速いんだけど、いちいちシートとかcsvに書き出さなきゃならん。
2019/01/20(日) 09:17:44.39ID:OfXqqqKI
そこまで行くとAccessのお仕事を食っちまう
2019/01/20(日) 09:22:18.21ID:1t0h4eLG
Access VBAでやればいいじゃん
2019/01/20(日) 09:32:11.24ID:brNktcWU
>>582
おっと、回答いただけるとは。
onkeyだと、activeworkbookだろうが、thisworkbookだろうが、後定義したほうが上書き、後勝ちしません?
active側に定義されたショートカットがそれぞれ反応してくれると嬉しいのですが。
2019/01/20(日) 10:54:01.49ID:mVpLWWyp
>>583
MSにExcelでC#使えるようにしてくれ〜
って要望をガンガン出せばお前の望みが叶うかも知れない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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