Excel VBA 質問スレ Part60

■ このスレッドは過去ログ倉庫に格納されています
2019/03/16(土) 20:39:09.64ID:6HWXzj9o
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part59
https://mevius.5ch.net/test/read.cgi/tech/1549692750/
2019/03/23(土) 14:57:22.48ID:jhd39dfA
>>165
俺も使わなくてもいいと思うが
上でコールバックコールバック言ってたからな

>>167
お前に何の能力もないのは分かったから落ち着け
2019/03/23(土) 15:09:34.24ID:4ZM/hDcb
>>167
お前はアンカーもまともに見れないのかよw
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

こいつは荒らしじゃね?
相手しない方がよい
2019/03/23(土) 19:19:07.38ID:tumCHHdc
>>170
ここはVBAのスレだよ。 そこにRubyとか持ってきたからじゃねえのw
2019/03/23(土) 20:10:53.10ID:VsaUG60l
>>170
そのruby信者が荒らしだぞ
あらゆるスレで「rubyなら〜」と言ってrubyを貶めしている
pythonスレではスレタイにruby禁止とまで入る始末
2019/03/23(土) 22:49:02.19ID:XxYiFSG+
コールバックって何?
ググると、関数の引数に渡す関数って出てくるけど、
それって、複数の処理を、
↓こうやって横着して1行に書くのと何が違うのかわからん。

a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
2019/03/23(土) 22:57:17.29ID:VsaUG60l
>>173
a関数の処理が終わった場合、a関数の引数を受け取ってb関数を自動的に開始する・・・という処理
非同期、特にスクレイピングが多重で続くような場合は非常に強力
https://www.sejuku.net/blog/67743

使う場面が分からないのは、使う必要が無いと思って良い
jsだと死ぬほど使うが、EXCELで使う事はまずない
2019/03/23(土) 23:43:32.78ID:vBZJiXyX
VBAでコールバックを実装しようとしたら、 Application.Runを使うかクラスモジュールでメソッド書いてCallByName関数で呼び出すようにするかって感じになるんかね
2019/03/23(土) 23:54:56.46ID:49H4PHbP
>>175
AddressOf
2019/03/23(土) 23:57:25.89ID:49H4PHbP
>>175
ごめんVBAでコールバックを「実装」か。
VBAの関数をコールバックするにはどうするかという問題と勘違いした
2019/03/24(日) 00:19:26.62ID:lQI3nZvh
>>177
そう、外部プログラムにVBA側の関数ポインタを渡す話じゃなくて、受けとる側の処理の書き方
2019/03/24(日) 00:40:55.67ID:MjUvfGmD
クラスのメソッドとしてコールバック関数を実装してinterfaceか遅延バインディング使えばいい
2019/03/24(日) 07:46:43.58ID:myNgr9GS
>>173
> a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
これは外側のReplace()に内側のReplace()の「結果」を渡してる
コールバック関数は内部で呼ぶ関数を変えたい時に使う
例えば図形を描くルーチンがあったとして出力先を色々切り替えたいとかだと出力する関数を自体を渡す
やり方はこの辺りを参考にして
https://qiita.com/rai_suta/items/c07b22130b302682b729
2019/03/24(日) 11:58:57.43ID:DVu1xjKe
>>179
やっぱりAddressOfの値を受け取ってそれをAPI経由で実行するのがいいんじゃないか
ただしシグネチャは一定とする
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って馬鹿のひとつ覚えって言うんだよ
2019/03/24(日) 12:35:25.20ID:aL5blMH8
>>183
他言語を覚えなくて良いのは大きなメリット
環境構築、記述方法、言語仕様
この辺全部覚えなくて良いのはデカイ
特にvbaはプログラマーじゃなく事務員が使ってる場合も多いので、環境構築が苦手な事が多々ある
2019/03/24(日) 13:44:54.25ID:PQbtijKV
ノコギリで刺身切ろうとして包丁使えよって言われて包丁の使い方覚えなくていいのはメリットって言ってる構図
2019/03/24(日) 13:53:08.65ID:aL5blMH8
>>185
例え下手でわらった
2019/03/24(日) 13:54:25.82ID:PQbtijKV
>>186
お前は仕事下手だよな
188デフォルトの名無しさん
垢版 |
2019/03/24(日) 14:07:22.16ID:OZ1kvGmt
他言語を覚えなくて良いって発想がどうかと思う
適材適所で効率良くするのも仕事だし
死にゆく言語の代表がVBA
2019/03/24(日) 14:08:05.28ID:myNgr9GS
>>185
流石に頓珍漢すぎ
出刃包丁で刺し身切ろうとしたら刺身包丁買ってこいってゴネてる奴がいるだけ
2019/03/24(日) 14:30:37.07ID:aL5blMH8
>>187
根拠もなく、何を見てそう思ったの?

>>188
>他言語を覚えなくて良いって発想がどうかと思う
>適材適所で効率良くするのも仕事だし
これは同意
俺も効率化のためにphpとjsはある程度覚えてるわ

ただ、人に勧めるのは現実的に厳しい面がある
たまーに出てくるスクレイピングのためにphp覚えろって言うのはなかなか酷
時間がかかって良いならウンコみたいなコードでも処理できるしな
ここの人でもサーバー=レンタルサーバーって発想した人いるけど、
スクレイピングのためにphp動かすならxamppで良い

>死にゆく言語の代表がVBA
ずっと言われてるけど全然死なないので俺も困っている。せめてバージョンアップして
2019/03/24(日) 14:34:03.77ID:dT6Xb8jy
既に公式にはJavaScriptに置き換わってるのに今更バージョンアップもクソも
2019/03/24(日) 14:35:01.83ID:aL5blMH8
>>191
JavaScriptに置き換わってるって言ってもアドインだけでしょ
2019/03/24(日) 14:43:19.68ID:dT6Xb8jy
>>192
だけもクソも、現在推奨されているExcelのプログラミングインターフェイスはアドインのみだよ
VBAは廃止予定のレガシーな機能であり、使用は推奨されない
2019/03/24(日) 14:53:50.44ID:aL5blMH8
>>193
それは知りませんでした、申し訳無い
そのソースってどこかにありますか?

vbaがやっと進化するのか
195デフォルトの名無しさん
垢版 |
2019/03/24(日) 15:03:11.84ID:A9z4XFqj
自分の現在分かる範囲で創意工夫してやろうとするのは良いことで出来ちゃってるんだろうけどこの先ずっと出来るかは不明
新しいのを取り入れないとダメ
特にエクセルVBAでやる必要のないのがあるなら勉強のチャンスなのに古いのでやろうとするから進歩しない
2019/03/24(日) 15:10:13.55ID:gZMjxNOF
xampp入れてPHP一から覚えるぐらいなら、VB.NET覚える方がはるかにマシだわ
2019/03/24(日) 15:19:49.80ID:Mw3X0nZC
>>191
エクセルのマクロもVBAじゃなくてjavascriptになるのか?
てか、もうなってるの?
ボタンと押したときの動作とかもすでにjavascriptで書くようになってる?
2019/03/24(日) 15:23:45.60ID:aL5blMH8
>>197
アドインがjsで書けるように鳴ったんだよ
2019/03/24(日) 15:39:49.96ID:y9CSgW5G
ここは言語スレじゃなくてExcel VBAスレなんだが
バイクやチャリの板で日本縦断の準備とか注意点についての質問レスに対して飛行機使えよ馬鹿とレスしてるやつ居たらアホだろ
2019/03/24(日) 15:47:43.47ID:aL5blMH8
>>199
何回やっても例え下手やなw
もっとやっていいぞ
2019/03/24(日) 15:54:11.30ID:Mw3X0nZC
>>198
マクロは関係ないのね。 VBAが無くなるとは考えられん
2019/03/24(日) 16:01:00.66ID:dT6Xb8jy
>>201
マクロは単純に廃止だろうね
知らないかもしれないが、昔はVSなどMS製品には大抵VBAマクロが入ってたんだよ
どんどん廃止されて、今や残ってるのはOfficeだけ
2019/03/24(日) 16:08:12.38ID:Mw3X0nZC
>>202
ん? マクロ自身が廃止になるのか?
マクロは残るがVBAじゃなくてjavascriptになるのか、って聞いたんだが
2019/03/24(日) 16:19:40.92ID:aL5blMH8
>マクロ自身が廃止
上でそう言ってたけどソースが見つからない
ただの噂かも

>VBAじゃなくてjavascriptになるのか
現状はjsでもアドインを作れるようになっただけ

俺もvbaは廃止しないと思う
205デフォルトの名無しさん
垢版 |
2019/03/24(日) 16:19:49.86ID:rXU7uH3v
だってVBAってセキュリティ的にヤバいし
エクセルファイルに偽装してマルウェア的なかなりの事までやれちゃうから廃止で良いよ
2019/03/24(日) 16:23:34.70ID:Mw3X0nZC
>>204
>俺もvbaは廃止しない

絶対あり得んよね。 今までの過去の資産がどれだけあるか
それを作ってるのは理系のプログラマじゃなくて文系の経理の女の子も相当いるからな
2019/03/24(日) 16:46:14.04ID:cASdygc2
全くバカばっかりだ。
その場で最適なのを選択すりゃ良いんだよ。

レガシーとか言ってるバカは救いようがない。
VBAで簡潔出来るならその方が良いんだよ。
VBScriptでファイル選択ダイアログを使う時にExcel.Application使うなんてのは本当はやりたくないけど他にうまい方法が無いから仕方ない。
このやりたくないというか筋が悪いと感じることが出来ない奴は結局駄目だね。

レガシーなのはその通りだが、それで別言語使って筋悪プログラミングしてたら意味が無い。
2019/03/24(日) 17:13:35.45ID:cASdygc2
“Office アドインはVBAやVSTOを置き換えるものではないので(現時点では)、「何でこんな簡単なこともできないの!?」とイライラしてはいけない”だとさ。
2019/03/24(日) 17:17:26.83ID:iA9UpJgV
Officeアドインとかいうの忌み子になりそうだよな
2019/03/24(日) 17:43:12.27ID:bibhGphx
とりまIEが消えればVBAでスクレイピングは消える
OS依存の負債を作りかねない機能はどんどん省いて欲しいね
2019/03/24(日) 17:58:19.82ID:XiACCcaf
セルの中に、そのセルが存在するシート名を抜き出す関数の定義ってどんなのがある?
シンプルで分かり易い、エクセルの版に依存しないのが良いな。
2019/03/24(日) 18:00:03.79ID:XiACCcaf
ここはVBAのスレだから、セル内で使う計算式の質問はスレ違か。
213デフォルトの名無しさん
垢版 |
2019/03/24(日) 18:03:25.87ID:APHXkx0k
言ってみ
2019/03/24(日) 18:10:28.59ID:aL5blMH8
>>210
IEが無くてもhttp通信できるぞ

>>211
cell関数
https://kokodane.com/kan54.htm

シンプルじゃないけどこれぐらいしか
2019/03/24(日) 18:26:04.21ID:bibhGphx
>>214
http通信でスクレイピングか
是非頑張ってくれ
2019/03/24(日) 19:01:26.26ID:eoRp1F4j
>>214
ありです。
残念なことに、CELL関数は Excel Online の excel では動かないんですね。
2019/03/24(日) 20:51:56.44ID:IVIO7oct
というか、IE消えても出来るぞ。Winsockとか知らんか?
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()ってのもあるみたいでどうにかすれば行けそうな気もしたけどやっぱり無理だった
219デフォルトの名無しさん
垢版 |
2019/03/24(日) 23:27:39.47ID:APHXkx0k
スクレイピングならJSで良いと思うけど何が何でもVBAなの?
何か幼少期に家庭的な問題でお父さんから虐待されてたとか?
2019/03/24(日) 23:39:48.89ID:3fqiTHWE
pythonスレのスレタイに、ruby禁止と入れて、スレ立てしている奴は荒らしだよ

lodash 禁止とか、jQuery 禁止とか、ライブラリの話は禁止とか書いて、
テンプレを勝手に改変して、スレ立てしている奴は荒らし

色々なスレを荒らしてる

相手をすると居つくから、相手をするな!
2019/03/24(日) 23:41:24.84ID:dT6Xb8jy
次スレはここもRuby禁止をスレタイに入れよう
2019/03/24(日) 23:46:49.32ID:3fqiTHWE
スクレイピングのために、xampp, PHP を学ぶのはキツイ。
Ruby, Nokogiri, Selenium WebDriver で良い。
JavaScript, jQuery も呼び出せるし

VBScript のスレ主のピッコロ大魔王のように、
VBScript, PowerShell で、.NET のライブラリを使って、5ch をスクレイピングする猛者もいるけど、これもキツイ

書きやすいのは、やっぱりRuby!
2019/03/24(日) 23:52:43.94ID:aL5blMH8
という荒らしがいるのでruby禁止をスレタイに入れるのは賛成だ
224デフォルトの名無しさん
垢版 |
2019/03/25(月) 00:01:34.20ID:PcSty2cw
スクレイピングってその分野なら必須なのでVBAなんて低速非効率でするなんて馬鹿げてる
2019/03/25(月) 00:18:14.82ID:QHkTeEIZ
エクセル方眼紙で出来ることの限界に挑む
226デフォルトの名無しさん
垢版 |
2019/03/25(月) 00:44:08.18ID:hbWmkRbh
極めると魔法使いになれる
2019/03/25(月) 12:33:19.91ID:O3TyiYmg
バカだよなあ。
どんな言語でも出来るがVBAでやるのが最適な場合の質問だろ。
VBAのスレなんだから。

スクレイピングのためにxampp,PHPを学ぶんだよ。
それが最適なら。
Rubyが最適ならRubyでやれ。

でもここではVBAが最適という前提。
オマエの能力が低くてVBAで答えられんことなんか知らん。
228222
垢版 |
2019/03/25(月) 23:50:42.64ID:mW0SiMKO
スクレイピングのために、Apache, MySQL, PHP を学ぶのは、難しすぎる

Ruby なら、PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する

ruby -run -e httpd . -p 8080

そのフォルダに、index.html があれば、
何も考えなくても、これでブラウザからアクセスできる

http://localhost:8080

DB は、sqlite3 で良い。
sqlite3.exe なら、外部プロセスとして起動できるし、
sqlite3.dll なら、Rubyプロセス内に、DLLを読み込めばよい

それに多くのブラウザは、内部で、sqlite3 を使っている。
MySQL は大げさ

そもそも単に、CSV・テキストファイルに、保存しちゃダメなのか?
2019/03/26(火) 00:19:09.71ID:oh514UWC
ruby禁止
2019/03/26(火) 01:15:56.88ID:H+8MTdhM
いつからスクレイピングとはWEBサーバを立てる事になったんだ
2019/03/26(火) 01:19:51.23ID:LqY+kMaC
スクレイピングの速度を上げすぎるとDoSと勘違いされない?
pythonとかならちゃんと犯罪にならないレベルで収まるよう対策されてるの?
232222
垢版 |
2019/03/26(火) 02:40:19.99ID:gZH84WWp
wget が、再帰的クローラーのコマンドだけど、オプションでwait 時間も設定できる。
wgetの方が、curl よりも高機能

xampp には、Apache が含まれているから、web サーバーも立てたいのかなと思って
2019/03/26(火) 08:11:44.77ID:uoYW3oSf
次からruby禁止をスレタイに入れよう
2019/03/26(火) 09:52:19.15ID:6lKUP98X
バカは自分の無能を言い訳に相手の望まない案を提案する。

誰もRubyでやってくれなんて言ってないんだが。
235デフォルトの名無しさん
垢版 |
2019/03/26(火) 09:56:34.73ID:YksIzQQu
VBAを覚えても馬鹿にされるだけだしVBA程度でプログラミング出来ますって言えないし
本当に辛いよな
2019/03/26(火) 10:13:52.38ID:uoYW3oSf
>>235
>VBAを覚えても馬鹿にされるだけ
どこで?
これぐらいは基本スキルと思う

>VBA程度でプログラミング出来ますって言えない
誰に大して言うの?
vbaは一般事務や営業が楽するためのツールだよ
vbaプログラマーなんて滅多にいない
2019/03/26(火) 11:33:39.48ID:HkFlKNPk
昔は同時接続5つくらいまでみたいなマナーのようなのがあったが、今はどうなの?
2019/03/26(火) 11:43:27.57ID:v6BkG2hM
>>236
そりゃそうだ

ところで他言語連携って、A言語で作ったライブラリをB言語から呼び出すパターンと、
時間的同期を意識しなくていいバッチ的なももの組み合わせみたいなものしかイメージないんだけど、
イベント連携しながら運用するようなパターンもよくあるの?
2019/03/26(火) 12:18:27.89ID:uoYW3oSf
>>237
図書館のサーバーに大してかなり気を使ってスクレイピングしたにも関わらず、電子計算機損壊になった例もある
どこまでokとかは言えない
2019/03/26(火) 12:32:19.25ID:6lKUP98X
>>235
いや、普通に言うけどね。
C、C++、Java、VBAとかって。
それに、VBAを使うべきじゃないと言う時もある。

でも、ここで他言語のことを言う奴ってVBAの方が完全に良い場合に他のが良いとか言う無能が多いからなあ。
2019/03/26(火) 12:32:53.04ID:6lKUP98X
>>239
普通は相手に許可を取るもんだけどな。
2019/03/26(火) 12:34:55.56ID:ke9zWH00
>>240
シートにデータ張るくらいの簡単なものなら インタフェースできてるからVBAが一番楽。
2019/03/26(火) 12:35:47.09ID:uoYW3oSf
>>241
取らないよwww
2019/03/26(火) 12:43:36.07ID:6lKUP98X
>>243
遊びでやってるならどうぞw
事務でも仕事なら取るべきだ。
2019/03/26(火) 12:46:04.30ID:uoYW3oSf
許可は取らないけおd、API作ってくれとは連絡するかな
2019/03/26(火) 12:55:18.22ID:DPMd1MEr
VBAのエディターにはVSみたく行番号を表示する機能は標準では備わっていないのでしょうか?
2019/03/26(火) 13:06:52.15ID:LqY+kMaC
>>246
ない
フリーウェアの助けが必要
2019/03/26(火) 13:14:58.60ID:uoYW3oSf
昔使ってたな
https://qiita.com/ynakayama/items/ef35966f1e456392ec93

たまに欲しいけど、別に無くてもいいかなって
2019/03/26(火) 13:16:03.76ID:DPMd1MEr
>>247
サンクス

VSと比べていろいろと中途半端ですね。

C#でこれまではずっと開発してましたが
Excel台帳ベースのシステムを組む事になったので
今回は、VBAで開発してます。

大体のことはVBAでできるけど、本格的な開発はやはりVS使わないとダメですね。
2019/03/26(火) 16:55:11.90ID:LqY+kMaC
>>249
ワークシートなどを含むExcelオブジェクトはVSからでも普通に読み書き操作できるぞ
使っていいんならVSで開発すればいい
2019/03/26(火) 17:24:40.03ID:DPMd1MEr
>>250
ちょっとした文字列操作とかスクレイピングだから
VBAの方が楽かな〜と思って今回数年ぶりにVBAいじってます。
2019/03/26(火) 18:32:26.11ID:1ujvGqyy
ちょっとした文字列操作とスクレイピングってVBAが一番苦手なやつでは
2019/03/26(火) 18:42:15.15ID:uoYW3oSf
・スクレイピングは深夜にcron+phpで行ってサーバー上に保存
・vbaはその結果を取得
の二段構えが楽と思うけどな

文字列操作はどんな言語でもなんとかなるやろ
EXCELに入れるとunicode周りが死ぬけど
2019/03/26(火) 18:53:14.39ID:1ujvGqyy
cron使える環境ならphpなんて大層なもん入れなくてもcurlとかwgetでよくね
2019/03/26(火) 18:57:02.87ID:uoYW3oSf
どうなんだろうな
俺はもうスクレイピングなんかに多言語勉強したくないから、cronからphp叩いてどうのこうのしている
vbaはもう完全に後始末で、骨拾うだけ
2019/03/26(火) 20:15:40.62ID:OL2Ik/OA
スクレイピングの主役は通信じゃない
winsockでもwgetでもbitsadminでも良いから取ってきたファイルをどうするか教えてくれよ
2019/03/26(火) 21:08:44.89ID:DPMd1MEr
>>253
ログインしないと見えないデータなんだよ
なのでクライアントでの取得必須
2019/03/26(火) 21:16:14.33ID:IZpVJLyd
んなもん2段階認証とかじゃなければセッションなりクッキー投げるだけやん
取ってきたファイルはパーサーに食わせるなり正規表現でゴリゴリするなりだけど
そのどちらもVBAはとても苦手な分野やで
2019/03/26(火) 21:25:26.00ID:/NHGfRej
認証とかhtmlパーサとかJSエンジンとか
大抵はその辺をIE操作で賄うモノだと思ってたけど自分の認識が違ったらしい
2019/03/26(火) 21:25:56.25ID:DPMd1MEr
>>258
あんちゃん詳しいな〜
そーいうのやったことが無い。
試しにやってみようかな。
2019/03/26(火) 22:18:57.15ID:uoYW3oSf
basic認証なんかは瞬殺だけど、
セッションとかクッキーになると、諸々含めてphpにした方が良い。というかchrome拡張が一番楽
httpsやらUA絡みだすと小生無理!ってなる。
2019/03/26(火) 22:19:38.30ID:uoYW3oSf
vbaはwebに向いてないってことだけは覚えておいて欲しい
それだけなんだ
263222
垢版 |
2019/03/26(火) 22:45:37.41ID:gZH84WWp
ログインするなら、Ruby, Selenium WebDriver で、ブラウザを自動操作すべき。
iMacros でも良いけどさ

>>222
に書いてある通り
2019/03/26(火) 23:07:10.89ID:DPMd1MEr
>>261
年齢を重ねると新しい技術を学ぶのが億劫になるんじゃよ
2019/03/26(火) 23:28:35.45ID:Q3YSvizA
Excelマクロについて全くの無知でみなさんにお伺いしたいのですが、マクロで画像のような操作は可能でしょうか?会社の書類作成事務の効率を上げたく…
スレ違いでしたらすみません。https://i.imgur.com/xF5hatf.jpg
2019/03/26(火) 23:38:24.00ID:WFGn9NdD
>>265
VLOOKUPで余裕でしょ
マクロなんか要らん
2019/03/26(火) 23:41:30.56ID:oc5f3itp
>263
rubyがゴミ言語って事はよくわかった
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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