[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/17 16:56 / Filesize : 280 KB / Number-of Response : 1024
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part82



1 名前:デフォルトの名無しさん [2025/01/24(金) 03:31:15.25 ID:l239yW+P.net]
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

関連スレ
Excel VBA 質問スレ Part79(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1674875532/
Excel VBA 質問スレ Part80(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1700826110/

※前スレ
Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/
Excel VBA 質問スレ Part80
https://mevius.5ch.net/test/read.cgi/tech/1685489018/
Excel VBA 質問スレ Part81
https://mevius.5ch.net/test/read.cgi/tech/1713416618/

369 名前:デフォルトの名無しさん [2025/04/19(土) 19:34:36.21 ID:UV/Amstd.net]
>>366
へっ?ふっ、筆おろし?急に何を言い出すの!?お兄ちゃん!

370 名前:デフォルトの名無しさん mailto:sage [2025/04/19(土) 19:59:47.58 ID:o+j+V/MM.net]
こ、こ、こ、こ、弘法ちゃうわ!

371 名前:デフォルトの名無しさん mailto:sage [2025/04/19(土) 20:45:49.41 ID:ozZ7t8ZT.net]
どうしてソッチだけに食い付くんだか 只の例えだろうに
例えが気に入らないなら、じぶんなりの例えを書きゃあいいのに
ドライバーの方に食い付かない辺りでお里が知れるってもんだ

372 名前:デフォルトの名無しさん [2025/04/19(土) 20:53:32.98 ID:UV/Amstd.net]
>>369
+と-😳
何を急に言い出すの!?お兄ちゃん!

373 名前:デフォルトの名無しさん mailto:sage [2025/04/19(土) 20:59:39.26 ID:uzlTl9vw.net]



コラヤメタマエ

374 名前:デフォルトの名無しさん [2025/04/20(日) 13:50:10.98 ID:RiHDJnuQ.net]
初期:
面白い人が面白いことを書く
中期:
面白くない人が面白いものを見に来る
終末期:
面白くない人が面白くないものを書き始める

375 名前:デフォルトの名無しさん [2025/04/20(日) 13:50:58.56 ID:RiHDJnuQ.net]
面白い人が面白いことをする

面白いから凡人が集まってくる

住み着いた凡人が居場所を守るために主張し始める

面白い人が見切りをつけて居なくなる

残った凡人が面白くないことをする

面白くないので皆居なくなる

376 名前:デフォルトの名無しさん [2025/04/20(日) 13:51:15.67 ID:RiHDJnuQ.net]
1、スレッドが立つ。
2、技術のある人間がAAを提供して盛り上げる。
   感動を

377 名前:≠゚て人が集まってくる。
3、オリジナルAAを書ける人間が乗ってきてさらに盛り上げる。最盛期。
4、盛り上がりに乗じて何も書けない魯鈍と白痴が寄ってきてスポイルする。  ←いまここ
   彼らの無駄な愛着が逆効果を及ぼし、スレッドのレベルが著しく低下。
5、飽きて大勢が去っていき、行き場の無い魯鈍と白痴が残される。
   低レベルな自慢・偏見の陳列、煽りあい、無駄な罵倒、
   いわゆる「2ちゃんねる用語」を多用したお寒いレス等々が並ぶ。
6、煽りと罵倒しか出来ない魯鈍まで魯鈍同士の空疎な煽りあいに飽きて去る。
7、何も提供できない白痴が過去の栄光の日々を夢見て空ageを繰り返す。
   脳死状態
[]
[ここ壊れてます]



378 名前:デフォルトの名無しさん [2025/04/20(日) 16:48:37.48 ID:R2iq2iGJ.net]
7だろ

379 名前:デフォルトの名無しさん [2025/04/20(日) 18:35:19.98 ID:Ub0nEPUR.net]
>>374
5〜7のいずれかの段階じゃないですか?
客観性を失いましたか?

380 名前:デフォルトの名無しさん [2025/04/21(月) 12:00:00.65 ID:5S3aJeqO.net]
話題が無いね…

381 名前:デフォルトの名無しさん mailto:sage [2025/04/21(月) 12:43:40.09 ID:H+gaTqgY.net]
Ecxelビバ!
Chatガパチョ!

382 名前:デフォルトの名無しさん mailto:sage [2025/04/21(月) 12:45:10.43 ID:hGZB/ZtD.net]
書籍なら、高橋宣成『パーフェクトExcel VBA』辺りが今でもお勧め? 
沢内晴彦『Excel VBA実戦のための技術』は昔買って読んで、内容は良かったと思うんだけど、著者の押し付けがましい語り口に辟易した記憶がある。各章冒頭のダイアログとかもうね。

383 名前:デフォルトの名無しさん mailto:sage [2025/04/21(月) 15:42:19.79 ID:TqAnAlAX.net]
今ならAIに頼んで自分に合ったものを書いてもらうのがお勧め

384 名前:デフォルトの名無しさん [2025/04/21(月) 18:50:43.50 ID:kvlDxPZn.net]
自分にあう書籍を書いてもらおう

385 名前:デフォルトの名無しさん [2025/04/21(月) 22:52:35.16 ID:TKKNFS+v.net]
初心者向けに実用的なコードを教えます!みたいな内容では無くて、もっとそもそも論を書いたシステム開発みたいな内容の本はないでしょうか?

386 名前:デフォルトの名無しさん [2025/04/21(月) 23:50:35.29 ID:DImNR5cR.net]
あるょ

387 名前:デフォルトの名無しさん [2025/04/21(月) 23:56:59.82 ID:TKKNFS+v.net]
VBAで差し込み印刷をする時の正解は結局なんでしょうか?
Excelで文章の様式、フォーマットがあって、それぞれのセルに行の値を代入して連続印刷する感じです。



388 名前:デフォルトの名無しさん [2025/04/22(火) 01:09:34.39 ID:ujoEa+wb.net]
ある行に設定したらその値が各セルに表示されるようにしたらどうだろ

389 名前:デフォルトの名無しさん mailto:sage [2025/04/22(火) 05:15:10.29 ID:UGfRV5Rp.net]
その場合はそれぞれのセルに行の値を代入して連続印刷するのが正解

390 名前:デフォルトの名無しさん [2025/04/22(火) 12:17:33.64 ID:qo6ZtztY.net]
ユーザーフォームで入力画面つくるのがわかりやすい

391 名前:デフォルトの名無しさん mailto:sage [2025/04/22(火) 12:30:17.80 ID:S18G88V1.net]
>>382
さすがにVBAにそれを求めるのはお門違い
そもそも自称VBAプロでプログラミングの基礎がまともにある奴の方が少ないんだから、事実としてそんなもんVBAには必要ないってこと

392 名前:デフォルトの名無しさん [2025/04/22(火) 14:16:52.96 ID:ujoEa+wb.net]
>>382
業務ならコーディング基準はあった方がいいだろね
個人用でも一部有用なのはあると思うよ

393 名前:デフォルトの名無しさん [2025/04/22(火) 14:57:52.39 ID:z9I6mhsO.net]
Access使え

394 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 00:18:58.61 ID:Bj1O/t/P.net]
大体よ、いつからLetを省略する書き方になったんだよ?? 昔はValueプロパティすら省略なんてご法度だったし。

395 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 00:19:15.68 ID:Bj1O/t/P.net]
大体よ、いつからLetを省略する書き方になったんだよ?? 昔はValueプロパティすら省略なんてご法度だったし。

396 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 00:19:27.56 ID:DmG1qyy4.net]
大体よ、いつからLetを省略する書き方になったんだよ?? 昔はValueプロパティすら省略なんてご法度だったし。

397 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 00:20:10.60 ID:Bj1O/t/P.net]
大体よ、いつからLetを省略する書き方になったんだよ?? 昔はValueプロパティすら省略なんてご法度だったし。



398 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 01:50:51.14 ID:Ho3rM8lk.net]
letは省略しても何ひとつ変わらないから書くだけ無駄

399 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 02:15:05.21 ID:gJbY6K2J.net]
N-BASICの時代からLETなんて書くヤツはいなかった

400 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 02:34:24.48 ID:Bj1O/t/P.net]
あれ?何故連投になってるんだろ?

401 名前:デフォルトの名無しさん [2025/04/23(水) 05:26:38.28 ID:pTAtgk9D.net]
>>388
自称VBAプロでプログラミングの基礎がまともにある奴の方が少ないんだからこそそう言う本が読みたいのですが?
VBAのコーディングでもより効率的に素早くコーディングするための方法が知りたいです
例えばコードブロックはメモ帳なりなんなりであらかじめ用意しておいて繰り返し流用するとか、ユーザー辞書にメソッドやプロパティを登録して入力を楽にするとか
少しでもノーコードに近づけるテクニックが知りたい

402 名前:デフォルトの名無しさん [2025/04/23(水) 05:33:09.52 ID:pTAtgk9D.net]
>>386
今は転記元セルのアドレス列と転記先アドレス列の対応リストを作成して、range(セルの値).value = range(セルの値).value みたいな事をして転記しています
後から知ったのはreplace(転記先文字列,転記先文字列,差込文字列)ですね

403 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 06:36:06.92 ID:curLR6rF.net]
よく使うコード片をコピペ用にストックしておくとかは、システム開発のそもそも論とはちょっと方向性が違う気がする。

404 名前:デフォルトの名無しさん [2025/04/23(水) 06:51:21.87 ID:rRnnFJi1.net]
金出して買った本にそんな事書いてあったらゲンナリするわな

405 名前:デフォルトの名無しさん [2025/04/23(水) 07:29:09.67 ID:Y1IHhqLd.net]
よく使うならライブラリとか関数とかで既存処理を使い回せばいい
必要のないコードを書くのは逆に無駄だろう

406 名前:デフォルトの名無しさん [2025/04/23(水) 07:31:04.25 ID:Y1IHhqLd.net]
インポート、エクスポートのことか?

407 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 07:34:29.45 ID:8e00UwyI.net]
>>390
Accessは開発終わるからもう新しくなることないもんな



408 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 08:04:22.51 ID:xgsAirMR.net]
>>398
繰り返し流用するようなコードやブロックは、
それこそ標準モジュールやクラスモジュールにするでしょ
ユーザー辞書にプロパティやメソッドを追加?
VBE上のctrl+spaceで大体のことは解決するだろ
目指してる方向が正に自称VBAプロ、明後日向いてるよ

409 名前:デフォルトの名無しさん [2025/04/23(水) 08:10:30.40 ID:pTAtgk9D.net]
>>405
ショートカットキー
知らなかったです

つい最近複数行選択からのタブで一括インテンドができると知りました

一括でインテンドを減らす方法ないですか?

410 名前:デフォルトの名無しさん [2025/04/23(水) 08:12:10.74 ID:pTAtgk9D.net]
>>402
ライブラリという名前はよく聞くのですがなんでしょうか?
アドオンに登録すればいいという事も聞くのですが、アドオンだと配布がいくらか面倒になるのが悲しいです

411 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 08:19:48.48 ID:xgsAirMR.net]
>>406
Is the intended word an indentation?
インデントを減らすにはshift+tab
本より先にヘルプファイルを読もう

412 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 08:31:17.24 ID:curLR6rF.net]
ライブラリというのは、ざっくり言えば汎用的に使う目的で作られたクラスとか関数とかを集めたモジュール等のことだけど、正直言って、ライブラリを使ったり作ったりという辺りから、わざわざVBAでやらなくてもいいかなぁとなることが少なからずあるような気がする。

413 名前:デフォルトの名無しさん [2025/04/23(水) 08:32:23.99 ID:pTAtgk9D.net]
本格的なシステム開発の手法を勉強しなくてもできる、じゃなくて我流Excel、我流VBAが属人化の原因で、属人化が嫌われているんだから、本物の手法を学んで少しでも標準化に努めた方がいいと思う

414 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 09:19:54.75 ID:P67C9oqU.net]
そういうことを言い出したらVBAは使うべきではないという結論にしかならないからナンセンス
VBAなんか雰囲気でいいんだよ雰囲気で

415 名前:デフォルトの名無しさん [2025/04/23(水) 09:24:11.20 ID:yoO2Q6CW.net]
VBAで描くとどうせ属人化するんだからVBAじゃなくてPythonの方が描きやすい罠

416 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 10:07:14.33 ID:Rdf0901h.net]
VBAが属人化の弊を指摘されやすいのは、VBAの強みの裏返しだからなぁ。Excelは大抵の業務用PCに入っているからプログラミング言語として最もアクセスしやすいというのがVBAの強みだけど、これは裏返せば@相対的にスキルの低い人がコードを書き、Aそのコードが業務に使われるという状況を生みやすくする原因となっている。これにB会社側が追加的なコストを掛けるつもりがないという条件が加わったのがいわゆる属人化。乱暴に言えば、素人が作ったコードが業務に使われていて、タダだからそのまま使い回したいという会社側の助平心に過ぎない。
会社がそれなりのコストを掛けて業務に使うコードを開発するのならVBAと同じような意味での属人化というのは基本的に起きないのよ。そもそもそういう場合にVBAが開発言語に選ばれる可能性は低いだろうし(Excelだけで完結させたいという状況はもあるだろうからゼロとは言わないけれど)。

417 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 10:13:34.84 ID:Rdf0901h.net]
408が一瞬分からなくて焦ったけど、unindentationか



418 名前:デフォルトの名無しさん [2025/04/23(水) 10:19:50.71 ID:j86zZac8.net]
あなたのよく使うコードと私のよく使うコードが違うからな
自分で使い回しやすいようにまとめたらいい

419 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 11:24:31.44 ID:nS6nWMWO.net]
食人族の話題が活発だなと空目した

420 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 11:32:10.92 ID:FBWMxycZ.net]
結局、個人が自分の担当業務を勝手にVBAで局所最適化している構図なので、VBA自体がいかにわかりやすく書かれてようが定義上属人的なんだよね
人力で愚直にやる分にはやってることが周りの目にも見えやすいから、特定の個人の作業負荷が高かったり過大な責任を担っていたりしたら、
適宜マニュアル化して分担するような対応を取りやすい
一方、ヘタに担当者の「創意工夫」によって効率化されてるとそういった潜在的な課題が表面化しづらく、いざ担当者が離任するとなったときに一気に問題が噴出するわけだ
こういう問題に対するシステム的な正道のアプローチは決まっていて、勝手に創意工夫させしない、現状が非効率であるという事実だけを然るべき場所へ報告させる、
その上で、必要な改善はトップダウンで実施する、という極めてアメリカ的なやり方になる
こんなのはカイゼンを美徳とする日本人には無理な話だから、難しいこと考えないで存分にVBAで好きなように創意工夫したらいいよ

421 名前:デフォルトの名無しさん [2025/04/23(水) 13:49:06.15 ID:jU97Lp8p.net]
VBA共通モジュールやEXCEL共通モジュール、ACCESS共通モジュールは分けて作っといたらいい

422 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 16:59:43.12 ID:aZ5FmP34.net]
個人が勝手に自動化させてる環境なんて、社員10〜20人程度の規模の企業だろ
そんなトコは将来何に躓こうがどうでもいいハナシでは?
その規模でもきちんと社内で話し合って最適解を求めてる所なら属人化なんて杞憂にしか過ぎないような

423 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 17:21:41.74 ID:P67C9oqU.net]
大企業でも普通にあるぞ
完全にマニュアル通りに手を動かす人員を別にすれば、
大企業だろうと適切なアウトプットだけ出せればやり方については個人の裁量に委ねられている業務の範囲ってのはある

424 名前:デフォルトの名無しさん [2025/04/23(水) 18:06:06.77 ID:yoCsfqhD.net]
組織内のルールならその枠内で守ればいいのである
そのルールがよその組織でも当てはまるとは限らんのでな

425 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 20:15:32.24 ID:6pqdvTOr.net]
大企業で属人化されてても困ることは無いだろうから
やっぱり属人化をつべこべ言って

426 名前:トも始まらないのでは?
属人化された業務・作業なんか別の者がまた新たに属人化しようとも
業務に支障が出ないんだろ? じゃあ、属人化が何だってんだ
属人化言いたいだけちゃうんか、と
[]
[ここ壊れてます]

427 名前:デフォルトの名無しさん [2025/04/23(水) 20:59:10.18 ID:pTAtgk9D.net]
やっとディクショナリーにテーブル名と列名でキーを登録して、アイテムにListColumns(index).Databodyrangeで各列のデータ行が登録できて、dictionary(テーブル名列名).Rows(index).valueで値を書き込めるって知ったよ
これでテーブルをいちいち変数に代入する事から開放されるし、わかりやすい文字列で指定もできる

Range(テーブル名[列名])でいいじゃんって言われたらそれまでだけど



428 名前:デフォルトの名無しさん [2025/04/23(水) 21:23:04.79 ID:rRnnFJi1.net]
同形式のテーブルが大量にあるのなら
まずそれがおかしい

429 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 21:26:55.40 ID:Rdf0901h.net]
属人化っているのは、要するに会社から見て素性の分からないコードに会社の業務が依存している状態なわけ。大企業なら属人化が生じても困らないとか、業務に支障が出ないということでは全然なくて、大企業でも(普通はおよs考えにくいことだが)万一、属人化が生じたら当然困るよ。ただ、大企業は通常そんなリスキーなことはしない、させないような組織になっているというだけ。
大企業のコア業務の一部が素人の書いたVBAコードに依存していて、他の人が手を出せないブラックボックスになっているとか(論理的には絶対に起こり得ないというわけではないけれど)考えにくいでしょ?

430 名前:デフォルトの名無しさん [2025/04/23(水) 21:42:20.56 ID:jOg2yMv5.net]
メーカーの間接部門だけどVBAは改善提案やQC活動と相性が良すぎる
あと依頼者からのユーザーフォームの人気は異常

431 名前:デフォルトの名無しさん [2025/04/23(水) 22:06:24.94 ID:pTAtgk9D.net]
>>424
だってテーブルの列名で指定したり、動的に処理するのが非常に楽なんだもの
ws.cells(rows.count,index).end(xlup).rowとか
ws.cells(i,index).valueとか
いちいちやってらんない
私がまだまだ技量不足なだけですが

432 名前:デフォルトの名無しさん [2025/04/23(水) 22:15:43.12 ID:pTAtgk9D.net]
IT企業や大企業に夢見すぎだと思いますよ
IT企業だって社員は打ち合わせ、打ち合わせ、打ち合わせか、コーディングしているかで、事務作業の為の業務システムの導入なんてしていないし、パソコンに詳しいからこそExcelはなんでも出来ちゃう事を知っている。
非IT企業はまるで知識が知識がないし、業務システムを導入しても、自社の業務、求めているデータに対応していないから結局Excelに戻るという事もある。

433 名前:デフォルトの名無しさん [2025/04/23(水) 23:03:29.52 ID:pTAtgk9D.net]
人間関係、人付き合いはとてもドライだし、自分で努力してね、自己責任、な世界です

434 名前:デフォルトの名無しさん mailto:sage [2025/04/23(水) 23:04:31.48 ID:C26MOp3K.net]
いや、業務システムを導入しているかどうかとか、そういう話ではないんだが。業務なんか別に会社で認められているものなら何でやっても構わないでしょ。
VBAみたいなものの使用を全面的に禁止するか、個人の裁量の範囲内で使うのは認めるかは会社の方針によるが、業務がそのコードに依存するなら会社がハンドリングするし、会社がハンドリングしないならそのコードに業務を依存させることはしない。そういう単純な話ね。
ちなみに「Excelは何でもできる」と素朴に言うけれど、それは何でも無意味にVBAでやりたがる人がよく言う典型的な台詞の一つなので、あまり気軽に言わないほうがいいと思う。

435 名前:デフォルトの名無しさん [2025/04/23(水) 23:14:03.52 ID:x5rMH1z1.net]
長文書き込みを繰り返している頭がおかしいのが出没してるのは暖かくなったから?

436 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 07:36:15.53 ID:FQ8MlmAt.net]
今年の新人や後輩が言うこと聞かなくてイライラしているんじゃね
Excelはただの道具だよ、会社に迷惑をかけた場合の責任は、担当者と監督している上司の責任ってだけだから

437 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 08:05:36.45 ID:Cj39D1EW.net]
たかが数行十数行読み解けないじぶんを省みた方がいい
長文ってだけに文句付ける奴の方がどうかしてる
気心知れたとか同じ立ち位置に居るとか同士なら少ない言葉で通じるかも知らんが
今や登場人物も幅広い 参加する方々のレベルだって自ずと雑多に成ろうってもん
三でやり取りできる相手だけじゃ無く七語った方が意が通じるケースのが多い
いまどき、長文はあたまおかしい、と書く方こそがアタマおかしいと気付けないと



438 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 08:40:44.27 ID:BUdDOmv5.net]
>>433
読んだ上で言う
文章をまとめられるスキルが無い自身も恥じた方が良い

439 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 09:00:57.54 ID:YvggNev5.net]
>>427
コレクションに格納するんだから要素に画一的な処理をするのだろうと勝手に勘違いしていました
余計なお世話でした
申し訳ありません

440 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 09:33:11.41 ID:IyU3bUgg.net]
ChatGPTに文章校正してもらうと良いよ

441 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 12:38:29.59 ID:Cj39D1EW.net]
w 要らんな 文章書くことが目的じゃあ無いからな 意が伝わりゃあそれでいい
どだい、ブラックボックスではないアプリなど無い
都合のいいExcelをより便利に使うためのマクロだのVBAだのなんだから、個人が
「こうしたらもっと便利だな」で造り上げた小アプリだと思ってれば憎しみも湧かん
業務上なら尚の事、元のデータが存在していてそれを加工して成果物として出力、の一環なんだろ?
これはこうしてこう集計・抽出してこういう形式でまつめろ てのが命題なんだから
退職されてVBAの中身が判らん!とか文句付けてる間にじぶんで新たに作り直せ、と
作れる人間が不在なら諦めて以前の方式でチマチマ手でその処理をし続けろ、と

個々の企業の事務業務で独自にカスタマイズできる利便性を捨ててしまったら元の木阿弥
属人だの何だの言い出した奴は、Excelにがんばって欲しくない界隈の連中の戯言でしかない
ラクトアイスが体に悪いだのネ○ソフトはマーガリンじゃ無いから口にするな、とかの連中みたいなもん
(お食事時なのでつい食品で例えました)
じぶんトコの業務アプリに自信があるならVBAの属人性なんかを口実に叩くのはやめて
堂々と「ウチの製品のがこんなに便利ですよ」と言い募ればいい 本当に便利なら自ずとそちらに流れる

442 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 13:07:35.16 ID:BUdDOmv5.net]
>>437
馬鹿だから文章をまとめられず、
それ故に読まれない責任を相手に押しつけるタイプだな
二行目はOSSがあるって反例により破綻
命題の使い方もおかしい
何か言ってるようで何も言ってない典型的な馬鹿
黙ってることすらできないのが馬鹿の馬鹿たる所以

443 名前:デフォルトの名無しさん [2025/04/24(木) 13:42:20.52 ID:ndm7u60W.net]
「Excelは何でもできる気がする」
中学生日記

444 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 14:17:57.47 ID:IKFgVNqa.net]
437を擁護するわけではないが、実際、担当者個人の裁量の範囲内で使っているだけなら、会社の業務が依存したり属人化の弊害が生じたりすることはあまりないんだよ。
にも拘らずVBAを全面的に禁止する会社が少なくないのは、部署内の他の人間も同じコードを使うようになったりする事態がたびたび起こりがちだからなんだろうね。

445 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 14:27:23.83 ID:d0sUSPt9.net]
>>439
わかる気がする、仲間だもんな
仲間、仲間、なーかーま

446 名前: []
[ここ壊れてます]

447 名前:デフォルトの名無しさん [2025/04/24(木) 16:13:34.27 ID:jkAUiXuj.net]
長文をこんなところに大量に書き散らすだけあって馬鹿の極みそのもの
そもそも働いたことがあるのかね



448 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 17:18:18.39 ID:Cj39D1EW.net]
会話が通じないなら、いちいちアンカ打ってまで絡んで来ンなよw 気色悪いなあ
ハナシが通じない残りの三割ってことでいいぢゃねーか
電車で隣の会話にいちいち割り込んで「正確な会話をしろ」とかイチャモン付けるタイプか?
文章文章って、国語の教員か? おてがみやり取りしてる訳じゃねーぞw 宿題でもねーし

OSSガー 突飛な例えで何が言いたいんだか あんたの会社はOSSで業務アプリ組んでンのか?
枝葉末節にこだわって本質を把握できない、つか、しようともせず、他人の揚げ足取りだけに注力して
勝ち誇ったような気分になってご満悦 どっかのバカな芸人がそういう話芸で人気を博して有頂天に成ったはいいが
今や誰からもどこからもお声も掛からない憐れな人生歩んでるようだが、ソッチへ寄り添った生き方目指してンのか?

449 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 17:31:20.41 ID:Xkh5MdoU.net]
>>440
大昔のVBAマルウェア「メリッサ」で痛い目に遭い禁止して、
それを見直すこともなく踏襲し続けてるところが全面禁止にしてる

450 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 17:51:26.09 ID:IKFgVNqa.net]
>>444
もちろんセキュリティ上の理由は大きいだろうね。見直すこともなくというより、そういう会社はVBAの有用性をさほど高く評価していない(少なくともリスクを上回るほどの有用性があるとは考えていない)から全面禁止にしているんだと思うよ。
経営判断としてはあり得る考え方の1つだとは思う。

451 名前:デフォルトの名無しさん [2025/04/24(木) 19:41:44.24 ID:9Ww3k6uP.net]
誰にでも簡単に扱えて不具合もバグもない業務用ソフトと言うのはできる事を制限している業務用ソフトしか無いと思う
入力出来る事、場所に制限をかけているから誰がやっても出鱈目なデータにもバグにもならない
逆にExcelは本当になんでも出来るから壊すし、壊れるし、出鱈目なデータも入力する

452 名前:デフォルトの名無しさん [2025/04/24(木) 20:09:51.89 ID:DzE0RqCV.net]
VBAで関数の値が入った配列を作りたいのだが、
e = [{1,0;0,1}]
r = [{Cos(1),-sin(1);sin(1),cos(1)}]

eは2x2の配列になる。
rはエラーになる。
ああいう配列作れないかな?

453 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 20:49:12.55 ID:Xkh5MdoU.net]
array関数使え

454 名前:デフォルトの名無しさん [2025/04/24(木) 20:49:52.86 ID:9Ww3k6uP.net]
>>447
どう言う配列でしょうか?
関数の計算結果が入った1次配列でしょうか?

455 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 21:45:53.65 ID:pk6Uyn00.net]
話題かわるけど、exce.live使ったことあるやついる? 今日、お客さんから聞かれたんだけど、本家以外の情報が皆無で。マイクロソフト公式からダウンロードできるから、怪しくはないと思う、とだけ言っておいた

456 名前:デフォルトの名無しさん [2025/04/24(木) 22:02:59.97 ID:xYJ9bO0b.net]
>>443 Forbidden

457 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 22:06:30.71 ID:hG5Dm3ai.net]
>>450
話題どころかスレ違い



458 名前:デフォルトの名無しさん [2025/04/24(木) 22:26:01.96 ID:9Ww3k6uP.net]
Static ステートメントとか、ParamArrayとか、まだまだ知らない事だらけだなぁ

459 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 22:34:31.26 ID:pk6Uyn00.net]
vbaの質問だからここかと思ったけど、違うのか

460 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 22:40:35.14 ID:y97YKOAy.net]
>>454
VBAじゃないけど何を見てVBAだと思ったのか

461 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 22:43:45.46 ID:pk6Uyn00.net]
元々はインターネ

462 名前:ットから自作vba関数を呼べるか?というお客さんの質問から、それにたどり着いたんだけど、スレ違いならまあいいや。誘導先あればよろ []
[ここ壊れてます]

463 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 22:48:56.22 ID:pk6Uyn00.net]
それかvbaのコードで代替手段があれば、それを教えて貰うほうが嬉しいが

464 名前:デフォルトの名無しさん [2025/04/24(木) 23:34:51.71 ID:9Ww3k6uP.net]
>>456
Power Automateからデスクトップ版Power Automateのフローを実行して、マクロブックを開いてマクロ実行

465 名前:デフォルトの名無しさん mailto:sage [2025/04/24(木) 23:40:15.35 ID:d0sUSPt9.net]
https://i.imgur.com/MH2glZF.png

466 名前:デフォルトの名無しさん [2025/04/25(金) 06:34:58.46 ID:dnInGKcO.net]
自分の業務を少しでも助けるためのマクロを書いてたのだが、
そろそろoffice script に移行しようとしてつまづきまくり

467 名前:デフォルトの名無しさん [2025/04/25(金) 07:29:28.50 ID:/g0CbH00.net]
vbaのフォームが古臭くて嫌なんだけど



468 名前:デフォルトの名無しさん mailto:sage [2025/04/25(金) 09:31:20.86 ID:TZkMTXnM.net]
ラベルとテキストボックス駆使して自作できるよ
何なら図形とか画像とか貼り付けて工夫してもいいし
それらをクリックすることで別の動作させるとかも
ま、センス無いとずっと使い続けても飽きないフォーム作るのは大変だし
やっぱ奇抜過ぎて評判悪くてオーソドックスに立ち返るなんて経験もいいのかも

469 名前:デフォルトの名無しさん mailto:sage [2025/04/25(金) 10:00:05.67 ID:CvA5DtPe.net]
モダンUIに寄せたい気持ちはわかる
今時Windows2000かよ!みたいなダイアログが出てくると驚く

470 名前:デフォルトの名無しさん [2025/04/25(金) 15:12:56.80 ID:25bmG4NH.net]
細部にこだわるか、正常に動けば良いのかは人によるだろうな
もっと優先してやることはないのか?

471 名前:デフォルトの名無しさん mailto:sage [2025/04/25(金) 19:40:58.08 ID:orbf6qCm.net]
VBAと同じくらい簡単でモダンっぽいUIにしたい場合って、今は何を使うのがいいのかな。Pythonのfletなんかはかなり簡単っぽいが。

472 名前:デフォルトの名無しさん mailto:sage [2025/04/25(金) 19:49:49.85 ID:ScCl4KIR.net]
VisualStudioでVB.NETやろ

473 名前:デフォルトの名無しさん mailto:sage [2025/04/25(金) 19:56:48.42 ID:DbDcSEbW.net]
ノーコード/ローコードでいいだろ
MS365の契約あるならPowerAppsから試してみたら

474 名前:デフォルトの名無しさん mailto:sage [2025/04/25(金) 21:21:31.07 ID:235iTcZf.net]
fletはたいしたことしないならさくっと作れて良い

475 名前:デフォルトの名無しさん [2025/04/26(土) 09:23:31.77 ID:hSaHsy30.net]
VBAは簡単、プログラミング言語ですらない

VBAは属人化する、しやすい

見事な矛盾だね

476 名前:デフォルトの名無しさん mailto:sage [2025/04/26(土) 09:50:16.77 ID:kN9FmZ13.net]
>>413にあるとおりだよ。コードを書く人間にきちんとしたスキルがあり、会社側にまともな管理体制があれば、基本的に属人化の問題というのは生じない。VBAは構造的にどちらの条件も欠きがちだから、属人化の問題が指摘されやすい。それだけの話。

477 名前:デフォルトの名無しさん mailto:sage [2025/04/26(土) 09:58:22.07 ID:iRBbkycD.net]
そう、つまるところバカが使うからバカなものができるってだけの話で、何も矛盾しない
ただ、仕事でバカとかクソとかいう表現は憚られるから「属人化」(=他人が触りたくないクソ)と表現する



478 名前:デフォルトの名無しさん mailto:sage [2025/04/26(土) 11:19:16.93 ID:SDFKeMf3.net]
まだやるのか? やるなら先ずは「属人」てのを定義しろ
それの延長で属人的・属人化って奴を述べろ
若しくは「VBAは属人的だから悪だ」ってサイトのリンク貼るでもいいし
それを踏まえたうえで語らなきゃ、個人の勝手な思い込みを主張してるだけに成り果てて
それこそ「モノホンのバカ」だろ ぼくはバカですって書いてるに等しい

479 名前:デフォルトの名無しさん mailto:sage [2025/04/26(土) 12:23:43.88 ID:B+cR9sp6.net]
自分の意見は>>413、425、430辺りに既に書い

480 名前:たし、自分の意見と必ずしも一致する見解ばかりではないが、「VBA 属人化」で検索すればいくらでもこの話題は出てくるでしょ。
VBA好きな人が属人化の話題を避けたがるのは分かるんだけど、他の言語と比べて属人化の問題を指摘されることが顕著に多いということまで否定しようとするのはさすがにムリがあるよ。属人化が指摘されることが多いというのは、ハードルの低さ・アプローチのしやすさという強みの裏返しなんだけどね。
[]
[ここ壊れてます]

481 名前:デフォルトの名無しさん [2025/04/26(土) 12:44:03.71 ID:aliF/5Yp.net]
異動や退職するときvba消していってほしい。

482 名前:デフォルトの名無しさん [2025/04/26(土) 13:08:06.04 ID:TbcyjxDY.net]
OSから初期化やろ

483 名前:デフォルトの名無しさん mailto:sage [2025/04/26(土) 15:51:46.44 ID:IX/fzv3g.net]
>>473
その理屈だとCでもRustでもPythonでもRubyでも属人化する訳だが
VBAは参入障壁が低い(んだろうと思う)ことが属人化に拍車を掛けてる罠
(要するに馬鹿でも使えるってこと)

484 名前:デフォルトの名無しさん [2025/04/26(土) 16:45:09.66 ID:lLp4rKiB.net]
これに限らず仕事全般に言えるけどセンスが全てだわ
本で知識だけびっしり学んだだけの自称VBA出来ますの作るシステムは使い物にならん
というかシステム組む頭すらないし

485 名前:デフォルトの名無しさん mailto:sage [2025/04/26(土) 17:07:15.54 ID:B+cR9sp6.net]
Rustみたいに書くこと自体が難しいとされているような言語はともかくとして、PytnonやRubyが今のVBAと同じような感じでExcelに組み込まれて、Excelで実行できたとしたら、たぶん今のVBAと同じような感じで属人化の問題を指摘されることになったと思うよ(そこからのリカバリーはVBAより多少はマシかもしれないが)。

486 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 09:59:46.14 ID:HBc7xJ0o.net]
僕はもう書いただの検索しろだのは話をややこしくする元だから定義しろと書いたんだが
今書かれてる「属人化」てのは、有頂天になった社員がVBA駆使して作業を自動化したはいいが
そいつが退職したら他の誰もがそのメンテ出来なく成って業務大混乱右往左往 てコトでいいのか?

じゃあさ、他の例えで、自動車免許持ってる奴が仕事で車使って仕入だ配達だに奔走してくれてた
しかし、そいつが辞めて他の社員は免許持ってる奴が誰一人居なくて業務に支障が出まくり も属人化か?
そン時は会社としてはどう対応したらいいんだ?
自転車に積んで何十回も往復するなり、外注下請けに作業を委託するなり、免許持ってる奴を募集したり
どうとでも好きな方法選べるだろ?
それを殊更「属人化」とか特殊な事例として言い募る界隈には、どんな思惑があるんだ?
VBA憎し君が広めてるとしか思えんのだが

それとも「VBAの属人化」には何か他の意味があるのか?

487 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 10:51:58.45 ID:PEcsUA/t.net]
話をややこしくするじゃなくて、VBAは属人化の問題を指摘されることが多いということを認めたくなくて必死なだけでしょ。
君が挙げた例は、世間でVBAによる属人化の弊害として一般的にいわれている状況と、結果こそ類似するが原因がまったく異なる。
したがって、VBAについて指摘されることの多い属人化と同様の原因に基づくものを「属人化(の弊害)」と呼ぶことにするのであれば、君が挙げた例は「属人化(の弊害)」ではない。

自動車の運転は、運転免許制度によってそれをする人のスキルが保証されているでしょ(VBAと違って)。
また、自動車の運転は、腕の足りない人間がその方法を勝手にカスタマイズしたりすることもできないでしょ(VBAと違って)。
自動車の運転が業務上必要不可欠で業務がそれに依存しているなら、そのことは外形上会社側に明らかだから、会社側はハンドリングの機会も保証されているわけ(VBAと違って)。
大体さ、VBAと違って自動車の運転一般について「属人化(の弊害)」が語られることなんてほとんどないでしょ。その時点で自分の強弁にムリがあると気付かんか?

VBAが属人化の問題を指摘されることが多いということを認めたくなくて色々と



488 名前:言い募るのはいいんだけどさ、説得力のないことを書けば書くほど「VBAに強い拘りを持つ人って、やっぱりそういうレベルなんだな」という見方を補強することになりかねないよ。
「VBAはExcelユーザーに最も近い親しみやすい言語、属人化をいわれることが多いのはその代償」ってことで良いじゃない。
[]
[ここ壊れてます]

489 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 10:57:39.63 ID:bnOAlujA.net]
>>479
運転とプログラマーじゃ、代わりを探す労力に差がありすぎる

免許持ちもVBAが書けるやつもいくらでもいるが、他人の書いたプログラムを解読して修正できるやつってのはちょっとレア
しかも、多くの経営者はこれが特殊スキルと思ってないからそんなとこにコストをかけたくないってのが本音
だから問題になる

490 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 11:08:15.27 ID:aTGSLIj0.net]
NGワードに属人化を入れることでスッキリさせることに成功

491 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 11:08:56.65 ID:RSOujG5D.net]
いやいや、スキル的にできる奴は山ほどいる
問題は、やりたい奴が極めて少ないという点だ
まともなプログラミングスキルがあるならもっと面白くてスキルアップできる仕事が山ほどあるのに、安い賃金で誰にも評価されずスキルアップにも繋がらない便所掃除をやりたがる奴はいない

492 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 11:27:31.76 ID:aTGSLIj0.net]
ちなみに個人事業主やってて、
どこぞのVBAで抜き差しならなくなったものを書き直して仕様書と併せて納品
あるいはPythonに移植して仕様書と併せて納品してるけど、
おまいらの想像以上に良い金になる
濡れ手に粟

493 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 11:43:54.54 ID:PEcsUA/t.net]
会社側もよほど切羽詰まっていたんだろうねえ。
大局的に見れば抑えられたはずのコストだろうけど、484みたいにそれで儲かっている人が居るならそれはそれで良い話だ。

494 名前:デフォルトの名無しさん [2025/04/27(日) 14:49:25.30 ID:rRExk4WB.net]
運転でもうまいやつとへたなやつがいるだろう
VBA使いにはプログラミングやシステム設計がへたなやつが多いということ

495 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 15:15:18.84 ID:0hsNeEWH.net]
適当にかじって自分用に作ってるからな

496 名前:デフォルトの名無しさん [2025/04/27(日) 16:07:51.42 ID:SWrT9XSV.net]
逆引き大全買っちゃった

497 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 16:31:38.91 ID:HBc7xJ0o.net]
君が挙げた例は「属人化(の弊害)」ではない。 だから、定義しろっつってんの
じゃあ、どういうのがVBAの弊害と世間一般では言われてんだよ?って聞いてんの
コッチが例え話すりゃあ「それはちがう」 単なる例え話だぞ? 免許が特殊な技術的国家資格とかでもいい

ウエが阿呆だから現場でそんなてんやわんやが発生すると書いた人が居るけど、その通りの事を言ってるんだ
上長がしっかりして、そういった個人技術を全体に普及・波及する努力をしてりゃあ、誰が抜けたところで
即座に困る事なんかほぼほぼ無いんだ 鼻くそ丸めながら「なんか知らんが勝手な事してる奴が居るなあ」
でのほほんとしてるから、いざ退職されてから困り果てる
そんな会社は潰れたって構いやしないだろうに
それが例えば従業員数百人規模の会社だろうとだ ま、数千人規模でもおんなじだけど

ご利益にも繋がらないような「VBAは属人的」なんてぇお題目唱えてるだけで、何らの解決策も講じないような
スカポンタンな集団が蔓延るのが鬱陶しいんだ 六根清浄と唱えてる方がまだご利益ありそうだろ 違うか?
なんか知らんがその辺に転がってる耳触りだけはいいビジネスワードを、これ見よがしに口真似して
その本質を見ようともしないで得意満面な奴は、ぶっ飛



498 名前:ホしたくなるってだけ
ひと頃流行った「悩ましいですねえ」とかと一緒 (一生悩んでろ、ボケ)と罵ってるようなもの
「一旦社内で揉んでみます」とかなら、まぁまだ分かるが
[]
[ここ壊れてます]

499 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 16:39:50.30 ID:HBc7xJ0o.net]
VBAは属人的 とはつまり、事務業務に根本的な問題がある企業のくせに
責任を末端に押し付けるブラック体質だと、自ら公言してるに等しい阿呆責任者の言い逃れに過ぎない

500 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 17:10:22.95 ID:9974j3MB.net]
属人化って要するに担当者が意地悪してるだけやん?
使い方をちゃんと教えてくれて、ソースもパスワードかけずに公開してたら読めるヤツは読むぞ
コピペしか能のない奴には他人のソースが読解できないってだけの話やら?

501 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 17:19:04.92 ID:oHyIRNV3.net]
多くの場合、VBAは大したことやってないのに担当者のスプログラミングスキルの低さ故に無駄に複雑かつ保守性の低いものになっており、
後から他人が読み解いてメンテを継続するのは非常にコスパが悪いケースが多い
コスパ的には多くの場合において棄てて仕切り直した方がマシなのだが、とはいえ中途半端に自動化されているため、いざ棄てると一時的にそれなりの業務効率の低下が生じる
その業務効率の低下量をVBAにおける「属人性」と定義するのがよろしい

502 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 17:39:11.20 ID:PEcsUA/t.net]
>>489-490
VBAは属人性の問題を指摘されることが多いというのをどうしても否定したいんだね。「VBAに強い拘りを持つ人って、やっぱりそういうレベルなんだな」という印象は強まるばかりだけど。
会社側がきちんと管理できる体制なら属人化の問題は生じないというのは最初から書いているでしょ。だからこそ、VBAの属人化リスクが広く認識されるようになった今では、多くの会社が、VBAを全面的に禁止するなり、個人の裁量の範囲内でのみ許可したりという形で対応しているんだよ。
会社の多くはVBAの属人化リスクを認識して既にその対応をとっているわけで、属人化リスクが高いということ自体を否定したがる君のような議論ははっきり言って周回遅れなんだよ。
君は、「個人技術を全体に普及・波及する努力」というのを唯一のあるべき管理体制として捉えているみたいだけど、残念ながら多くの会社は、素人の書いたVBAコードに対して管理コストを投下するほどの価値を認めていない。だから、「使うな」とか「使ってもいいけど個人で責任のとれる範囲内で」という方針にしているわけ。
ついでにいえば、属人化という言葉には、会社が社員に責任を押し付けるというニュアンスも特にない。VBA はExcel内で書いて実行できるので、質の低いコードがいつの間にか業務に使われているという好ましくない事態が生じる可能性が他の言語と比べて顕著に高い。それで痛い目を見た会社が少なからずあったのでリスクとして認識されるようになったに過ぎない。

503 名前:デフォルトの名無しさん [2025/04/27(日) 19:30:20.87 ID:22nZEpjv.net]
Power Automateで思ったんだけど
一つ一つごとのループブロックごとにそれぞれ別の変数(カウンタやカレントなど)を設定する事によって、変数のスコープを極小にする、
むしろカプセル化の様にループブロックやコードブロックの外からアクセスを受け付けない、という事がこれからの当たり前になるのだろうか。
もはや一つ一つのコードブロックが別々のプロシージャなんだと
人智を超えていても、ソフトウェアがそれを補えるし

504 名前:デフォルトの名無しさん [2025/04/27(日) 19:33:19.45 ID:22nZEpjv.net]
VBAはVBAでも、APIの様な高度な知識が必要なやつはさすがに属人化だと思う(APIはまだやってないだけ、かも知らないけど)
基本的なメソッド、オブジェクトだけだよね

505 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 19:46:24.57 ID:bnOAlujA.net]
一定のスキルがあれば、APIの意味や使い方なんてぐぐればわかる
ドキュメントはみんなネットに公開されてるんだから

506 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 20:34:34.42 ID:RSOujG5D.net]
>>494
そんなもんVBA以外のプログラミング言語は20年以上前から当然にみんな

507 名前:そうなってる []
[ここ壊れてます]



508 名前:デフォルトの名無しさん [2025/04/27(日) 21:56:06.79 ID:22nZEpjv.net]
>>497
じゃあC言語とかでもそうなのですか?

509 名前:デフォルトの名無しさん [2025/04/27(日) 22:00:02.07 ID:22nZEpjv.net]
>>497
いやいや、パッと調べただけでも他言語でも変数の使い回しできてるじゃん
私が言いたいのは一つのループブロックごとに、他の箇所では再利用できない変数一つという事

510 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 22:56:41.73 ID:RSOujG5D.net]
例えばC#のforやforeach文のループ変数はそのループの中だけで有効だが、そういう話か?
C++も大昔のバージョンを除けば同様

511 名前:デフォルトの名無しさん [2025/04/28(月) 01:52:20.30 ID:hDmEwqG0.net]
>>481
>他人の書いたプログラムを解読して修正できるやつ

自分で描いたものでさえろくに保守出来ない香具師の方が大半な現実

512 名前:デフォルトの名無しさん mailto:sage [2025/04/28(月) 10:21:58.00 ID:AuNLagCl.net]
ダイクストラが言う構造化プログラミングはモジュールとか抽象データ型とかも含む広範で抽象的な概念として説明されている。
連接・分岐・反復で構成しようという話はそれより前に発表されたものだが、この時代は構造化もクソもないプログラムがまかり通っていたという前提がある。
まずはその三要素を基礎に据えて構成したらわかりやすくね? という提案 (というか感想?) に過ぎず、それで全て事足りるみたいな主張ではない。
(理論上は連接・分岐・反復で全て表現可能であるという証明はされている。)

構造化プログラミングの考え方のキモは構造は人間の認知の中にあるということ。
人間が思考しているときの構造を書き表すためにどんな言語機能 (またはデザインパターン) があればよいの? ってのが構造化プログラミングの議論なんだよ。
書いた人が思ってる構造が表現されているなら構造化プログラミングだし、構造化プログラミングのために用意された機能を使っていても構造が表れていなければ構造化プログラミングではない。
まあついでに言えば書き表されたものについて (コンパイラも人間も) 検証しやすいことも大事だ。

機械的に goto を除去したらむしろ構造が失われるという例をクヌースが出したりもしていて、結局のところはどんな機能も正しく使えば正しいし、悪い使い方をすれば駄目になるというシンプルな話。
そんなわけで break が構造化を崩すか崩さないかは使い方による。
ただ、常識的に考えて break は goto より構造を破綻させにくいだろうってだけ。

513 名前:デフォルトの名無しさん mailto:sage [2025/04/28(月) 11:10:41.08 ID:6D3yvt7l.net]
どこのスレの誤爆かな?

514 名前:デフォルトの名無しさん [2025/04/28(月) 16:28:52.13 ID:5fRt9Dct.net]
SQLiteのデータベースをODBC経由ADODBで引っ張ってきてるけど、
CopyFromRecordSet で一発で貼るのと 1行1カラムずつ地道に貼るのとで
267件中1件1カラムだけ違う これは何なんだろう

515 名前:デフォルトの名無しさん mailto:sage [2025/04/28(月) 17:32:10.75 ID:L3M/APjY.net]
知らんがな
違うと思ったならチェックしたんだろ?どう違うかを知っているのはお前だけ

516 名前:デフォルトの名無しさん mailto:sage [2025/04/28(月) 19:04:28.97 ID:opVSzI03.net]
>>504
自分で作ったコードを調べて原因を見つける能力がない無能っぷりを白状しているようにしか見えない

517 名前:デフォルトの名無しさん mailto:sage [2025/04/28(月) 19:12:48.88 ID:77Ku1S4P.net]
質問スレなんだし、そんなにきつく当たらなくてもいいんじゃない? もう少しゆるい感じでやっていこうよ。



518 名前:デフォルトの名無しさん [2025/04/28(月) 19:29:47.71 ID:5fRt9Dct.net]
辛辣だなぁw CopyFromRecordSetで貼ったやつの方だけ1箇所違うんだよ
1行、1カラムずつ貼った方は正しい 元データももちろん正しい

lobjが対象テーブルのListObject dbrsがADODBで引いたRecordSet

データが違うパターン
lobj.InsertRowRange.CopyFromRecordset dbrs

正しいパターン
rc = 1
Do Until dbrs.EOF
  For co = 1 To lobj.ListColumns.Count
    lobj.ListRows(rc).Range(co).Value = dbrs.Fields(co - 1).Value
  Next
  rc = rc + 1
  dbrs.MoveNext
Loop

これでどう検証したらいいのよ

519 名前:デフォルトの名無しさん [2025/04/28(月) 19:34:46.10 ID:aApiL0z1.net]
どう違うのかも書かない無能だから

520 名前:デフォルトの名無しさん [2025/04/28(月) 20:16:18.13 ID:Fc2g4rbd.net]
PowerQueryの方がVBA よりも処理が高速なはずだ
と思っていたけど、配列を使えばVBAの方が処理が高速だったよ

521 名前:デフォルトの名無しさん mailto:sage [2025/04/28(月) 22:36:06.18 ID:opVSzI03.net]
>>508
一カ所違うというのは実データがおかしな変換をされているのか?
それとも一方のデータが 多い/少ない と言っているのかな?

522 名前:デフォルトの名無しさん [2025/04/29(火) 00:38:17.02 ID:Cio0Z7DT.net]
>>511
ざっくり例えると、1件ずつ処理すると元データどおり
みかん 150円
バナナ 200円
りんご 250円

となるところがCopyFromRecordSetだと
みかん 150円
みかん 200円
りんご 250円

になる感じかな もちろん今回が初めてのケース

523 名前:デフォルトの名無しさん mailto:sage [2025/04/29(火) 03:39:13.13 ID:uCA5xnZY.net]
>>512
再現性があるか
何番目がおかしいか
一度にコピーする件数を少しずつ減らしたらどうなるか

そういう地道な作業を繰り返して、条件を絞り込み、原因を突き止めていくんだ

524 名前:デフォルトの名無しさん mailto:sage [2025/04/29(火) 05:46:13.95 ID:DUP3Wr3v.net]
重複したデータでなければプログラムに問題がありそうだけどなぁ
ザックリすぎてわっかんねぇなぁ

525 名前:デフォルトの名無しさん [2025/04/29(火) 05:58:53.59 ID:NELjOoG5.net]
質問の間抜けな感じからして凡ミスやな

526 名前:デフォルトの名無しさん mailto:sage [2025/04/29(火) 06:09:56.99 ID:DUP3Wr3v.net]
スゲー適当なんだけど違いが1件ってことはEOFが入ってるとかそんな感じかな?

527 名前:デフォルトの名無しさん [2025/04/29(火) 09:40:01.77 ID:Cio0Z7DT.net]
>>513
同じデータをAccessにインポートして実行→再現せず
SQLiteで検索するデータ量を減らす→再現せず
で、よく見たら256レコード目で検索条件(SQL文)変えても必ず発生することがわかった
SQLite3 ODBC DriverからADODBでデータ取得してCopyFromRecordSetでデータ貼付けすると起こる
データ取得方法は同じでも1レコード1カラムずつデータ貼っていくと起こらない
ダミーデータ作って色々試してみるかな



528 名前:デフォルトの名無しさん [2025/04/29(火) 09:48:33.61 ID:cxg+2T2y.net]
>>517
元データの中に制御文字のようなゴミがあるとか、取得したものを表示する過程でミスっている可能性もある
ダミーで試すか、文字コードをバイナリ値でチェックするとかだな
あと256番目って数値がbyte扱いで0になってないかとか

529 名前:デフォルトの名無しさん mailto:sage [2025/04/29(火) 09:57:59.04 ID:LEbvev28.net]
昔Oracleのバグで1件くらい少ないレコードセット返ってくるバグ思い出した

530 名前:デフォルトの名無しさん [2025/04/29(火) 11:15:10.56 ID:Cio0Z7DT.net]
ダミーでも再現した
SQLite側のフィールドがTEXT型の場合のみ、256レコード目の内容が255レコード目と同じになる
INTEGER方だと起らない

531 名前:デフォルトの名無しさん [2025/04/29(火) 11:17:05.94 ID:Cio0Z7DT.net]
こんな感じ SQLiteに日付型は無いのでTEXT扱い
254 test254 2025/06/11 1253
255 test255 2025/06/12 1254
256 test255 2025/06/12 1255
257 test257 2025/06/14 1256

532 名前:デフォルトの名無しさん [2025/04/29(火) 12:21:37.37 ID:TmvDscRd.net]
属人的と言うなら車間距離だな
ExcelやVBA利用者には車間距離詰める馬鹿が多過ぎる
総じて「だろう運転」ばかりしていて「かもしれない運転」なんて眼中に無い
そもそもMicrosoft開発陣が「だろう運転」を推奨してる節がある

533 名前:デフォルトの名無しさん [2025/04/29(火) 12:25:39.07 ID:Cio0Z7DT.net]
連投失礼、256だけじゃなく512,768,1024も同じ現象だった

534 名前:デフォルトの名無しさん [2025/04/29(火) 13:23:59.14 ID:lJszgH0z.net]
ODBCのバージョンと定義がわかる画面貼っとけ

535 名前:デフォルトの名無しさん [2025/04/29(火) 14:30:57.99 ID:AuvQCcIn.net]
久しぶりに面白そうな話題じゃん
自己解決しちゃっても是非原因教えてね

536 名前:デフォルトの名無しさん [2025/04/29(火) 16:26:16.90 ID:Cio0Z7DT.net]
スクショは貼らないw 64bit
SQLite3 ODBC Driver 1.34455.00.00 Christian Werner Software & Consulting SQLITE3ODBC.DLL 2023/10/23

データ取得と貼り付けは至ってシンプル
Set dbcn = New ADODB.Connection
dbcn.ConnectionString = "DRIVER=SQLite3 ODBC Driver;Database=E:\Temp\testdb.db"
dbcn.Open
Set dbrs = New ADODB.Recordset
dbrs.Open "select * from testtbl", dbcn, adOpenStatic, adLockReadOnly
ThisWorkbook.Sheets("Sheet1").Range("A1").CopyFromRecordset dbrs

537 名前:デフォルトの名無しさん [2025/04/29(火) 16:31:39.01 ID:Mpe85ZPY.net]
>>526
やっと全部情報を出してきた
だから馬鹿とか罵られていたんだよ
ドライバのバージョンを替えてみ



538 名前:デフォルトの名無しさん [2025/04/29(火) 16:37:30.76 ID:Cio0Z7DT.net]
>>525
早速自決w
Set dbrs = New ADODB.Recordset
dbrs.CursorLocation = adUseClient
dbrs.Open "select * from testtbl", dbcn, adOpenStatic, adLockReadOnly
で正常になった お騒がせしました

539 名前:デフォルトの名無しさん mailto:sage [2025/04/29(火) 16:47:03.16 ID:EclpVRbh.net]
ちょうど総合相談スレでも
3時間くらい前に発生した本日の事案への弔辞

> 介錯人は頼んだのかな
> 成仏しろよ

540 名前:デフォルトの名無しさん mailto:sage [2025/04/29(火) 16:58:21.16 ID:EclpVRbh.net]
「自決」の辞書上のもう一つの意味、民族自決主義の「自決」は
「自分の意志で自分のことを決めること」だけど、
くだんの「自決する」の文脈は、意志うんぬんや決めるとかの流れはない。
なので、「問題を自分で解決した」という意味はならなさそう・・・
とマジレスしてみる

541 名前:デフォルトの名無しさん mailto:sage [2025/04/29(火) 20:39:35.35 ID:la4ZcTxc.net]
自分のケツのことかと思った

542 名前:デフォルトの名無しさん [2025/04/29(火) 21:12:16.89 ID:hhMpSOWT.net]
痔になったケツかと思った

543 名前:デフォルトの名無しさん [2025/04/29(火) 22:00:44.14 ID:V3jk1q3e.net]
WinAPIでvisual styleを適用させたい
office2021だとCreateWindowEXで作ればvisual styleになるのにoffice2019だとならない

544 名前:デフォルトの名無しさん [2025/04/29(火) 23:44:21.62 ID:jEUD8QFb.net]
今頃になって列の行ごとの文字列のReplaceは、まず文字列をカンマでもなんでもいいから全部くっつけてひとまとめにして変数に代入して、Replace(文字列,検索文字,"")すれば一括で置き換えられるって理解したよ
そしてSplitで配列に戻して元通り

545 名前:デフォルトの名無しさん [2025/04/30(水) 01:17:17.74 ID:0P1GE/1d.net]
>>533
ComCtl32.DLLにリンクしてないからだと思う

546 名前:デフォルトの名無しさん mailto:sage [2025/04/30(水) 03:14:35.45 ID:IvfkHP7P.net]
>>534
たまたまデリミタと同じ文字(列)がデータにも含まれててExcelのバグだと騒ぐまでがセット

547 名前:デフォルトの名無しさん [2025/04/30(水) 06:29:26.31 ID:7AsrwtYN.net]
>>536
わかるわかる



548 名前:デフォルトの名無しさん [2025/04/30(水) 06:54:36.59 ID:TQaKmIw3.net]
>>534
初級を脱したい奴が考えそうな無駄な技
経験積めば自然に書くのが一番て解るよ

549 名前:デフォルトの名無しさん mailto:sage [2025/04/30(水) 18:11:25.83 ID:/xZzLlpB.net]
Range("A1:C10").Replace What:="置換前の文字", Replacement:="置換後の文字", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False

ってchatgptさんが言ってます

550 名前:デフォルトの名無しさん mailto:sage [2025/04/30(水) 18:39:00.27 ID:3/ALrefg.net]
Replaceメソッドはシートの検索/置換オプションも変更されるから嫌い

551 名前:デフォルトの名無しさん [2025/04/30(水) 19:34:30.68 ID:Ypkgz0ac.net]
>>528
さんきゅ

552 名前:デフォルトの名無しさん mailto:sage [2025/05/01(木) 10:16:05.61 ID:NoOjVvyj.net]
開発では作るだけでなく動作確認、評価、検証をきちんとやるのも大事なのじゃ
わざと異常を出して正しく異常が出るか、桁数やデータが大量だとどうなるかとか、日本語以外の環境でも動くとか
実際に動かして確認すると気づかなかった問題が見えてくるものだ

553 名前:デフォルトの名無しさん mailto:sage [2025/05/01(木) 10:51:14.04 ID:/KCrsMZn.net]
テストが重要なのはもちろんだが、VBAerレベルではそもそもバグが出にくくテストケースを闇雲に増やさなくていい書き方というものも多少は勉強した方がよい
似た処理をいちいちコピペすればその分ミスは増えるし、プログラムに直行性がないとテストケースは無限に増える

554 名前:デフォルトの名無しさん mailto:sage [2025/05/01(木) 11:52:17.40 ID:nTiKCI2R.net]
>プログラムに直行性がないとテストケースは無限に増える

ほんそれ
直交性が無いのは言語の欠陥だと思う

555 名前:デフォルトの名無しさん [2025/05/01(木) 13:39:51.25 ID:yf6hHvtn.net]
x ほんそれ
o 本当にそれ

556 名前:デフォルトの名無しさん mailto:sage [2025/05/01(木) 14:02:16.67 ID:NoOjVvyj.net]
問題ないですとか言ってたのに後になって実は確認してませんでした とか言う新人たまにいる

557 名前:デフォルトの名無しさん [2025/05/01(木) 15:05:48.78 ID:my1nUwSm.net]
VBAで単体テスト、カバレージ100とか聞いたことないわ
あれ?ACCESSの納品物の評価ってどうやってたっけ……(もう忘れた)



558 名前:デフォルトの名無しさん [2025/05/01(木) 23:23:13.02 ID:15supz3z.net]
スレチだけど
やっとPowerQueryの変数宣言、代入、for each、無名(名前付き)関数がわかった。
.Buffer早すぎ

559 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 00:25:17.81 ID:+dCfSpYU.net]
Dim wb As Workbook
Dim pq As WorkbookQuery
Dim ws As Worksheet
Dim i As Long
とか宣言して、wb、wsの変数代入して、
For Each pq In wb.Queries
ws.Cells(i, 1).Value = pq.Name
ws.Cells(i, 2).Value = pq.Formula
i = i + 1
Next pq
とかやると、VBAで各クエリーの名前とM式の中身をワークシートに書き出せるのね

560 名前:デフォルトの名無しさん [2025/05/02(金) 01:50:51.67 ID:TLbUOI0p.net]
>>549
いやん見ないで照

561 名前:デフォルトの名無しさん [2025/05/02(金) 06:41:36.56 ID:TLbUOI0p.net]
前に言っていた、Power Automateみたいにコードブロックを入れたら、作成したコードブロックだけで有効な変数が自動的に作成されて、コードブロックを抜けたら変数が削除される、コードブロックごとに変数が一意、コードブロックがカプセル化、秘匿化されている、もはやコードブロックがサブプロシージャ、ファンクション関数っていうの、関数型プログラミングの事だったんだな

562 名前:549 mailto:sage [2025/05/02(金) 06:43:09.29 ID:+dCfSpYU.net]
そんな、他人を痴漢扱いすなw

いやこれ、一昨日ChatGPTに
「クエリーの依存関係がもっと見やすいツール、何かない?」
って聞いた中で、教わったばかりの一部なんだけど。

需要があるなら、フルでプロシージャを晒すよ?
おのおのChatGPTに聞けばいいんだろうけれど。

ここから親子関係の一覧表を作る、次のプロシージャは
正規表現検出をどう扱うか、相談しながらチューニング中なんだけど。

563 名前:デフォルトの名無しさん [2025/05/02(金) 07:20:32.31 ID:TLbUOI0p.net]
ワイはCopilotにsheet.copyで作成した新規ブックのクエリを削除するにはどうしたらいいですか?
のコードでマクロ実行ブック(コピー元)のクエリも削除された泣

プログラマが型がわからないってマジ?
VBAでtypeっていうともっぱらそのモジュールのみで有効なプロパティ?の事を指すと思うけど

TypeScriptでは静的型付けの様に、バグの無いコードというのは、できる事、やれる事、受け付ける操作を限定する事だと思う。
何でもかんでもできる、受け付けるというのはバグの元だよ。

564 名前:デフォルトの名無しさん [2025/05/02(金) 07:59:38.75 ID:TLbUOI0p.net]
VBAは変数を宣言しなくても変数が使用できるし、Variantは中のデータの型を判断するし、動的型付けだった😫
宣言を強制しているし、型指定もしているからすっかり忘れていた

565 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 08:41:13.69 ID:IByDjNOR.net]
>>549
WorkbookQuery初めて知った
面白そうだな

566 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 09:45:33.14 ID:G++s7sQD.net]
>>551
Power Automateって使ったことないので分からないんだが、多くの言語で一般的ないわゆるブロックスコープとは別物なの?

567 名前:デフォルトの名無しさん [2025/05/02(金) 12:34:26.30 ID:FVfG1Al+.net]
>>556
同じなんだけど、
Power Automateはループ処理のアクションを追加すると自動的にvbaでいう for i の i とか for each 変数 の 変数が自動的に宣言される

vbaで同じ事をしようとするといちいち宣言しなくちゃいけないし、命名のレパートリーも尽きるからやらないし、流用になる

個別に変数を自動的に宣言してしかも管理も把握も一目瞭然だと、これからの時代はそれぞれのアクション、ブロックが一つのオブジェクト、関数みたいになるのがスタンダードで、しかもさらに進化するのかなと思う



568 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 13:08:27.70 ID:i8P7c2SF.net]
だからそんなもん20年前から他の言語では一般的だし、
PowerAutomateって複雑なことやろうとすると共通の変数を複数ステップに渡って弄り回すことになって簡単にVBAの糞コードみたいになるよ
変数のスコープに関する君の考えは一般的には正しいが、残念ながらPower Automateは君が期待しているようなものではない

569 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 13:46:02.65 ID:G++s7sQD.net]
スコープが別なことが分かっていれば、ループ変数は同じ名前の流用でも特に問題は起きないような気もするけれど。まぁでも便利なんだろうね。
ブロックスコープがない言語もそこそこあるような……。Pythonとか昔のJavaScriptとかは、関数スコープはあるけれどブロックスコープはないよね。

570 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 16:53:20.86 ID:nKjy1k/M.net]
ブロックがあればええ

571 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 19:06:46.82 ID:ngu+xaVd.net]
全てグローバル
変数名も文字数制限あり

BASICとはそういうものだ

572 名前:デフォルトの名無しさん [2025/05/02(金) 20:16:54.76 ID:KF55o+fS.net]
変数名といえばおまえら Option Explicitしてるの?
俺はうっかりさんでスペルミスしがちだから外せないけど

573 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 20:38:35.86 ID:sdnBjLxl.net]
しない理由がない

574 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 20:55:10.60 ID:1BRp4bnH.net]
あれ消えないようにして欲しい

575 名前:デフォルトの名無しさん [2025/05/03(土) 05:59:05.73 ID:2+JR0EAo.net]
今更ながらブックオープン 読み取り専用のコードだけを書いたfunction関数を作れば短い文字数でブックを開いて変数に代入できるって気づいたんだけど
もっと有用なコードはありますか?
さらにテーブルをセットするfunctionとか、ディクショナリーの作成、登録するfunctionとかもいいな

576 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 07:20:36.45 ID:0JGyO ]
[ここ壊れてます]

577 名前:YLe.net mailto: 自分だけが読み書きするコードならそれもありだと思うけど、一般論としては、文字数を少し節約できるというくらいしかメリットがないなら、あえてラッパーを作る意味はあまりないような気がする。 []
[ここ壊れてます]



578 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 09:23:52.05 ID:Hazt22aJ.net]
>>565
短い文字数が有用ならコメント付けないで変数名とか全部1文字にしたらいいんじゃね

579 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 10:20:15.15 ID:VRj6VpYS.net]
使用回数によるよね
同じ操作が何回も出てくるなら適当なラッパー書いてあげると見通し良くて親切かなと
もちろんコメント付きでね

580 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 11:20:28.73 ID:F8pywi6k.net]
そのプロジェクト内では1回しか使わなくても、よくある定形処理は関数にまとめた方がいい
文字数を減らす必要はないけど、行数は少ない方がデバッグがしやすくなる

581 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 16:42:04.86 ID:h9Jrb8E+.net]
1ファイルに全部書く

582 名前:デフォルトの名無しさん [2025/05/03(土) 17:16:40.74 ID:2+JR0EAo.net]
ラッパーというのですね
ありがとうございます
function関数やサブプロシージャは短い方がいい(一つの処理しか行わなくてもいい、行わない方がいい)
一回しか使用しない処理でも、メインプロシージャから切り分けた方がいい
と聞いていましたが、これはラッパーというのですね

583 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 18:50:44.41 ID:ocHu15P2.net]
ぱっぱらぱー

584 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 21:38:51.92 ID:Hazt22aJ.net]
お鍋の中からインチキおじさんが登場しますた

585 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 22:43:16.33 ID:aLoX39eB.net]
ぴーひゃらぴーひゃら

586 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 07:28:49.39 ID:ajXSlqYh.net]
ラッパーというのは、元の関数とかにガワを被せた(つまり、その中で元の関数を呼び出している)関数とかのことね。包装するとかの意味のラップ。念のため。

587 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 08:17:46.31 ID:kPdoN8ak.net]
ラッパーとインターフェースはどう違うのっと



588 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 09:35:43.88 ID:VN1fyBP0.net]
インターフェースは、抽象的にいえばひとまとまりと観念されるコードの塊(クラスとかモジュールとか)同士の間の境界、その境界に接するコード部分かな。インターフェースを介して情報のやり取りを行うに際して互いの前提が異なる場合には、そのままでは情報のやり取りができないので前提を合わせる必要がある。ラッパーはそのために使われることもあるけれど、基本的には全然別の概念。

589 名前:デフォルトの名無しさん [2025/05/04(日) 16:30:55.85 ID:IQyuDcpS.net]
>>571
それはモジュール分割

ラッパーはすでにあるものを呼び出すファンクションやサブプロシージャ

ラッパーはラッピングだから、モジュールを包むモジュールというイメージ

590 名前:デフォルトの名無しさん [2025/05/04(日) 16:35:24.36 ID:IQyuDcpS.net]
>>577
質問者じゃないけど、あなたの説明は入出力のインターフェース
質問者はオブジェクト思考のインターフェースのことを聞いているとおもわれる

インターフェースはモジュールに決まったメソッド、プロパティを持たせるための骨格となる設計の定義
特定のインターフェースを継承させることで、そのクラスにはどういうメソッド、どういうプロパティがあるのか調べなくてもわかるようにできる

591 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 21:24:05.55 ID:NkPvwNmC.net]
具象クラスの(>>577の意味での)インターフェイスを規定する抽象クラス(抽象基底クラス)それ自体のことをインターフェイスと呼ぶのは、オブジェクト指向というよりもJavaとかから広まった用語法なのでは。
個人的には、インターフェイスという語の本来の意味はあくまでも577のようなものであって、Javaとかでいうインターフェイスはそこからの派生とか転用として位置付けられるべき用語法だと思うかな。
ただたしかに、Javaみたいな意味でインターフェイスという語を用いることの方が(プログラミング関係の文脈では)もはや多いのかもしれないし、質問した576の意図もそちらにあったのかもしれないね。

592 名前:デフォルトの名無しさん [2025/05/04(日) 21:50:46.14 ID:6QG7+rqM.net]
PowerQueryでの動的な繰り返し処理を理解したら、VBAにもList.Select関数とかText.PositionOfのOccurrence.Allとか欲しい

593 名前:デフォルトの名無しさん [2025/05/05(月) 01:42:23.95 ID:6skGH2rL.net]
自分で実装すればいいじゃん

594 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 09:14:01.67 ID:8n1c0Fvg.net]
実装は難しくはないだろうけど、汎用的に使える便利な関数はできれば組み込みで持っていて欲しいという感覚は分かる。

595 名前:デフォルトの名無しさん [2025/05/05(月) 10:45:35.51 ID:NKQxWENO.net]
配列の中に、対象に含まれているものがあれば、配列から取り出す、
っていう処理だから、内部処理的には、結局配列を全てチェックしていて意味がないのかな

596 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 10:46:27.32 ID:Q8K4+hk+.net]
自分が欲しいと思ったものは誰かがすでに作ってる
作るよりAIに聞いた方が早い

597 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 11:03:49.52 ID:20YqVkB+.net]
>>579
InterfaceはJava用語
TraitはRust用語
Excelでは何と言うのか?概念がそもそも無いのか?



598 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 11:43:00.38 ID:EffckoF6.net]
VBAにもInterfaceという機能があり見た目はJavaに似ている
しかし実質的にはCOM相互運用専用の機能であり、JavaのようなInterfaceは無いと考えて差し支えない
そもそもクラスメンバへのアクセスは常にダックタイピングなのでInterfaceはあってもなくても何の影響もなく、特に意味はない

599 名前:デフォルトの名無しさん [2025/05/05(月) 13:17:06.42 ID:bvP/AgOh.net]
今時のプログラミングの考え方とか、関数型プログラミングというのは、ワークシート関数でいうindex関数とmatch関数の組み合わせの検索関数や、
マッチ関数とoffset関数とcount if関数の組み合わせによるプルダウンリストの絞り込みの様な、
一つのセルに対して関数のネストはやめましょう、
一つの関数は一つの答えを返しましょう、という認識なのですがどうなのでしょうか?

600 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 13:26:58.67 ID:qohU83nC.net]
入門書読んだこと無いの?

601 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 13:37:24.10 ID:EffckoF6.net]
違う
関数型プログラミングってのは、VBAなんか使わずにワークシートの式と関数だけで作りましょう、というものだと考えるとイメージしやすい
正確には、副作用のない式や関数だけを組み合わせてプログラムを作るのが関数型プログラミングで、Excelのワークシートはその一例
VBAでも注意深くやれば副作用のない関数だけで作ることは可能だが、それができるスキルの奴はVBAなんか使わないだろうね

602 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 17:39:10.53 ID:ueUnqmHR.net]
関数型プログラミングは入門記事でちょっと齧ったくらいだけど自分にはムリそうだなーと思った。
VBAとかPythonとかの手続型言語で書く分には、@決定性や副作用を意識する、A言語に取り入れられた関数型言語由来の構文(Pythonでいえば、イテレーター、内包表記、構造的パターンマッチとか?)を使うというくらいで十分じゃんじゃないかなぁ。
本格的に関数型でやるぞっていう人なら関数型言語(HaskellとかOCamlとか?)を使うんだろうし、そこまでは頑張れないけど手続型言語を書く際に関数型言語の考え方を参考にしたいという程度なら、上記@Aくらいでお茶を濁しておく感じになるのではないかと。

603 名前:デフォルトの名無しさん [2025/05/05(月) 22:54:48.45 ID:bvP/AgOh.net]
オブジェクト指向でカプセル化とか言っていたけど、結局はその理想通りにはならなかった。
その反省で生まれたのが関数型プログラミングという理解です。
関数には引数を引き渡す事と戻り値を受け取る事しか絶対にできない。
横槍も茶々入れも鶴の一声もない。
関数は一つのだけの事しかできない。
だからバグらない、誰がやっても結果は同じ。

604 名前:デフォルトの名無しさん [2025/05/05(月) 23:40:24.40 ID:fQ8xBj6s.net]
関数型プログラミングはオブジェクト指向よりも圧倒的に古い

605 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 01:25:53.28 ID:AZSw2w0R.net]
関数型において関数は引数を受けることと戻り値を返すことしかできないというのは正しいのだけど、
鬼門なのは関数そのものを引数として渡したり関数の戻り値として関数を返したりできるところ
それにより関数型プログラミングは飛躍的に自由度と難易度が上がり、>>592の頭だとたぶんそこで挫折する

606 名前:デフォルトの名無しさん [2025/05/06(火) 06:45:59.65 ID:j1SFEq5D.net]
>>594
まさに今それをやろうとしていますね
引数に関数を渡そうとしているの
値を引数にしたいけど、関数をネストせざるを得ない

607 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 07:24:57.73 ID:Gnnon1y6.net]
引数として関数そのものを渡したり、戻り値として関数そのものを返したりできるかは言語仕様の問題だから、言語によってできるかできないかは決まっている。VBAではできない。



608 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 08:15:59.98 ID:Gnnon1y6.net]
念のためだけど、
@ある関数(関数A)の引数の一つとして、他の関数(関数B)からの戻り値を渡すこと(大袈裟に言えば、関数呼び出し式のネスト?)と
Aある関数(関数A)の引数の一つとして、他の関数(関数B)そのものを渡すこととは、違うことだよ。
C言語もVBAと同じく、関数そのものを他の関数の引数として渡したりすること(上記A)はできないが(もっとも、関数へのポインタを渡すことによって同等のことは実現できる)、上記@はできる。

さらにいえば、関数を引数として渡せたり、戻り値として返したりできる(関数が第1級の値である等と表現されることも多い)というのは、関数型プログラミングのおそらく必要条件にはなるのだと思うけど、だからといってこれらの性質があれば関数型言語というわけでもない。JavaScriptとかPythonとかは関数が第1級の値である言語だけと、いわゆる関数型言語とは言われていないと思うし。
VBAは、構文的にはJavaScript、Pytnon、C辺りと比べても関数型プログラミングからより遠い位置にいる言語だと思うので、あまり関数型にこだわる必要はないのでは? 実践的には、関数の決定性と副作用の有無に意識的になるだけでも、それなりのメリットはあると思う。

609 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 09:32:02.27 ID:ePr8aXMn.net]
あとこれは割とどうでもいいことだけど、関数の戻り値を他の関数の引数にすることを「関数のネスト」ということは、普通はあまりないのではないかなぁ(関数呼び出し式のネストという趣旨だとすれば意図は通じるけれども)。
普通は「関数のネスト」といわれれば、関数定義のネスト(関数内で定義された関数)の方を想起すると思う。

610 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 09:47:26.27 ID:K1Pjz07i.net]
pythonの凸レータは関数型らしいし関数のネストっぽく観える

611 名前:デフォルトの名無しさん [2025/05/07(水) 23:18:41.10 ID:5rQjCI4p.net]
関数型プログラミングは手続きという処理を見せないだけで、ロジックを隠すことでシンプルな見た目にするもの。

歴史上、常にこういう発想が何度も出てきているが、見た目をきれいにしたいだけで仕様の変更に耐えられない構文であることから、一度も主流になったことがない。

612 名前:デフォルトの名無しさん [2025/05/07(水) 23:48:45.09 ID:8NEt0qiL.net]
>>600
全然違うと思いますけど?
結局大勢の人で手続き型プログラミングを作ったところでバカだらけ

613 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 01:43:07.29 ID:eAkjlYW3.net]
VBA使ってる人間が他言語批判は草

614 名前:デフォルトの名無しさん [2025/05/08(木) 01:56:21.88 ID:hlDlUBWZ.net]
VBAは俗人化するのでは?なんて質問を会議でこのご時世に言われるとは思わなんだ
優しく答えて大恥かかせてしまったけど少し悪かったかも

615 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 03:20:26.19 ID:Mm7IQCJP.net]
設計と管理がちゃんとしてれば関数型だろうがプログラムは作れる
だいたいは見積もりが甘いかドキュメントの整備がおろそかになってるだけ

616 名前:デフォルトの名無しさん [2025/05/08(木) 06:36:17.83 ID:rpgtocHg.net]
VBAの何が属人化するの?
他の本格言語、例えばC++と何が違うの?

617 名前:デフォルトの名無しさん [2025/05/08(木) 07:04:16.42 ID:KsTAlec+.net]
単純に用途が限定的なのでわざわざ覚える人が少ないのよ



618 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 07:25:23.15 ID:jLg0E+bB.net]
関数型言語が主流になったことがないというのは事実だろうけど、関数型言語による宣言的なプログラミングスタイルに何かしら限界とか制約があるからなのか、それとも単に難しいからなのかはわからないな。関数型言語をある程度使いこなした経験がある人には分かるのかもしれないが。

619 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 07:39:13.07 ID:jLg0E+bB.net]
状態を数多く管理しなければならないようなプログラム(GUIとか?)はちょっと苦手と聞いたことごあるような気もするが、今はどうなんだろう。

620 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 08:15:37.11 ID:Im8CJRBo.net]
VBAに限らず、属人化のリスクは「協業の仕事」共通やな
当たり前っちゃ、当たり前だが

なんつうか、丁寧さというか共同作業のセンスというか・・・

621 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 09:23:26.41 ID:v93ye6LH.net]
どだい、現場の最前線で使われる省力化目的の小アプリ(業務の簡素化含め)なんか
その寿命は3〜5年使えれば御の字
その間にもいろいろ業務形態も変化するし欲しい成果物もその都度変わったりする
その変化に逐次対応できるものなら属人化してようとも目的は果たしてる
その期間内に制作者が辞めたところでそれが何だってんだ 属人化させたのは上の責任
属人化がいけないなんてのは、上の方の言い訳に過ぎない 何故一人に任せた

10年も使い続けられるような制作物ならとっくに償却できてるし、その会社の立派な資産

622 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:03:03.06 ID:a9PTljx+.net]
話がループしてるな

623 名前:デフォルトの名無しさん [2025/05/08(木) 10:09:29.45 ID:D3KgMrbS.net]
Exit vba

624 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:11:28.02 ID:RKaJBu95.net]
属人化の話題はVBAスレの華だからね。VBAがアイデンティティになっているタイプの人には譲れない話題なんでしょ。

今は、昔と比べて他の言語に触れてからVBAもやるという人が増えているのかな。VBAが最初に触れた言語ですという人の割合ってどれくらいなんだろう。

625 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:29:57.11 ID:a9PTljx+.net]
モジュール分ける意味と基準が判らない
全部のプロシージャを一つのモジュールに詰め込むのは何が悪いの?

626 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:32:44.22 ID:G5GTs1je.net]
Exile VIVA!

627 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:41:00.38 ID:719LxqHN.net]
>>614
VBAレベルなら全部一つでいいよ
分割したくなるほど大きくなるようなら全体の業務フローを見直すべき



628 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:54:42.11 ID:RKaJBu95.net]
一般的な言語だと、機能分割や名前空間の分割のためにモジュールを分けるのでは。
モジュール分割の基準については、凝集度(高い方が良い)とか、結合度(低い方が良い)とかの概念でいろいろ議論されているみたい。
ただ、正直、VBAのモジュールっていろいろと特徴的なので(クラス定義はクラスモジュールで行う必要があるとか)、モジュール分割が必要な規模ならVBAではあんまり書きたくないかな。

629 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 12:10:22.44 ID:8ptxnmrn.net]
今は改善されてるのかも知れないが
名前ちょっと変えただけで行方不明になることは良くあった

630 名前:デフォルトの名無しさん [2025/05/08(木) 18:48:55.03 ID:rpgtocHg.net]
私はモジュールをコードの使用目的で分けているな
ブックマークみたいな感じ
あと特定のアプリケーションを操作する時は、関係する変数、オブジェクトをひとまとめにしたりとか
もっと何も気にせず使えるのなら、アドインにコードをまとめて共有したりもするんだろうな

631 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 20:28:48.50 ID:Qp1M/T2r.net]
皆さんVBAでどのくらいコードを書きます?
1000行くらい?

632 名前:デフォルトの名無しさん [2025/05/08(木) 21:11:25.68 ID:kNzCbrU5.net]
シートごとにモジュール分けてる...

633 名前:デフォルトの名無しさん [2025/05/08(木) 21:26:36.63 ID:ownVsw/K.net]
>>620
必要に合わせてかなり書くよ
1000は小規模

634 名前:デフォルトの名無しさん [2025/05/08(木) 21:34:26.78 ID:hlDlUBWZ.net]
そういうところがセンスないんだよな
僕は詳しい僕は長くかける
で自己満足して社内の評価も年収も低いっしょ
火の玉ストレートでごめん

635 名前:デフォルトの名無しさん [2025/05/08(木) 21:49:23.37 ID:rpgtocHg.net]
可読性の高いコードは、処理を一つ一つ、行を書く事だと思います
あと、エクセルだとRangeだのCellsだの、英語や数字になるから、それぞれ変数で名前をつけて変数に代入して可読性を上げるとか

636 名前:デフォルトの名無しさん [2025/05/09(金) 07:31:44.14 ID:Y+GhIEwV.net]
うちの職場だけ特殊なので
全体のシステムが大きいからコードも必然的に大きくなるだけ
その中の個々の機能では1000行以下の機能もたくさんあるよ

637 名前:デフォルトの名無しさん mailto:sage [2025/05/09(金) 08:00:17.09 ID:zNQNct04.net]
RPA!RPA!って少し前もてはやされてたけど、
速度的にも手順的にもVBAでよくねって案件多かったよね



638 名前:デフォルトの名無しさん [2025/05/09(金) 12:28:57.25 ID:piOnFv34.net]
そうなか、自分のとこだけで精一杯で世間知らずになってるかも

639 名前:デフォルトの名無しさん [2025/05/09(金) 18:28:31.58 ID:HJ6RQEwc.net]
VBAで済むならVBA
RPAの方が楽ならRPAってだけ
RPAの方が楽なのにVBAで書くのはバカ

640 名前:デフォルトの名無しさん [2025/05/09(金) 18:30:10.14 ID:HJ6RQEwc.net]
>>628
ちょっと一行目が合わんな(寝起き)

641 名前:デフォルトの名無しさん mailto:sage [2025/05/09(金) 18:41:10.42 ID:zNQNct04.net]
何が楽かって視点がないからRPAが廃れたってことをわかってなさそうなレス

642 名前:デフォルトの名無しさん [2025/05/09(金) 22:10:08.68 ID:p2pcYwx2.net]
そもそも論として、使い方を学ぼうとしない人が大勢なのに使いこなせるわけがない
kintoneだろうがなんだろうが
銀の弾などない

643 名前:デフォルトの名無しさん [2025/05/09(金) 22:37:09.74 ID:p2pcYwx2.net]
文系管理職なのに業務アプリをシュシュっと作れちゃう俺

あるわけないだろバーカ
絶対スカラ値の原則を無視したり、列を繰り返したりしてるわボケ

644 名前:デフォルトの名無しさん [2025/05/10(土) 02:15:51.46 ID:2PI0HY+M.net]
豊川悦司「俺ー♪」

645 名前:デフォルトの名無しさん [2025/05/10(土) 13:05:37.78 ID:IWhliTad.net]
無から有は難しいよね、環境や周囲の協力がないと

646 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 13:13:10.16 ID:APagMvUq.net]
業務効率化程度の仕事なら、無から有は勝手にやりゃいいだけだから難しくない
周囲を巻き込んだとしてもどのみち最終的には言い出しっぺが責任持ってやれよという感じにしかならん
有から別の有の方が遥かに難しい

647 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 13:23:47.83 ID:TkZSyEZj.net]
誰かがVBAなんかで半端に作っちゃったものを、こんなもんSaaSでいいだろと移行させるみたいなのは難しい
必ず、決まった業務を回すしか能のない人達が重箱の隅をつついたり牛歩戦術をしてみたりと必死に抵抗してくる



648 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 13:31:42.36 ID:HZyfRGTg.net]
金がかかるとなるとそりゃそうでしょ。

649 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 13:49:08.55 ID:tG+fugNq.net]
いや、経験上、金を問題にするのはある程度上の立場の人間なので、本質的でないしょーもない業務影響はあまり問題にしない。
〇業務を〇時間削減できるから人件費換算で導入コストと利用料を上回る効果が見込めますと説明できればよい。
くだらないことで難癖を付けてくるのは現場の人間。

650 名前:デフォルトの名無しさん [2025/05/10(土) 14:05:58.61 ID:3Mk2sCKg.net]
>>630
何が楽かさえわかってないのかよw

651 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 14:09:45.85 ID:644AQTJb.net]
無から有ってのは、何であれ産みの苦しみって奴で、社会でも人生でもあらゆる場面で起こり得る
有から別の有ってのは例えが判らんが、αというシステム化された処理が有って、その結果を元に
別のβを作ろうとしているのか、或いはαの改善品αUを作ろうとしているのか
前者なら無から有と一緒だし、後者なら元と成ってる最初のαを精査すればいいだけ
こんなもんSaaSでいいだろと思い込んでしまった原因を自省してみて、うかうか宣伝文句に釣られてただけと
理解出来たら儲けもの じぶんで実際にSaaSに移行してみて一年位稼働させてそれでも一切問題が発生しない
事を確認してから提案するぐらいの努力は発言する前に済ませておくべき
やってみましたできませんでしたは、殊営利を目的とする企業では落第の烙印を押されるだけ
プロトタイプ・試作品も無いまま実務で運用することほど無謀な試みは無い 旧日本軍大本営方式でしか無い

652 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 14:31:05.56 ID:HZyfRGTg.net]
>>638
利用者が習得するまでの学習コスト考えてる?

習得するのに時間がかかるとか操作が複雑になり過ぎたら反発すると思うけど。


今よりこれだけ簡単になりますって話なら反発も少ないのでは?

653 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 14:39:47.45 ID:tG+fugNq.net]
>>641
だからそれを含めて難しいって話でしょ

654 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 16:34:23.69 ID:ngauQQ8E.net]
話の逸れ方が大きくなってきたな

655 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 16:38:29.08 ID:iGSB8dlv.net]
前から先人達がこのスレで、Arrayを使って云々・・・と議論しているの見かけて、
「どこで活かせるんだろう?」と思っていたけど、
今日初めて使ってみた。

もともとは、Power Queryで複数のクエリーとピボットを順番に更新させるのをVBAでやっていたのだけれど、
「クエリと接続」とタスクマネージャーをずっと監視しているのもしんどいので、
ChatGPTに、
「クエリーやピボットテーブルのそれぞれを1つのステップとして、
WMIの "SWbemLocatorオブジェクトのConnectServerメソッド" とやらを使って、
各ステップの開始/終了時刻とCPU最大使用率のテーブルをワークシートに出力できないか?」
と相談したら、その中に、出てきましたよ、

' ステップ一覧
Dim steps As Variant
' 更新ステップのリスト(ステップ名, 実行内容)
steps = Array( _
Array("Q_1", "クエリ - Q_1"), _
Array("Q_2", "Query", "クエリ - Q_2"), _
Array("Q_3", "Query", "クエリ - Q_3"), _
Array("Q_4", "Query", "クエリ - Q_4"), _
Array("Q_5", "Query", "クエリ - Q_5"), _
Array("Q_6", "Query", "クエリ - Q_6"), _
Array("Q_7", "Query", "クエリ - Q_7"), _
Array("Q_8", "Query", "クエリ - Q_8"), _
Array("PVT_1", "Pivot", "PVT_1") _
)

と。
で、何度かやり取りした結果、うまく出来まスた。

656 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 18:59:33.45 ID:Pq21kD+5.net]
しねごみかす

657 名前:デフォルトの名無しさん [2025/05/10(土) 19:48:45.71 ID:pekHwIHV.net]
>>644
どれくらい処理の重い作業か、帰りの組み方をしているのか私には分かりませんが、
テーブルデータの整形が終わった後、一区切りついた後、テーブル関数やリスト関数などで繰り返し作業保護(一般的なeach?)



658 名前:デフォルトの名無しさん [2025/05/10(土) 19:52:02.31 ID:pekHwIHV.net]
>>646
を行う前に
必ず
List.Buffer Table.buffer を行うと(VBAの配列並にとは言いませんが)処理が劇的に早くなると思います。
私は2000行に6000行のTaxt.Containsをして結果をList.SelectやAnyTrueなどをしていますが、劇的に早くなりました。

659 名前:デフォルトの名無しさん [2025/05/10(土) 20:41:13.86 ID:pekHwIHV.net]
VBAでセルの中の改行のある大量の文字列の中から目的の

660 名前:報を抽出するという試みをやっていたのですが、最近になってやっと改行で区切って、1行にバラすという事に気がつきました。
これで無関係な文字列の行はフィルターできるし、視認性が劇的に改善したしで本当に楽になった。
データは必ず一行づつという当たり前を改めて知らされた。
[]
[ここ壊れてます]

661 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 21:53:08.57 ID:iGSB8dlv.net]
今回Arrayを使って、各クエリー/ピボットテーブル更新中のCPU使用率を調べようとしたのは、
・複数の前処理ブックの共通テーブルを参照して、項目ごと時間軸串刺し合計や最大/最小値とその時間なんかを求めるブック
・仕上がり52,560行
・これでもまだ中間集計ブック
・将来的には104万行を超えるので、ベース集計クエリーにはデータ モデルを使用
・今の第8世代Core i7と32GBメモリーで、このブックの更新には20分超
・当初は、List.Buffer、Table.bufferをクエリーで使って高速化を試したが、これだけ行が多かったりクエリー依存が多いと、シーケンシャルにしてBufferしたつもりが前クエリーの再計算が入ってExcelが固まったので断念。
・逆に、104万行以内に収まる途中のクエリーは、ワークシートに書き出してこれを参照するようにしたら、最後まで計算できるようになった。

662 名前:デフォルトの名無しさん [2025/05/10(土) 23:00:42.57 ID:pekHwIHV.net]
>>649
クエリを分割したらいいって事でしょうか
中間テーブル?の様な

663 名前:デフォルトの名無しさん [2025/05/10(土) 23:08:41.01 ID:pekHwIHV.net]
>>649
明らかに不要なデータを元ファイルから削除するとか、グループバイがしたいのならワークシートで

664 名前:デフォルトの名無しさん [2025/05/10(土) 23:10:16.50 ID:pekHwIHV.net]
行の並び変えをするとか
不要な列は削除しておくとか
集計はパワーピボットを使用するとか、テーブルのjoinではなく、リレーションシップにするとか
できそうではないですか?

665 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 23:17:35.27 ID:iGSB8dlv.net]
>>650
別スレで

666 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 02:32:23.22 ID:orNzllBw.net]
属人化言い出したらExcelシートそのものも属人化だろな

667 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 06:38:44.59 ID:dESx0WKG.net]
>>654
これは正にだな
人によって非表示行(列)や非表示シート、
定義された名前を非表示にするやつすらいる



668 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 09:33:21.32 ID:xj1UIMtq.net]
他人のVBAより数式のほうが見たくなくなる

669 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 12:52:43.82 ID:orNzllBw.net]
世の中、属人化シートだらけ

670 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 13:42:45.69 ID:oI5baM/t.net]
逆に、「他人に見てもらう」ことを意識してExcel作っていたら、
独りよがりでない、少しはわかりやすいもの作るのかと。

「お天道様が見ている」
「第二の視座」
とか言うヤツ

671 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 13:57:41.75 ID:UTf8BgbA.net]
大さんという上司に観てもらってた良い思い出

672 名前:デフォルトの名無しさん [2025/05/12(月) 19:52:24.55 ID:/MqwmjFI.net]
Excel大好き人間としてはHaskellを推したい

673 名前:デフォルトの名無しさん [2025/05/13(火) 20:06:46.42 ID:IQbEImBo.net]
正規表現で漢字全てにマッチさせるにはユニコードの最後の漢字までを範囲にしたらいいのだすか?

674 名前:デフォルトの名無しさん mailto:sage [2025/05/13(火) 20:43:44.18 ID:UxpIpbA1.net]
[\u4E00-\u9FFF]

675 名前:デフォルトの名無しさん [2025/05/13(火) 22:37:17.01 ID:IQbEImBo.net]
urlに恐らく改行が含まれているのですが、改行もマッチさせるとなるともはやなんでもマッチしてしまいますか?

676 名前:デフォルトの名無しさん [2025/05/14(水) 00:23:46.12 ID:TPeqytUP.net]
漢字で始まり、ひらがなで終わる
ひらがなのみ
カタカナのみ
マッチした結果を全てディクショナリーに登録して、アイテムは1+1を繰り返してカウントする
これだけでも頻度分析ができるんだね

677 名前:デフォルトの名無しさん mailto:sage [2025/05/14(水) 00:57:58.82 ID:WcLab/oc.net]
>>664



678 名前:
それ単語の区切りはどうするの?
[]
[ここ壊れてます]

679 名前:デフォルトの名無しさん mailto:sage [2025/05/14(水) 01:04:11.54 ID:KAgWD1+F.net]
仕事の管理でVBA使ってポツポツやってたけど違う業務管理が追加になってもうすっかりコードなんか忘れてるので面倒だなと思ってたけどChatGPTちゃんに聞いたら楽に組めた
Aのシートをコピーしてシート名はCにしてとかでもすぐに教えてくれるし
こんなのでもすっかり忘れてるから助かった

680 名前:デフォルトの名無しさん [2025/05/14(水) 01:12:17.68 ID:TPeqytUP.net]
>>665
漢字とひらがな
ひらがなのみ
カタカナだけ
意味のある言葉になっているよ
むしろ本当の本当に単語にまで分解しても意味がわからないよ
情報を細分化してもしょうがない

681 名前:デフォルトの名無しさん [2025/05/14(水) 01:49:41.56 ID:TPeqytUP.net]
例えば
お 世話 に なり ます(あるいは なります)
まで分解しても意味を持たないでしょう?
お 世話になります
で十分でしょう
東京タワー みたいに
漢字カタカナパターンもある事に気がついた

682 名前:デフォルトの名無しさん mailto:sage [2025/05/14(水) 09:24:40.17 ID:mIHvW3MM.net]
それで分析できるのはその定義における節の頻度であり、一般的な単語とは異なる
それがお前の目的に合っているのであれば好きにしたらいい
ついでに言えばそんなもんMeCabに突っ込めばいいだけだからお前独自の方式なんて誰も必要とはしない

683 名前:デフォルトの名無しさん mailto:sage [2025/05/14(水) 09:51:03.61 ID:mHOx/gQ0.net]
おー、MeCabってのがあるのね。めかぶって読めるなと書こうとしたら、本当にめかぶから名前を取っているのね。

684 名前:デフォルトの名無しさん [2025/05/15(木) 22:57:08.75 ID:vsR8tMHm.net]
めかぶというやつの公式ページ?の
一行一分
は誤字ですか?
それだったらテキストマイニングを極めていてもやっぱりこの程度なんだなと
あと何を言っているのかを判断するには前後の脈略が必要だし、日本語はひらがなに特に意味がある訳でもないから
そこまで単語に固執する必要もない気がする

685 名前:デフォルトの名無しさん mailto:sage [2025/05/16(金) 09:43:09.58 ID:IgvVjYfn.net]
make a boo

686 名前:デフォルトの名無しさん [2025/05/16(金) 10:48:47.56 ID:em0azm75.net]
manko

687 名前:デフォルトの名無しさん mailto:sage [2025/05/16(金) 13:02:22.31 ID:TOZOy2SA.net]
印刷範囲外のセルが
なぜか印刷範囲中央付近に
プレビューされ、実際にも印刷されます

改ページプレビューも利用して
グレーゾーンに押しやっている
テキストボックスなんですが
元の配置よりさらに外側に動かすと
印刷範囲から消えはします

そのため支障をきたしている
訳ではないのですが
なぜこうなってしまうのでしょうか?



688 名前:デフォルトの名無しさん mailto:sage [2025/05/16(金) 13:04:09.96 ID:TOZOy2SA.net]
↑スレ違いでした、すみません
取り消します

689 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 09:02:45.85 ID:ztNWa+hU.net]
ラベルのAcceleratorって何に使うの?

690 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 10:17:32.20 ID:BnclY/n2.net]
マジレスすると
ボタンのタイトルを E&xcel とかにすると
Ctrl+x でボタンを押せるのが Accellerator じゃないかな

691 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 10:20:42.98 ID:ztNWa+hU.net]
でもラベル押せないじゃん

692 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:01:06.66 ID:vJvypOU0.net]
ボタンの上とかにラベルを貼り付けることで
マウスクリックした時、キーボード操作した時で同じ操作をさせられる
Accessなら、ラベル単体でもつついてあれこれできるけど、Excelではそんな機能は無い
SpecialEffectと併用して見た目押したようにできるかも知らんが
そんな無駄を付け加えてまでやりたいことなのかどうか

693 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:11:18.06 ID:ztNWa+hU.net]
回答?
独り言?

結局、何に使うの?

694 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:32:35.29 ID:FyrcyVVg.net]
一応、フォーカス移動には使えるんじゃない? それがどの程度嬉しいことかは微妙なところかもしれないが。

695 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:42:35.66 ID:ztNWa+hU.net]
テキストボックスの前に置いといて、ラベルにフォーカスさせると
テキストボックスにフォーカスされる
テキストボックスが複数あっても一発で選べる
なるほど、こうやって使うのか

696 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:48:29.09 ID:AUJKaPS/.net]
それは可能かもしれないけど、テキストボックスにフォーカスを移動するためにアクセラレータを使うのはどうかなぁ

697 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:49:47.54 ID:AUJKaPS/.net]
>>661が指摘してましたね
スレ汚しでごめんなさい



698 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:58:22.21 ID:ztNWa+hU.net]
よく出来たアプリはみんなできるようになってるよ
S)検索
みたいな感じ

マウスしか使わない人はそんなこと考えないし、
タブオーダーも無茶苦茶で、どこに飛ぶか判らない

699 名前:デフォルトの名無しさん [2025/05/17(土) 14:53:18.10 ID:Mou0F5/k.net]
フォントサイズをセルの横幅にジャストサイズで合わせたいのですがどの様にすればいいでしょうか?
縮小して全体を表示するは試していますが、念のために列幅と文字数を割って1文字あたりの大きさをまとめるとか、そう言った確実な方法を探しています。

700 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 18:12:34.03 ID:VJRyFCkb.net]
そんな方法はない

701 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 18:32:10.79 ID:Vu4+Tz9e.net]
仕方が無い

702 名前:デフォルトの名無しさん [2025/05/17(土) 18:34:04.52 ID:Mou0F5/k.net]
やっぱりセルに実際の文字列を入れて
治ったセルの高さ/行数 = 1行あたりの行の高さ
で割り出すしか無さそうですね

703 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 18:37:59.26 ID:rdyb/DPe.net]
画像で保存してセルに合わせて画像を拡大縮小したらどうかな

704 名前:デフォルトの名無しさん [2025/05/17(土) 18:49:20.89 ID:B7xQsXDd.net]
一つのセルにそんなに長い文字列を入れてしまうデザインを見直したほうが早いかも

705 名前:デフォルトの名無しさん [2025/05/17(土) 18:50:45.81 ID:Mou0F5/k.net]
やっとdictionaryのネスト、親ディクショナリー、子ディクショナリーが理解できました。
よくdictionaryのitemに配列を入れたら値が複数登録できると言うコードが詳細されていて、私も四苦八苦しながら覚えました。

だけどこれって本当は親ディクショナリー、子ディクショナリーが正しい答えですよね
ディクショナリーだとそれぞれの項目が文字列で指定でますが、配列だとインデックスでしか登録できない

706 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 19:22:23.61 ID:hPL9irHC.net]
>>686
うちは24や48から2ポイントずつ減らしならが総当りしてる

707 名前:デフォルトの名無しさん [2025/05/17(土) 20:04:52.16 ID:Mou0F5/k.net]
>>691
1行なら 縮小したら全体を表示する が使えるから、、、?
そして多めに行数を作成して、行数が少ないのなら削除するか、非表示にすればいいと?
なるほど



708 名前:デフォルトの名無しさん [2025/05/17(土) 20:06:06.97 ID:Mou0F5/k.net]
>>693
私も12の倍数で作成しています。

709 名前:デフォルトの名無しさん [2025/05/17(土) 20:19:45.31 ID:Mou0F5/k.net]
印刷周りの仕様、挙動をよく理解していなくて申し訳ないですが、
改ページで1ページの範囲を設定していれば、どれだけ行が大きいか、行数が多いかしても、
必ず1ページになる様にExcel側が自動調整されるのでしょうか?
優先度は改ページ、全ての行、列を〜ページに合わせる、zoomの順番でしょうか?

710 名前:デフォルトの名無しさん [2025/05/17(土) 21:01:27.82 ID:HReuuPkT.net]
>>696
それはVBAの問題なのか?
ここは何のスレかわかってるか?

711 名前:デフォルトの名無しさん [2025/05/17(土) 21:14:59.94 ID:Mou0F5/k.net]
>>697
VBAで書類の作成、印刷の自動化を申しつけられて、全自動化時代は余裕なのですが、印刷周りの設定はよく知らなくて、しかも実際に印刷作業をする人は別の場所の人だから、1ミリでも小さければ気に食わないんでクレームを入れてくるんです。

712 名前:デフォルトの名無しさん [2025/05/17(土) 21:18:54.18 ID:Mou0F5/k.net]
.PageBreak
.Zoom
.FitToPagesWide
.FitToPagesTall
font-size
セルの縦横
これら全てVBAではないのですか?

713 名前:デフォルトの名無しさん [2025/05/17(土) 21:29:04.01 ID:HReuuPkT.net]
>>699
VBA以前にそもそもExcelの印刷自体を知らない人なんだと

714 名前:「うことはよくわかった
1ミリも狂わないように印刷するにはWindows APIを呼び出して使うかExcelで印刷するな
[]
[ここ壊れてます]

715 名前:デフォルトの名無しさん [2025/05/17(土) 21:36:27.58 ID:Mou0F5/k.net]
>>700
どのAPIがよろしいのでしょうか?
PDFには常に出力しています

716 名前:デフォルトの名無しさん [2025/05/17(土) 21:39:10.06 ID:HReuuPkT.net]
>>701
Canvas API
教えたからそろそろ消えろ

717 名前:デフォルトの名無しさん [2025/05/17(土) 21:56:35.49 ID:Mou0F5/k.net]
>>702
それはWindows APIなのでしょうか?



718 名前:デフォルトの名無しさん [2025/05/17(土) 22:02:21.39 ID:HReuuPkT.net]
>>703
いい加減にしろ
後は自分でPostScriptを書いてPDFファイルを作れ

719 名前:デフォルトの名無しさん [2025/05/17(土) 22:20:55.25 ID:Mou0F5/k.net]
>>704
Canvas APIはWindows APIなのでしょうか?
私はVBA以外はほぼ無知なのですみません

720 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 22:21:25.66 ID:c0BqlY74.net]
ぐぐれ

721 名前:デフォルトの名無しさん [2025/05/17(土) 22:28:10.07 ID:Mou0F5/k.net]
本当にAIのコミュ力につくづく人間は敵わないなと思う

722 名前:デフォルトの名無しさん [2025/05/17(土) 22:40:26.23 ID:HReuuPkT.net]
>>707
とことん馬鹿だな
教えてもらってそれかよ
消えろや

723 名前:デフォルトの名無しさん [2025/05/17(土) 22:48:37.53 ID:Mou0F5/k.net]
>>708
それがコミュニケーション能力が高い事なんですか?

724 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 22:54:54.99 ID:2QmOCSUM.net]
煽り耐性ないやつが次々と引っかかっててウケるー

725 名前:デフォルトの名無しさん [2025/05/17(土) 22:58:48.79 ID:HReuuPkT.net]
馬鹿はこうやって本性を曝け出す

726 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 23:31:01.83 ID:QeS8RaKg.net]
エクセル(VBA)で印刷の精度を求めるのは徒労だと思う

727 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 08:45:52.75 ID:cP1cyZx+.net]
いまだに位置合わせがどうこうやってる
生産性激低日本さん



728 名前:デフォルトの名無しさん [2025/05/18(日) 09:28:02.03 ID:NiGvaOOd.net]
>>692
配列がいい場合もある
使い分け

729 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 10:05:14.14 ID:v1lfaeE4.net]
>>696
相談の核は、構文の式の優先度を知りたいのか
成果物を要求する人の要望に応じるには、どこを直せばいいのかを知りたいのか

それらの式をあれこれ工夫して組み込んでもどうしてもズレてしまう だの
今のところ問題無いが先々を考慮して問題に成りそうなヶ所を潰しておきたい だの
こちら側では相談の意図がいまひとつ掴みきれない
具体的にサンプル上げるなり事例を書き込むなり
1mmズレるケースとズレないケース両方があれば、より判断しやすい
おれのはズレないよ アー〇ネイ〇ャーだもの

730 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 11:39:33.78 ID:/BWwyZ2v.net]
Dictionaryのkeyに複数値を入れれば2次元で格納できる

731 名前:デフォルトの名無しさん [2025/05/18(日) 11:50:29.67 ID:Mk3OrkwO.net]
>>715
改ページと全ての行、列を1ページに合わせると、Zoomのこの3つの依存関係、絡み合いが知りたいですね。
AIのご説明では、
まず改ページが最優先され、
次に全ての行、列を1ページに合わせるの設定が優先さる?
全ての行、列を1ページに収めるが設定されているとZoomの設定は無視される
そうです

あとあと行数が今より増えた時に、「フォントサイズが小さくなりすぎる」かもしれないので、今一度、Excelのページレイアウトの設定、仕様、挙動を完璧に把握したいなと思いました。
ありがとうございます。

732 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 11:53:43.56 ID:JTwWUl1C.net]
ところがね・・・
Windowsの場合は、パソコン側の液晶モニターの設定も印刷に影響するんだよ
プリンターもすべて同じLANにつながってるのを共有してるのに、別のPCから印刷するとズレるんだ・・・

733 名前:デフォルトの名無しさん [2025/05/18(日) 11:59:28.20 ID:Mk3OrkwO.net]
AIにお伺いして、より沢山の案や方法の回答を得たい時はどの様にご質問していますでしょうか?

私は具体的に〜をするにはどの様な方法がありますか?
と聞いていますが、質問があまりにも具体的すぎるのか、限定的すぎるのか、聞かれた事に対してしか答えてくれません(質問に対して抽象化して幅広く回答したら今度はAIは嘘をつくと言われると思いますが。)

734 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 12:05:26.30 ID:9lhlIUdU.net]
左右に並んだセルを連結すると文字の上下位置がずれて発狂するよね

735 名前:デフォルトの名無しさん [2025/05/18(日) 12:07:00.00 ID:Mk3OrkwO.net]
>>718
それもAIに言われました
スケーリングも影響しますと言われました。
高解像度のモニターで、アイコンのサイズを大きくするために使うあのスケーリングです。
プリンターのフォントや最小の余白サイズなどのプリンターの仕様
プリンターに実は縮尺の設定がかかっている事に気づいていない
などなど

736 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 12:20:35.59 ID:Yd8pXRNj.net]
スレチの話題ほど長く続くんだよな
Excelスレでやってくれよ

737 名前:デフォルトの名無しさん [2025/05/18(日) 12:24:15.85 ID:Mk3OrkwO.net]
公式ページに書いてありましたね。
Zoom プロパティが True の場合、FitToPagesWide プロパティは無視されます。

Zoomプロパティが False の場合、 FitToPagesWide プロパティと FitToPagesTall プロパティは、ワークシートのスケーリング方法を制御します。

(Zoomは)拡大または縮小する方法にかかわらず、元の文書の縦横比は保持されます。



738 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 13:41:54.68 ID:v1lfaeE4.net]
スレチとは言えないだろうけど、今のところ個人の感想を書いてるだけに近しいな
仕様に関しては、その書類を共有するグループ内で諮って今後の方針を決めればいいだろうし
環境の違いで発生するトラブルに関しては、最大公約数だっけ?なんかそういう系の
どんな環境でもほぼ同一の結果を出せますゾーンを決めて、それに沿った設計制作に
改めるべきだろうし
PDFに出せば問題軽減するってんならそれもひとつの解決策だし
掛けるコストに見合う結果が出ないなら意義は低い(少ない)
これが、個人研究ってんならより深く追及して解に近いものが得られたら発表してもらいたいが

739 名前:デフォルトの名無しさん [2025/05/18(日) 13:47:30.17 ID:iKxgrlxH.net]
longとstrの変数定義10個やって、ループ5万回回して中で変数に値を出し入れする

まとめてループ外で変数定義するのと、ループ内で適宜定義するのとどっちがよいので??

740 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 14:08:00.75 ID:JTwWUl1C.net]
>>723
保持されないんだな、これが
罫線の太さが一部だけ違ってるシートだと拡大率が縦と横で違ってくる

741 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 14:10:27.89 ID:JTwWUl1C.net]
>>725
MSの推奨は最初にまとめて宣言
チームでやるならみんなに合わせる
個人的な作業ならどっちでもいいけど、途中で方針を変えるとあとで混乱するからどっちかに決めて一生変えないこと

742 名前:デフォルトの名無しさん [2025/05/18(日) 14:47:49.53 ID:qr58bPvk.net]
>>723
この馬鹿、答えを教えてもらってもネチネチやってるのか
馬鹿はこれだから
消えろや

743 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 17:14:14.05 ID:9lhlIUdU.net]
>>725
VBAにブロックレベルのスコープはないからどっちも同じ
オレの好みは読みやすさ重視でループ内に書く方だが
プロシージャ内の2つのループで同じ変数名を使いたい時
ループ外で宣言しないといけなくなって打ちひしがれる

744 名前:デフォルトの名無しさん [2025/05/18(日) 19:26:33.94 ID:NiGvaOOd.net]
真円を印刷したら楕円になって発狂したの思い出したわ
どうやって解決したかは昔すぎて覚えていない

745 名前:デフォルトの名無しさん [2025/05/18(日) 21:45:07.54 ID:JeO/PtYk.net]
>>727
>>729
参考になります…!
ループ内の宣言コストとかはあんま気にしなくてもよさそうな感じなんですね(オブジェクト除く)

746 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 00:29:53.41 ID:aSNuw95p.net]
変数3、4個のプロシージャだったら変数の宣言しなくていいよね?
プロシージャが動いてる時だけメモリ消費するってことでいい?

747 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 00:49:32.05 ID:nyMkteHn.net]
>>732
Option Explicit しなさい
しないと、変数のタイプミスで簡単にバグる



748 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 03:01:33.66 ID:xZYpAeMM.net]
>>732
たとえ宣言してあっても、メモリ上に変数領域が確保されるのは実行中だけだよ
ただし宣言しないと全部Variant型にされるからメモリ効率も実行効率も悪くなる、と言っても体感はできないけど

749 名前:デフォルトの名無しさん [2025/05/19(月) 06:06:52.71 ID:WEB+3jSu.net]
>>730
図形の事に全く詳しくないから間違っているかもしれませんが、セルに合わせて伸縮したり、移動したりするのを無効にするのでしょうね

750 名前:デフォルトの名無しさん [2025/05/20(火) 02:20:44.35 ID:vmioRAc9.net]
ListView,TreeView入れて作ったら、大半の人がOffice2013 64bit使ってて動かないことが判明したんだけど、どうしよう

751 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 06:15:30.63 ID:J92IpVQ8.net]
作りなおす

752 名前:デフォルトの名無しさん [2025/05/20(火) 07:27:24.89 ID:QvUhVdYo.net]
ん? 2013にはそのview無いってこと?

753 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 07:40:50.77 ID:QuREz4IK.net]
32bitと64bitの互換性が無い Verが違う 今時2013つこてる方がキケンがあぶない
相手の環境を再現できるマシンを入手してそれで作り直す
がんばって自作する https://qiita.com/Q11Q/items/b4f8d50e760d114b21fd

754 名前:デフォルトの名無しさん [2025/05/20(火) 08:58:00.71 ID:QvUhVdYo.net]
あぁ、なる
昔大量にフォーム移行する時に、定義を一覧に出して、それを元に再構築するの作ったような記憶…
おそらくサイズ変更に合わせてフォントとかも変えたのかな…

755 名前:デフォルトの名無しさん [2025/05/20(火) 10:20:21.64 ID:4cRKMiEn.net]
きちんと動作環境を明確にする
クライアントと打ち合わせる
上司や営業に相談する

756 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 14:46:51.76 ID:E4QmPhp5.net]
2019ですら化石レベル化してるのに2013とはな

757 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 16:17:35.03 ID:0n1WQM2u.net]
2013がどうってんじゃなく使うDLLが違う
使用するべきDLLが32bit版か64bit版か判断するコードが要る



758 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 10:53:43.66 ID:va6/rMba.net]
Excel2013が危険なのには同意だけど
Excel2013/64からListView,TreeView/32を呼ぶのは無理ってだけで
Excel2013/64からListView,TreeView/64を呼べたら使えるんじゃね

759 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 11:32:04.49 ID:gg1Rd+aD.net]
所詮、ActiveXコントロール(ocx)だから
カレンダーコントロールと同じ運命を辿るような気がするけどね
必死に工夫して汗水流して作り上げても、寿命が風前の灯火で数ヶ月後には利用不可とか

760 名前:デフォルトの名無しさん [2025/05/21(水) 12:10:27.12 ID:ZnDW2hJE.net]
使用者、要望者のオーダーメイドでマクロを作成しても、これは嫌だ、あれも嫌だ、と言われるならなにも作る事は出来ない
脱Excelといって、既製品の業務ソフトを導入しても絶対不満しか出てこない
脱Excelの現実を知った気がする
そして全ての要望を取り込んで作成したマクロが属人化した闇Excelファイルなのだろう

761 名前:デフォルトの名無しさん [2025/05/21(水) 12:16:44.55 ID:np4mB3oN.net]
嫌かどうかで仕様を決めていると大変だろうな

762 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 13:16:57.81 ID:gg1Rd+aD.net]
>>746
そういう、いかがわしい新興宗教にのめり込んだ人のような発言はそろそろ控えたら?
書いてることが支離滅裂だよ?

>オーダーメイドでマクロを作成しても
 要望通りでダメなら、どこをどう改善すればいいかじっくり話し合いの機会を持てばいいだけ
 作成したと言い切れるのは、試作品を改良改善した末に仕上がったものに対して使う言葉
>これは嫌だ、あれも嫌だ、と言われるなら
 事前の要件や仕様を満たして無いんだろ? 打ち合わせの時に聞くだけの態度で居たとかで
 その制作物が仕上がった時の概要がじぶんのアタマの中にできていないからそういう事態に陥る
 経験不足もあるだろうし打ち合わせが打ち合わせの体を為していなかった、てだけ
>絶対不満しか出てこない
 その業務アプリに移行しましょうと先導した人間の責任 流行りの言葉なら任命責任
>全ての要望を取り込んで作成したマクロが属人化した闇Excelファイル
 これがまったく理解不能 属人とか闇とか言いたいだけちゃうんか、と
 そんな発言に賛同してくれるのは、あんたがた宗教の身内だけ

763 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 13:20:09.77 ID:a2F5EjYc.net]
TreeViewなどにはライセンスの問題もあったような

764 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 13:24:41.83 ID:4tKBDgn4.net]
顧客も打ち合わせしても話し通じないならAIと打ち合わせしてコード出してもらった方がいいってなるよな

765 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 13:28:08.25 ID:RMq3dtvy.net]
ぶっちゃけシステムなんてそんなもんだよ
コンサルや名の知れたSIerに頼んだって必ず不満は出るし、結局使い物になりませんでした、なんてことも珍しくない
ただし、VBAはユーザー側の人間が作ることが多いので、SIerみたいに「要件定義で決まった通りです」で逃げるわけにもいかないんだよね

766 名前:デフォルトの名無しさん [2025/05/21(水) 15:22:55.64 ID:r/haQ8U2.net]
仕様変更に合わせて納期も延長でいいんじゃね

767 名前:デフォルトの名無しさん [2025/05/21(水) 17:20:56.31 ID:RhMOdQAE.net]
だいたい配布前提で整備したコード書けば属人化なんてほぼしないわけで
取り込む要望も無理にまとめず適度に分割してやればいいし
敵に抵抗できないコミュ障コーダーが悪いまである



768 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 17:33:31.94 ID:7nPavp7R.net]
>>753
属人化の根源はコードそのものじゃなく脳内にしかない仕様だよ
コードからwhatを読み取れないから属人化する

769 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 17:33:52.05 ID:7nPavp7R.net]
whatじゃない、whyだな

770 名前:デフォルトの名無しさん [2025/05/21(水) 17:42:23.76 ID:RhMOdQAE.net]
根源とかどうでもいいんよ
VBA少しできますくらいの他人が
適当にメンテしながら使っていけるコード書けって話でしかない

771 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 18:08:10.91 ID:7nPavp7R.net]
>>756
配布前提で書いたコードだろうと属人化するって話だから、
メンテしながら使おうが属人化はするよ

772 名前:デフォルトの名無しさん [2025/05/21(水) 18:16:53.95 ID:HDnlDCyv.net]
こんげんかせんといかん

773 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 07:49:16.16 ID:ZB7yrtfi.net]
Excel属人化教の方々は、その属人の定義をして欲しい
属人の何がいけないのか? 全員が同じレベルに成れと言い募ってるのか?
フルオープンにしてコード見れば説明書に成ってる程の成果物を作れと言ってるのか?
それとも、いけない事は無いがただ単に属人って言葉に魅了されて使ってるだけなのか?

774 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 07:59:10.35 ID:ZB7yrtfi.net]
WhyやWhatが読み取れないからメンテ出来ない ってんなら、じぶんのWhyやWhatで作り直せばいい
それを持ってた奴が前作を作ったんだしそれが使えてきてたって事実は変わらん
おれにはできねえってんなら、前任者より能力が劣ってるということになるし、才能ある奴を
新たに採用するように働きかけする必要がある
シン成果物を作れる能力あるなら、前任者をつべこべこき下ろしてる時間はムダでしかない 成果物-1.0でもいいけど

775 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:28:50.00 ID:cWZ2SmFA.net]
>>760
書き間違えたのは申し訳ないが

776 名前:、whatはコードから読み取れるんよ
whyは何故その処理をしているか?何故その方法を選んだか?何故そのアルゴリズムなのか?
それら意図を完全に示す術はない
コメントを残せって言われるのはつまりwhyを残せってこと
whyを知らなければVBAに限らず、言語にも依らず、
あらゆるものごとは属人化する
属人化は必ずしも悪ではないけれど、
昨日の自分は別人ってことを鑑みれば効率が悪いことは明らか
[]
[ここ壊れてます]

777 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:29:26.28 ID:uEqc52DQ.net]
数年後の自分がメンテできるように作ればOK
人の能力はマチマチ、まだいない後任者のことを考えてもしゃーない



778 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:42:19.33 ID:cWZ2SmFA.net]
属人化はリスク要因となりえ、VBAは属人化する蓋然性が高いってことをわかった上で許容するのと、
わからず使う・属人化しないと信じて使うのとは大違いって話をしているに過ぎない
能力だの才能だの、シン成果物だの成果物-1.0だの、
手も頭も動かさない奴の言葉遊びほど虚しいものはないな

779 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:49:14.19 ID:iwrIvlAH.net]
属人化教なんて言葉を使っている時点で、もう何を言われても属人化の弊害なんて絶対認めないぞっていう雰囲気をぷんぷんさせているじゃない。このスレだけで何回この話題やるの?
一般に言われる業務の属人化というのは、特定の人がいなければ業務が回らない状態のことで、当該特定の人が休んだり退職したりしたときに業務が止まってしまうリスクがあることから好ましい状態ではないとみなされている。会社側としては業務内容を把握する従業員を複数人にしたり(1人に依存しない)、マニュアル化したりすることでリスクを低減化するのが通常の対応。
VBAはコード作成も実行もExcelだけでできるという特徴があり、このVBA固有の事情により、?専門のプログラマーが作成するコードに比べて一般にコードの質が低い、?会社側が把握しないうちに業務にコードが使われるという事態が生じがち。属人化の弊害が、特にVBAについて言われることが多いのはこれらの事情によるところが大きい。
要するに会社側から見て、属人化リスクを低減化する機会自体がなかったり(上記?)、コストを掛けて属人化リスクを低減化するほどの価値が見出せなかったり(上記?)というケースがVBAの場合には少なくない。
VBAがアイデンティティになっちゃっている人にはどう説明しても理解しないだろうなと思いつつ、一応説明するとこういうことね。しかし、属人化の弊害を否定したがる人って、見事なまでに会社側の視点が抜け落ちているのね。担当者個人の視点で、業務が多少効率化できるのならそれはいいことだという発想から出発してそこから一歩も抜け出ないのならそりゃ議論も噛み合わんわな。

780 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:52:23.13 ID:cWZ2SmFA.net]
>>760
才能ある奴wがマニュアルをじぶんのWhyやWhatで作り直して大惨事になった、
東海村JCO臨界事故ってのもあったな

781 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:12:43.00 ID:ZB7yrtfi.net]
Excelは属人化しやすい だからExcelで効率化を図る場合には、それに関わる部署・チーム・グループが
一丸と成ってそうならないような対策を施さなければならない 今後、対策されていない自動化は禁止する
とかならまだわかる
Excelは属人化ガー VBAは尚更ー を連呼してるだけで、何の生産性向上に繋がるんだ?
アタマがひどく悪い一族に至っては「だからVBA禁止」のお触れまで出す始末

問題発生しないよう努力する必要もあるし、問題発生したらすぐさま対策を講じなきゃならないのは
何もExcelに限らんだろうに
とりわけここ20数年で急に変遷進歩し続けてきてしまったPC作業に取り残された奴らの繰り言に近い
そんなだから失われた40年とか揶揄されちまう 先を見て向上心持ってもっととんがらないと
VBAに問題あるなら、それを解消することに全身全霊で打ち込みゃあいいだけ
何の解説者だか評論家気取りだか知らんが、悪いものを悪いと言う事なんか阿呆でもできる 悪い処は直し続けるてだけ

782 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:31:16.38 ID:cWZ2SmFA.net]
>>766
属人化を悪いって言ってるのはあなた自身だろ
俺は属人化を悪いなんて言ってない
属人化を問題だと思うなら解決すべきなのはそりゃそうだし、
解決策の一つとしての全面禁止だって、俺なら選ばないけど理解はできる
属人化が何故生じるのかを議論することは、それを解消することにも繋がる
属人化する/しないの幼稚な二元論でまとめようとするのは、
頭を使ってない・使えないことをひけらかしてるに過ぎないよ

783 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:35:02.46 ID:mUoHJ/op.net]
従業員目線なら、属人化はイコール自分への依存度で価値だから、そりゃ手放さないわな

784 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:40:52.16 ID:cWZ2SmFA.net]
会社をプロフェッショナルの集まりだとすれば、
結局のところ仕事自体がどこまで属人化を突き詰められるかだから、
しょーもないことを属人化すんなって話なだけ

785 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:46:17.63 ID:ZB7yrtfi.net]
念仏唱えてるだけで、一向に前向きに対処しない・対策しようともしないバカ共を嘲って「教」を付けてる
属人の意味を、じぶんの中で咀嚼・消化してない/しようともしないで、ヨソで聞き齧った言葉をなぞってるだけ
「前にならえ・右にならえ」がDNAに刻み込まれてるこの国の人間にゃあ、それが心地いいのかも知らんが
誰がやらなくともおれはやる ぐらいの気概が欲しいところ

と書くと、内容読まずに言葉尻だけ捉えて「それが属人化に繋がる要因だろ!」とか言い募る奴が居そうだが
オープンな属人化なら大いに結構だろ ←これも語弊がある物言いだがw
オープンにする努力を怠るな、と言ってる 制作する側もそれを使って効率を上げようとする集団も 共有ってそういうもんだろ
そのグループ・集団は同じ目的(収益の向上)を持った集団のハズなんだ その目的達成の方にこそ目を向けろ
足引っ張って他人の粗探ししてつべこべ文句言ってるだけじゃあ、そのうち滅びる

786 名前:デフォルトの名無しさん [2025/05/22(木) 10:05:21.01 ID:cejl8MgF.net]
>>760
時間が無限にあるのが前提ならそうだね

787 名前:デフォルトの名無しさん [2025/05/22(木) 10:07:32.69 ID:cejl8MgF.net]
>>765
あれ実はノーベル賞もらえるレベルの改良だよな



788 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 10:23:06.55 ID:bEEUFRBb.net]
>>765
裏マニュアルとは別の?
ググっても分からなかった。

789 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 11:03:11.01 ID:j+nxGcrc.net]
質の低いコードを公開されたって迷惑なだけなんだって。VBA命の人は、まさに収益向上の観点からVBAはメリットより害の方が大きいと判断する会社が少なくないってことをどうしても受け入れられないみたいね。
VBA = 生産性向上・業務効率化という無邪気な信念を持っているみたいだけど、多くの会社はVBAをそのようには

790 名前:評価していない。会社が本気でコードによる生産性向上・業務効率化をするつもりなら、どのような言語を選定するにせよ継続的な管理コストは必要になるわけだけど、それならVBAではなく、もっとちゃんとした言語でやりたいというのが普通なわけ。非プログラマ社員の内製VBAの改変履歴を管理したり、マニュアル作ったりなんてしたくないのよ。 []
[ここ壊れてます]

791 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 16:37:21.75 ID:ZB7yrtfi.net]
さすが >>774を取るだけの素質を持ち合わせた人間の発言だなw
ExcelVBAスレでExcelVBA不要論を、あまり意味の無い言葉を並べ立てて講釈するとは
内製であれ外注であれ、その業務を賄うにはExcelで充分という案件は想定して無いだろ?
そういう案件に限ってという前提ならExcelVBAでいいじゃないか
ダメな理由を語りたいがためだけに持ち出した事例が、一向にその役目を果たしてない
どんなコードだろうと「質が低い」と判断できる能力を持ち合わせてるんなら、それを
ブラッシュアップするなり作り変えるなり その方が百万倍コストの面でメリットだろうに

どんな大袈裟なプロジェクトと比較してンの? んで、それ比較する意味あンの?
あんたの中ではあるのかも知らんけど、世間一般では無意味だ とおれは思うよ

792 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 17:36:10.44 ID:cWZ2SmFA.net]
>>775
少なくないってのを100%と解釈してるのか?
ダメだと判断する会社が多いってだけで、
良いと判断する会社が無いなんて書かれてないぞ
変なバイアスかけてレス読んでる様に思える
んで、ブラッシュアップなり作り変える(替える?)ことのどこにコストの優位性があるんだよ
無駄なコストを支払ってることに気づけないような奴が、
他人の発言の意味の多寡の判断なんてできないだろ
可か不可か、良いか悪いかみたいな単純な話にしないと理解できないポンコツ自慢はもうやめてくれよ

793 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 17:36:37.38 ID:Fv3bLhDj.net]
Excelで十分かどうかというのはあまり意味のない尺度だと思うけどね。
Excel VBAの案件って既存物のメンテを除けば基本的に現状ワークシート等での手作業を省力化したいというものだから、
そりゃExcelで十分に決まってる。元々人力でできる程度に細分化された業務なんだから。
VBAが批判されるのは、まさにそういう個別最適化の積み重ねによって細切れ(≒属人的)で非効率な業務プロセスが保存される傾向があるため。

794 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 19:51:20.63 ID:RAnqaH1V.net]
多くの会社から見て業務でVBAを使ってもトラブルが起きにくいパターンというのは主に2パターンあって、@重要なコードだが、何らかの理由で他の言語が使いにくい事情があるため、専門のプログラマに頼んできちんとしたVBAコードを書いてもらう場合。この場合、当然、VBA社員の出番はない。要するに、通常のシステム開発と同じだが、特定の事情により選定言語がVBAになるケース。もう一つは、Aあまり重要な業務ではないので、質の低いコードでも構わない場合。個人の裁量の範囲内でVBAの使用を認める会社というのはこっち。要するに個人で責任を取れる範囲内なら、会社は管理コストを掛ける必要もないし、担当者の裁量でVBAを使うことを禁止するまでのことはしないくても良いのではないかいう発想。それなりに合理的ではある。

逆にいうと、上記@Aいずれにも当てはまらないような使い方は、会社からするとリスク・コストを感じやすい。個人の裁量の範囲を超えて、非プログラマの書いたコードを業務に使用するような場合とかね。書いた本人はコードをオープンにしてブラッシュアップすれば良い、コストの面でも有利だなんて無邪気にのたまうけど、会社からすればそんな価値の低いものに管理コストを掛けたくない。仮に継続的な管理コストを掛けるならもっと価値のあるものに掛けたいわけ。はっきり言えば、新しく書き直すときでさえそういう既存のコードなんかない方が良い場合も多い。業務に使われている既存のコードがあるとなれば、どんなに酷いものであっても一応読まないわけにはいかないからね。

非プログラマの書くコードという括りで論じる限りは、Excelで十分な業務というより、低質なコードで十分な業務かというのが基準になるかな。それだって会社の方針次第だが。会社が全面的にVBAの使用を禁止しているような場合もあるからね。

795 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 21:02:03.17 ID:aXwvtPcZ.net]
VBA禁止な
reg add "HKCU\SOFTWARE\Microsoft\Office\16.0\Excel\Security" /v "VBAWarnings" /t REG_DWORD /d 4 /f

796 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 22:58:58.92 ID:zdx+eNOi.net]
名前付き引数省略は害悪。全てキッチリ書け

797 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 08:26:51.53 ID:oLOrCYhj.net]
「多くの会社」を、それぞれが想定してる規模が違うような気がする
経産省のサイトを参考にすれば、商工業それぞれの規模から比較したら
小規模(社員数20人以下)のが俄然大半を占めてる(かつては零細と呼ばれてた)
製造業は九割に近付く勢いだし、小売業や飲食業も八割、卸売業は五割程度だが
「多くの会社」とひとまとめにする場合は、これらを指すのでは無いのか?
社員数2,000名以下の中規模とかをもって「多くの会社」と呼び為してる気がしてならない
小規模は、持ち合わせてる武器で戦うのがいちばん効率的なんだが
持ち合わせてるExcelだけで戦えるなら、それをフルに活用しない手は無いだろうに
その実態を知ったうえで「多くの会社」と書いてるんだろうか



798 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 09:06:27.49 ID:RtFNfP1s.net]
人手に余裕のない小さい会社こそ差別化要因にならない業務にはSaaS使うべきなんだよ
SaaSは企業規模に対する課金が多いため、むしろ小規模な企業の方がコスト効率も良くなる場合が多い

799 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 10:16:56.42 ID:38AbBGg0.net]
VBAの属人化リスクの議論って、むしろそういう小規模な会社こそが最も意識すべきことでしょ。中規模以上の会社なら、そもそも低質なVBAコードに業務を依存させるような間抜けなこと自体があまりないだろうし、仮にそういう事態を生じさせてしまっても、最悪追加コストで何とかできなくはない。
小規模会社には、VBAを「効率的」な「武器」だと思いこんで飛び付いて、必要な管理もしないまま「フルに活用」した挙句、にっちもさっちもいかない事態にしてしまったところが少なくなかった。その教訓としてVBAの属人化リスクが意識されるようになったんだよ。
「武器」にならないとまでは言わないが、そんなに大したものではないし、トータルで見れば「効率的」でもない。好んで「フルに活用」するようなものでもない。そういうVBAの等身大の実像が会社サイドに把握されるようになっただけの話。

「小規模は、持ち合わせてる武器で戦うのがいちばん効率的なんだが
持ち合わせてるExcelだけで戦えるなら、それをフルに活用しない手は無いだろうに」(>>781
多くの会社はこの後半部分が幻想に過ぎないことに既に気付いているが、VBAerには未だにこの幻想にしがみついている人が居るということ。

800 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 13:22:41.57 ID:oLOrCYhj.net]
>必要な管理もしないまま「フルに活用」した挙句、にっちもさっちもいかない事態にしてしまったところが少なくなかった
ここの事例を具体的に読ませてくれるサイトとかあるん? 統計とか?
文末を「・・してしまったところはほぼ無い」と書き換えてどっかで紹介して、それを鵜呑みにした読者がヨソでお披露目しても
気付かれないでしょ? おソースプリーズな言説

判り易く例として社員20人だとして、事務要員4人は

801 名前:規模に対して多い 大抵は現場と掛け持ちで4〜5人ならまだ普通
事務専任で1〜2人なのが一般的な見立てだろうと思う そのうち一人が丹精込めてVBA育ててたけどあいにく辞めた
他の人間は便利に使わせてもらってたけど、いざ辞められたらVBAだれもチンプンカンプン ならまだ有り得る
だからって、それが直接「だからVBA禁止!SaaSに移行!」って成ると頑なに信じてる?それ薦める?
小規模なら小規模なほど環境の変化を嫌うんだ あるものを何とかして使い続けられるならそうしたいってのが人の世の常
多少の手直し必要に成って助力が必要な状況なら、コネ使うなりしてでもそのものを使い続ける工夫に走る
タイミング良く同質のものを安価で提供できる業者とかが出てきて、それのサポートも請け負ってくれたりしたなら
ソッチに移行していくことはあったとしても、未知のサービスに賭けて投資してそれが自社の実態に即さなかったら
目も当てられない そっちのがリスキーだしその費用は丸々損害に等しい(授業料てか
どこの会社も業種が一緒なら業務も一緒だと思ってたら大間違いで、その会社独自の仕組みを持っていたりする
それに即して自在に加工できる道具として見ればExcelほど便利なものは無いのも事実

上では商工業を書いたけど、他にも建設、運輸・運送、士業えtc あらゆる業界で現実にExcel VBAが幅広く活用されてる
現実を鑑みても「ExcelのVBAは属人化しやすいから禁止」を言い張って止まないンなら、言い続けてりゃいいけどさ
書かれるたびにおれがしゃしゃり出てつべこべ反論してりゃいいんだろうし
[]
[ここ壊れてます]

802 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 13:35:20.91 ID:+XeHUCKJ.net]
どのように属人化するか・どの様に防ぐかの話題から、
属人化対策として禁止するか否かの話に

803 名前:デフォルトの名無しさん [2025/05/23(金) 15:19:50.38 ID:eOaMEV2I.net]
最後に 知らんけど ってつけた方がいいんじゃんね
知らんけど

804 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 15:21:21.07 ID:mEX1XvmT.net]
>>784
他の手段と比較してどうかはともかく、事実としてVBAが問題を起こすことが多いからあんたに仕事があるんだろ?
だったら属人化万歳くらいで流しときゃいいのに、いちいち突っ掛かってたら余計なストレスを作るだけだぞ
心配しなくても、あんたが顧客としているような会社は、全体最適云々を語るコンサルやシステム屋は相手にしない
まあSaaSについては結構小さいところもわりと積極的に営業するから敵になるかもね

805 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 15:53:12.83 ID:dHvUhuhP.net]
長くてわかりにくい
スパゲッティ文章はやめろ

806 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 16:24:52.89 ID:oLOrCYhj.net]
うん、途中からどうも話が噛みあわないな、とかは思っていた
ひと頃「ExcelのVBAは属人化しやすいから禁止する企業が増えてる」とかのたまう輩が徘徊してて
おま、それ、何もExcelに限らんだろ っつー意味で反抗してたし、そんなアホ論をこのスレで
平気で吹聴してる奴に向けて言葉のげんこつしてたんだけど どっか行っちゃったんか?
所詮、世間は、世の中は属人三昧だろ? それで右往左往世界が悪い方向に向かってる実例を
まざまざと目の当たりにしてる真っ最中だろ? で、それが悪かどうかなんか、もう少し様子を
見極めなきゃいけないまである
なんでわざわざこのスレをターゲットに、VBAは属人化!!!とか言い募らなきゃならん?
どこの回し者だ?、と

細かいこと言えば、じゃあってんでこれでもかっつー関数並べ立てて複雑怪奇な数式を組んだ
WorkSheetはどうなんだ? 属人化の極みだけどそれはいいのか? 見た目xlsxならおkなのか? と
至るスレで属人化!属人化!!属人化!!!と連呼してるならまだわかるが、なんでExcelスレ限定

で、こないだ別件で「Excel 売上管理」とかでネットをモゾモゾしてたら、そこら中の売上管理アプリの
宣伝サイトが、形ばかりのExcelのサンプル載せて「しかしExcelは属人化」っつー文言を決まり文句の
ように添えてたんだ ははぁ〜ん、とね、ある意味腑に落ちたし別の意味でがっかりしてたんだ
言い募る連中が自分の言葉でその悪弊を語れなくて「ネット見ろ」とか返すしか能が無かった理由が判明
そんなサイトだけじゃ無いのは承知してても、結局自分の意見として主張してンじゃなくて、受け売り
余所で聞きかじったのをなぞってるだけのレベルなんだな、と

しかし、少なくともこのスレに居続ける人間なら、ExcelのVBAで効率を図ることに意欲的であって欲しい
他のがいいよ、って奴はその宣伝だけして書き逃げしてて欲しい
まだまだExcel もっともっとVBA であり続けることが、このスレの健全化に貢献するはずなんだから

すぱげってぃwww 読み飛ばせばいいじゃんか 読んでくれなんて頼んで無いぞ?

807 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 16:44:22.04 ID:HIpPOdnz.net]
スレタイ



808 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 16:53:05.49 ID:fshmIkkH.net]
xlsmって唐突に未知のウイルスの疑いのあるファイル扱いになったりする事もあるから何も知らない人は扱うのが怖いかもね

809 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 17:18:49.63 ID:4lmOgu2G.net]
VBA職人が揶揄されるのも分かるわ。
ところで、仮にVBA職人、Ruby信者、Haskell信者、Rust信者で比べられたら、やっぱりVBA職人が圧倒的に格下扱いされちゃうのかな。ちょっと悲しみ。

810 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 17:28:32.52 ID:U7YdU8g0.net]
VBAがそれらと同列に比較されることはないから互いに眼中にないと思うよ
Excel VBAはピボットテーブルとか分析関数とかと同列の、Excelの上級スキルの一つに過ぎない
一般的なプログラミングとは別物
そのへんのエンジニアより、むしろBIツールがメインのデータアナリストなんかの方がVBA意識してるよ

811 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 17:34:04.21 ID:4lmOgu2G.net]
なるほど、そんなものかねぇ。

812 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 17:39:18.56 ID:+XeHUCKJ.net]
>>789
文意の分からん文章書いてて噛み合わないもクソもないだろ
伝える気ないなら書くな
読ませる気無いなら書くな
話を曲解して変な方向に話を誘導してるのはあんた自身だ

813 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 18:31:41.70 ID:5vSRBrjF.net]
言語にすぐ上だ下だ騒ぐ奴いるからな

814 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 18:59:01.81 ID:BlARSTzn.net]
言語じたいは下の下
反論する奴すらいない

815 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 19:12:24.88 ID:K4ioF38n.net]
構文として最低限どんなものがあって欲しいかっていうのは人によって違うからねぇ。いまは、JavascriptとかPython辺りが平均的なラインなのかな。まぁ、関数型言語等のユーザーから見ればJavaScriptとかPytnon辺りでも足りないものだらけということになるんだろうし、VBAでも慣れればそんなに不自由ではないよという人も大勢いるわけだしね。

816 名前:デフォルトの名無しさん [2025/05/23(金) 19:54:42.34 ID:ybuGJY2P.net]
C言語育ちのワイ、VBA始めた頃「えっ、ポインタってどうやって使うの?」って戸惑った思い出
自分の仕事が楽になる

817 名前:p途で使いまくってるからまぁ属人化しまくりだけど、
自分が退職した後(2年後)は知らんと思っている
[]
[ここ壊れてます]



818 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 20:17:02.36 ID:dHvUhuhP.net]
この辺がつらい

・tryがない
・for eachがバリアントのみ
・continueがない

819 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 21:01:05.99 ID:61koEGUg.net]
まぁ、なければないで何とかやっていけるもんだよ。
このスレではそう言っておくのが無難。

820 名前:デフォルトの名無しさん [2025/05/23(金) 21:05:52.61 ID:fxCKrz9G.net]
>>799
C言語にはfor eachがない、なぜならもっと原始的、シンプルな言語だからってCopilotに聞いたのですが本当なのでしょうか?

821 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 21:21:09.60 ID:eG6EJpyW.net]
>>802
ポインタに++すれば次の要素になるからむしろCのほうが融通が効く

822 名前:デフォルトの名無しさん [2025/05/23(金) 22:01:59.52 ID:ai481srR.net]
4行以上のレスは読む必要無いってマジだな

823 名前:デフォルトの名無しさん [2025/05/23(金) 22:09:05.20 ID:4KSUIwLz.net]
ぬるぽ

824 名前:デフォルトの名無しさん [2025/05/23(金) 23:17:20.35 ID:fxCKrz9G.net]
>>793
データアナリストならパワークエリーしてほしいな

825 名前:デフォルトの名無しさん [2025/05/24(土) 06:17:34.64 ID:OSW0csek.net]
属人化し易い言語と言うことは融通の利く言語と言うことでもある。
例えば、CやC++ではポインタが使えたけどC#では「それは危険だ」ということで使えなくなってしまった。
代わりにデリゲートを使ってセーフティーに参照しなさい、ってことなんだろうけど、まぁお仕事用の開発だったらそれでもいいのかもしれないけど、
昔PS-VITAってゲーム機があって、これがエクスペリアってスマホとクロスプラットフォームで開発できるように開発言語をC#にしてしまった。
ポインタは確かに参照先間違えると吹っ飛んだりメモリリーク起こしたりと危険なものではあったけど、扱いが面倒ではないし融通の利く機能だった。
それを潰してしまったことがPSPシリーズがVITAで終わってしまった原因ではないかと今でも思ってる。

826 名前:デフォルトの名無しさん [2025/05/24(土) 06:41:52.12 ID:OSW0csek.net]
>>798
JavaScriptをやったときには
前から.Net系の言語や、まぁVBAでもそうなんだけど、
何でクラスのインスタンスや文字列とかは変数に入れられるのにメソッドは入れられないんだろ?
って思ってた時期があって、
JavaScriptに当たったとき、
あ、出来る言語もあるんだってなって、あれVBAに欲しいなぁとは思った。
後はスクリプト系の言語はスカラー変数で型の指定がないから型の指定に慣れてると逆にそれが面倒だったかな。
VBAで言えば全部Variantで扱ってるようなもんだし。厳密には違うらしいけど。

827 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 10:35:16.26 ID:sJ/mZ3mU.net]
若いコにはやっぱPython辺りが人気とか?



828 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 13:44:59.73 ID:3VNn3d5Y.net]
スピル周りやLET,LAMBDAなどの関数が充実し
Excel=ビジュアルな関数型言語だと勝手に思っている

829 名前:デフォルトの名無しさん [2025/05/24(土) 14:39:09.90 ID:a4AdJqTs.net]
ビジュアルな関数型言語はemacs-lispだろ

830 名前:デフォルトの名無しさん [2025/05/24(土) 15:44:49.02 ID:0gUvgwlc.net]
表検索するのにSQL使ってたけど、FILTER覚えたら単純な検索ならこれでいいかー、ってなった

831 名前:デフォルトの名無しさん [2025/05/24(土) 20:17:19.55 ID:c7V+L981.net]
このスレはバカの話はなぜ長いのか考えるスレになりました

832 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 20:41:36.84 ID:6QA0+Pxw.net]
頭の良い人は難しいことを簡単に説明出来る
馬鹿は簡単なことを長々と判り難くする

833 名前:デフォルトの名無しさん [2025/05/24(土) 20:44:24.68 ID:OSW0csek.net]
>>813
正直すまんかった
久しぶりにVBAスレ来たからつい・・・
でもVBAはいい言語だと思うよ

834 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 21:07:47.86 ID:cYe6QRvj.net]
VBAは言語なのだろうか
VBは言語だけども

835 名前:デフォルトの名無しさん [2025/05/24(土) 21:42:51.33 ID:ZMjSY/PV.net]
A1セルはこのフォルダのパスを記入する
A2セルはこのフォルダのパスを記入する

流石にこれは通じる、、、よね?

836 名前:デフォルトの名無しさん [2025/05/24(土) 21:44:12.53 ID:ZMjSY/PV.net]
>>816
チューリング完全がプログラム言語の定義なのでしょう?
だったらVBAはプログラミング言語なのでは

837 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 22:37:10.39 ID:iK5rs3WU.net]
A1 Write this folder pass.



838 名前:デフォルトの名無しさん [2025/05/25(日) 12:18:28.20 ID:IvH5YvLQ.net]
dictionaryやFileSystemObjectのfunction関数を使っているけど、dictionaryに登録する処理や取得したファイル名やファイルパスに対する操作は事なる

こう言う場合、どうすれば個別の条件にも対応できるfunction関数が作れますか?

839 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 12:36:22.85 ID:ubpRgCst.net]
異なる操作をひとつの関数で行いたいという質問ですね!
まずはどういう操作を行っているのか教えてください!

840 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 12:45:27.58 ID:czPn1bap.net]
dictionaryは死ぬ予定だから使うのやめなよ

841 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 12:53:50.40 ID:ubpRgCst.net]
>>822
そうですね!
Excelなのだからデータはワークシートに格納するのがスジですね!

842 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 13:20:14.05 ID:fZ8kzLje.net]
AIみたいな解答ワラタ

843 名前:デフォルトの名無しさん [2025/05/25(日) 16:48:27.92 ID:zOE9ehCa.net]
ホントにAIに聞いた。
個別の条件にも柔軟に対応できる function を作るには、いくつかのアプローチが考えられます。例えば、以下のような方法を試してみてはいかがでしょうか。
1. パラメータを活用する
2. Enum または定数を使う
3. コールバック関数を使う

844 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 17:36:59.25 ID:QBoxveBd.net]
何をしたいのかが謎
型によって処理を分岐させたいってことかね

Function 関数(処理対象)
 型名 = TypeName(処理対象)
 Select Case 型名
  Case "Dictionary"

  Case "File"

  Case "Folder"

 End Select
End Function

845 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 18:31:50.10 ID:czPn1bap.net]
>>823
そういう話じゃなくVBS廃止の副作用で連想配列や正規表現が死ぬって話

846 名前:デフォルトの名無しさん [2025/05/25(日) 18:42:26.13 ID:rOBfPREU.net]
>>827
VBS廃止の副作用で死ぬのは噂や推測じゃなくて公式の情報なの?

847 名前:デフォルトの名無しさん [2025/05/25(日) 19:07:30.81 ID:IvH5YvLQ.net]
ファイルシステムオブジェクトでフォルダの中のファイル名一覧と、ファイルパスを取得したい時もあれば、
ファイル名に部分一致するファイルのパスを取得したい時もある



848 名前:デフォルトの名無しさん [2025/05/25(日) 19:13:49.79 ID:5C/Jye7Q.net]
従来の正規表現の代用って無いの

849 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 19:54:07.08 ID:czPn1bap.net]
>>828
逆にあれだけ情報出ててなんで死なないと思うの?
https://techcommunity.microsoft.com/blog/windows-itpro-blog/vbscript-deprecation-timelines-and-next-steps/4148301

>>830
vba-regex by sihlfallっていう、
RegExp代替のフルVBAで書かれた正規表現エンジンがある

850 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 19:58:13.45 ID:bo3VS07C.net]
>>829
はい!
if文で条件分岐すれば、簡単に実現できます!

851 名前:デフォルトの名無しさん [2025/05/25(日) 20:04:43.89 ID:IvH5YvLQ.net]
私はVBAの正規表現が死んだら、パワークエリーでJavaScriptの正規表現を使うわ


set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?
Wordのドキュメントやアプリ

852 名前:ケーションを処理する時にエラーが出たのでそう思いました。 []
[ここ壊れてます]

853 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 22:03:34.39 ID:QBoxveBd.net]
正規表現はREGEX関数が実装されたのでVBAでやる必要なし

854 名前:デフォルトの名無しさん [2025/05/25(日) 22:32:05.60 ID:d/seLvao.net]
>>822
知ったか乙
良く調べて書き直せ

855 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 02:34:52.38 ID:J879X3+V.net]
>>835
Microsoft Scripting Runtimeに依存してるからVBSと共に死ぬ
FSOなんかはScripting Runtimeには依存してないから引き続き使える
間違ってるなら指摘して
認識改めるから

856 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 09:38:22.00 ID:G1Vrdcz4.net]
>>820 が聞きたいのは
https://www.limecode.jp/entry/syntax/bind-set-filesystemobject
この辺の処理の仕方なんでは? 最後まで精読すれば、どういう書き方をすれば
より都合が良くなるか、それなり理解が深まるような

857 名前:デフォルトの名無しさん [2025/05/26(月) 09:53:10.39 ID:wHcYCN0P.net]
>>833
>set オブジェクト = nothing
それ書かないで過去に何度か問題起きてたような
ファイルopenして、close書かなくても勝手に閉じてくれるとしても、書いたほうがいいようなもん
たった1行各程度で未然にトラブル防げるなら書いとけと
(かと言って、親オブジェクトから連なる小オブジェクトはいちいちnothingせずに、親オブジェクトだけ書いちゃうことも多いけどな。小さい処理だと特に)



858 名前:デフォルトの名無しさん [2025/05/26(月) 12:08:21.83 ID:chNfFSjB.net]
>>836
間違えている
どのDLLに何が入っているかだ

859 名前:デフォルトの名無しさん [2025/05/26(月) 13:55:33.90 ID:cvwCoF8H.net]
>set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?

した方が良いじゃなくてするべき

860 名前:デフォルトの名無しさん [2025/05/26(月) 17:21:30.90 ID:c1JRhLC0.net]
コピペ荒らしこのスレだけ来ないの面白いな

861 名前:デフォルトの名無しさん [2025/05/26(月) 18:35:02.01 ID:FaOK97dk.net]
>>837
すみません
今の私は例えばファイルシステムで言えば、
フォルダの中の全てのフォルダ名とフォルダパスを取得
フォルダの中の全てのファイル名とファイルパスを取得
フォルダの中に指定のファイル名と異なるファイルがあれば削除
と言う様に、
それぞれのサブプロシージャを作成する事しかできていません
なので、一つのサブプロシージャに条件に応じて複数の処理が行えないかなと思いました
原作論で言えば、一つの処理しかできないサブプロシージャこそ正しいのかもしれませんが
あと、それぞれのプロシージャでファイルシステムオブジェクトを宣言とセットをしてしまっています

nothingは今までプロシージャを抜けた時点で解放されるから特にする必要がないと思っていましたが、Wordを操作する様になって、nothingをしないと処理が止まってしまうので意識する様になりました

862 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 19:11:18.49 ID:mCaBFscc.net]
Sub Yaritai(i as integer)
if (i and 1) <> 0 then
Call Sub1()
elseif (i and 2) <> 0 then
Call Sub2()
End Sub

863 名前:デフォルトの名無しさん [2025/05/26(月) 20:30:26.44 ID:sP5+kUYx.net]
>>842
ご自分で言ってる通り、ひとつのモジュール、関数、メソッド等にはひとつの役割を与えて作るのがセオリーです。ちなみにそれを単一責任原則と言います。
ひとつのプロシージャ内で出来るかと言えば、再起処理やStaticな変数を上手く使えば恐らく出来ないことは無いでしょうが、そうするメリットをあまり感じません。
ひとつのプロシージャで処理するのではなく、ひとつのクラスとしてその辺の処理を行うことを検討しては如何でしょうか?
そうすればメンバ変数として宣言したもののインスタンスをコンストラクタで生成することも出来ますし、デストラクタで解放することも出来ますよ

864 名前:デフォルトの名無しさん [2025/05/26(月) 20:36:57.49 ID:sP5+kUYx.net]
×再起処理
◯再帰処理
誤変換すまんこ

865 名前:デフォルトの名無しさん [2025/05/26(月) 21:18:23.47 ID:FaOK97dk.net]
>>844
クラスモジュールを一通りやった事がありますが、いまいちクラスモジュールの使い方を知りません
どうすればそれぞれの機能をクラスモジュールで効率的に実装できるでしょうか?

866 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 22:59:03.14 ID:Eh03XDLb.net]
セルから機種依存文字を直接拾ってくるのは難しいですか?

例えば☐(unicode:2610)が入ってるセルをクリックすると☑(unicode:2611)に書き換える、みたいなのを実装する場合、
if(Range("A1").text="☐")then
だとRange("A1").textでセルの文字は取得できませんよね?
(もちろん「="☐"」で直接比較することもできませんが)

どうにかしてセルの機種依存文字を拾ってきてその種類を判定することは可能でしょうか?

867 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 23:15:54.66 ID:MWZ/4kNq.net]
>>847
Hex(WorksheetFunction.Unicode(Range("A1")))



868 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 15:49:48.18 ID:j5Gfr/Ar.net]
>>847
>Range("A1").textでセルの文字は取得できませんよね?
取得はできる。VBEで使えない文字だからソースに直接その文字を書けないだけ

Dim CHECK_ON As String: CHECK_ON = ChrW(&H2610)
Dim CHECK_OFF As String: CHECK_OFF = ChrW(&H2611)

If Range("A1").Value = CHECK_ON Then
Range("A1").Value = CHECK_OFF
Else
Range("A1").Value = CHECK_ON
End If

869 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 17:59:07.28 ID:2OPk25Mu.net]
>>848
解決しました。
ありがとうございます。

870 名前:デフォルトの名無しさん [2025/05/27(火) 20:17:39.42 ID:3QS90eHP.net]
Excelの話ではないからスレ違いなんですが、 Wordのドキュメントの2ページ目の行に文字列を挿入するにはどうしたらいいでしょうか?
2ページ目の〜行目にと言う様な指定はできないのでしょうか?

871 名前:デフォルトの名無しさん [2025/05/27(火) 20:38:35.17 ID:0hlUsnMF.net]
>>851
スレチとわかっていて厚かましい
死ね

872 名前:デフォルトの名無しさん [2025/05/27(火) 20:52:46.35 ID:OuONf5SF.net]
>>852
この馬鹿モンが!

>>851
いい質問ですね
ExcelのほうがメジャーでWordはマイナーなのだけど
WordのVBAをはじめた人にとっては初期段階でやりたい操作なのではないでしょうか?

簡単ではないですが解決策はあります
たしかinformationみたいな名のプロパティを使ったような気がする
(もうWordVBAは数年使ってないから忘れた)
ChatGPT使えば教えてくれるかも

873 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 20:54:35.84 ID:DtCiAPP8.net]
>>853
死ね

874 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 22:13:59.20 ID:JUnNHiQe.net]
>>851
ActiveWindow.ActivePane.Pages(2).Rectangles(1).Range = "文字列" & ActiveWindow.ActivePane.Pages(2).Rectangles(1).Range

875 名前:デフォルトの名無しさん [2025/05/28(水) 00:45:03.58 ID:7WzKj5D7.net]
フォームを作るのに標準のコントロールやAPIでは動かないことがあったから、ついにPowershellで作り始めちゃった

876 名前:デフォルトの名無しさん mailto:sage [2025/05/28(水) 01:00:15.46 ID:+7HocyMO.net]
PowerShellは
System.Collections.Genericが使えるからかなり楽だよなぁ
VBAと違ってフォームデザイナが標準で付いてないのが難だが

877 名前:デフォルトの名無しさん [2025/05/28(水) 07:40:29.71 ID:LbsE8EcH.net]
VSの方が楽なんでは
PS使ったことないけど



878 名前:デフォルトの名無しさん [2025/05/28(水) 08:42:06.86 ID:WNN+73zR.net]
PowerShellはbatと違って、一手間や権限設定が必要と聞いたからやめた震え声
本当にそうなのですか?

879 名前:デフォルトの名無しさん [2025/05/28(水) 08:58:57.33 ID:DZlhdmsz.net]
震え声で言ってるの?

880 名前:デフォルトの名無しさん mailto:sage [2025/05/28(水) 09:02:42.36 ID:3/66YXCT.net]
スレタイを音読してみよう

881 名前:デフォルトの名無しさん [2025/05/28(水) 09:56:27.88 ID:0RI44N1Y.net]
エグザイル ビバ しつもんしる

882 名前:デフォルトの名無しさん [2025/05/28(水) 20:05:51.40 ID:WNN+73zR.net]
VBAでファイルやフォルダのパスはいつも一覧表で利用しているのですが、当然属人化するリスクがあるので、もっと柔軟にパスを設定できる方法を探しています。
今考えているのは、ファイルやフォルダが見つからなかった時にダイアログを開いてフォルダやファイルを選択させ、選択したファイルやフォルダのパスをセルに記入する、と言う方法なのですが、もっと簡単で確実で柔軟な方法はないでしょうか?

883 名前:デフォルトの名無しさん mailto:sage [2025/05/28(水) 20:44:52.08 ID:Z5h4paoG.net]
自分は設定シートを用意して、そこに記述してあるものを参照してる

884 名前:デフォルトの名無しさん mailto:sage [2025/05/28(水) 20:50:09.42 ID:bd87TuSw.net]
ログインユーザーのマイドキュメントをルートにして開く
具体的には「HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal」
のパス

885 名前:デフォルトの名無しさん [2025/05/28(水) 21:40:10.79 ID:WNN+73zR.net]
>>864
その設定用シートに
例えばフォルダやファイルを複数選択した状況で右クリックのパスをコピーでシートに貼り付ける
という事さえも出来ない、わからない人も想定しないといけない訳で、、、

886 名前:デフォルトの名無しさん [2025/05/28(水) 21:58:53.67 ID://Fv0twK.net]
>>863
エクスプローラーからファイルをドラッグドロップ

887 名前:デフォルトの名無しさん [2025/05/28(水) 22:16:15.52 ID:WNN+73zR.net]
>>867
知らなかったです
これができるなら本当に希望が見えてきました



888 名前:デフォルトの名無しさん [2025/05/28(水) 22:18:57.59 ID:QfAx2JsO.net]
馬鹿ばっか

889 名前:デフォルトの名無しさん [2025/05/28(水) 23:46:46.18 ID://Fv0twK.net]
>>868
https://excel.syogyoumujou.com/memorandum/d_and_d_1.html
このやり方が簡単そう

890 名前:デフォルトの名無しさん [2025/05/29(木) 07:11:07.31 ID:cC95Jm/J.net]
>>870
よくよく考えれば当たり前なんだけど、ドラッグ&ドロップで追加する機能もあるんだ
これは便利だ

891 名前:デフォルトの名無しさん [2025/05/29(木) 17:25:49.51 ID:fp+yAGdo.net]
FileSystemObject の TextStream が使えないなら ADODB の Stream を使えばいいじゃない
と思ったら挙動が違ってびっくり

892 名前:デフォルトの名無しさん [2025/06/01(日) 20:16:56.40 ID:wTah86rB.net]
初歩的な質問で申し訳ないですが、マクロ実行中にエラーなどでデバック画面、エディタ画面に移動せずに、エラーハンドリングなどを実行してプロシージャを終了するにはどうしたらいいですか?

893 名前:デフォルトの名無しさん mailto:sage [2025/06/01(日) 21:54:45.65 ID:fzXRF4Kq.net]
>>873
On Error Resume Next

894 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 00:34:11.70 ID:14Td775l.net]
[ツール] [オプション] [全般]
エラーでトラップ
●エラー処理対象外のエラーで中断

ということではなくて?

895 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 00:35:28.23 ID:14Td775l.net]
×エラーでトラップ
◯エラートラップ

896 名前:デフォルトの名無しさん [2025/06/02(月) 07:36:05.35 ID:hx4qvUMZ.net]
>>614
on error goto ラベル名
vba エラーハンドリング で検索して例を見た方が早いよ

897 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 08:46:36.26 ID:IeMpK/LE.net]
>>614
そんなひとつのモジュールに詰め込んだら管理しにくいでしょ。
モジュールは分ける。



898 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 09:24:06.39 ID:3Ov4fjqk.net]
>>878
何を基準にかを書かかないと役立たずじゃない?

899 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 15:03:33.91 ID:DSKTrfoz.net]
馬鹿はそんなことも判らないのか

900 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 15:07:32.82 ID:OjGRkHiP.net]
>>880
スレタイ読めない馬鹿w

901 名前:デフォルトの名無しさん [2025/06/02(月) 19:50:00.14 ID:K2UVQp3e.net]
>>614
ひとつのモジュールにはひとつの役割を
ひとつのプロシージャにもひとつの役割を
与えて書けばいいんじゃない?
もちろん、モジュールとプロシージャでは
与える役割が全然変わってくるけど

例えばモジュールに車という役割を与えたら
プロシージャには走る役割を与えたり

後はセンス

902 名前:デフォルトの名無しさん [2025/06/02(月) 20:06:38.96 ID:Xhmb9taU.net]
ありがとうございます
やはり on error goto ラベル名 なのですね

903 名前:デフォルトの名無しさん [2025/06/02(月) 20:25:45.14 ID:gI3jZeU7.net]
on error resume next
ヤバそうな処理
if err.number<>0 then
エラーリカバリー
end if
on error goto0

904 名前:デフォルトの名無しさん [2025/06/02(月) 20:45:44.86 ID:Xhmb9taU.net]
>>884
エラーが発生している、あるいはしそうな処理がある、というよりは、マクロ実行中にどんなバグでも発生したら、発生した時点で終了させる必要があります

905 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 21:35:59.74 ID:nQl9pEtd.net]
終了前に
err.number = エラー番号
をセットしてジャンプさせるハンドラがいる
こわー

906 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 22:06:18.54 ID:ZCDsMgZ+.net]
Sub Div0()
On Error GoTo Err
MsgBox 1 / 1
MsgBox 1 / 0
MsgBox 1 / -1
Err:
MsgBox "ゼロで割るな、クソが"
End
End Sub

907 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 22:26:41.07 ID:ncJUEcFA.net]
Err: の前で Exit Sub しないと



908 名前:デフォルトの名無しさん [2025/06/03(火) 07:35:55.27 ID:o/OLh2ct.net]
異常が起きる前にファイル開いてた場合、closeしないで終了してしまうとかある

909 名前:デフォルトの名無しさん [2025/06/03(火) 07:39:00.03 ID:/ZJ1mBw3.net]
VBAのツール作りは時間がかかるのが当たり前でしょうか?
作り方は分かっているし、作るツールもたいしたものではないのに、それでも1日2日では終わらないです

910 名前:デフォルトの名無しさん [2025/06/03(火) 10:48:59.43 ID:Kk3A2bVT.net]
ものによる、人による、まともにテストしてるかにもよる

911 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 10:57:06.67 ID:Q0vXXWY4.net]
どうせ著作権侵害や不正アクセスツールだろ

912 名前:デフォルトの名無しさん [2025/06/03(火) 19:25:30.47 ID:gpacmpqZ.net]
>>890
まぁそうだね
だから綺麗に部品化しておくことが大事なんだよ
それを後で使い回せるようにね

913 名前:デフォルトの名無しさん [2025/06/03(火) 20:26:44.49 ID:/ZJ1mBw3.net]
自分が勤めている会社で理解者や協力者を増やそうと、少しでもVBAに興味を示した人や、VBAを齧っている人を相手に勉強会を開催しても、結局VBAがわかる人は少ない
という話を聞きますが、やっぱりVBAといえど、難しいのでしょうか?
Power Queryでもそういう話を聞きます

914 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 21:02:42.93 ID:cgHky4oh.net]
VBAが難しくないんだったらさっさとVBA卒業して本職のITエンジニアになった方が稼げるからねえ
向上心がありすぎてもいけない、中途半端なツールなので

915 名前:デフォルトの名無しさん [2025/06/03(火) 21:09:44.47 ID:Kk3A2bVT.net]
チンタラ残業代稼いでる人にとって効率化は最大の敵
VBAにしろRPAにしろ最大の抵抗勢力よ

916 名前:デフォルトの名無しさん [2025/06/03(火) 22:04:21.82 ID:gr7bEf2i.net]
>>872 で愚痴って終わりなのもアレだから一応書いとく

・事象
 FileSystemObject.TextStream.ReadLine と ADODB.Stream.ReadText(adReadLine) が同じ結果にならない

・原因
 改行コードが CRLF と LF が混じったお行儀のよろしくないファイルだった

・対処
 LineSeparator = adLF として Replace(ReadText(adReadLine), vbCr, "")
 とやったらOKだった

917 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 23:26:25.06 ID:aKU11sxP.net]
>>897
Microsoftのマニュアルよりも詳しい説明
ADODB.Stream: https://atsumitm.iobb.net/its/its-050.php
TextStream:  https://atsumitm.iobb.net/its/its-051.php



918 名前:デフォルトの名無しさん [2025/06/03(火) 23:46:58.61 ID:gpacmpqZ.net]
>>894
VBAは比較的間口が広くてとっつき易い言語ではあるとは思うよ
ただ、何の言語でもそうだけど教える人がいると受動的になりがちで聞いてりゃ分かるようになると思ってしまうのはマズい
聞いてりゃ分かるようになる言語なんて存在しない
分かる人が少ないのは結局、VBAを本当に必要であることを迫られる立場に無いからだと思う
VBA出来なきゃ今いる会社をクビになるくらいに迫られたら大概の人は理解する
でも教えてくれる人がいるということは恵まれたことだと思うよ
このスレにいる大多数の人は恐らく独学で仕事場で使えるようにならざるを得なかった立場なんじゃないかな

919 名前:デフォルトの名無しさん [2025/06/03(火) 23:58:42.71 ID:/ZJ1mBw3.net]
>>899
私も完全独学で覚えました
というプログラミングは独学で学んでいる人ばかりではないのですか?
プログラミングスクールは役に立たないし、かと言って会社は教えてくれない

920 名前:897 [2025/06/04(水) 00:06:22.21 ID:/Ak3M73b.net]
>>898
このサイトぐぐるとよく見かけるようになったけど、詳しすぎて理解できないw

921 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 00:40:57.38 ID:b8XC2mTd.net]
自学できない人はダメだよね

922 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 05:30:19.54 ID:3c6clsCg.net]
独学って、大半の人は言語に固有の文法と、開発環境に依存する実行方法を覚えただけでしょ
だからデータ型の違いとか文字コードとかアルゴリズムとかファイルシステムとか、基本がわかってないから別の言語に手を出せない

923 名前:デフォルトの名無しさん [2025/06/04(水) 06:02:44.09 ID:/hC9EQXc.net]
ここ見てりゃわかるけど、コピペで動いて偉くなったつもりの馬鹿ばっかだから

924 名前:デフォルトの名無しさん [2025/06/04(水) 07:11:35.77 ID:jKpT1SFo.net]
>>903
そうね
それはその通りだと思うわ
だから>>894の言ってる教えている人が
そもそものVBAの基本的な型やら
分岐や演算とかよく使うObjectの扱いとかを
最初に教えていることを切に願うわ

925 名前:デフォルトの名無しさん [2025/06/04(水) 07:34:51.95 ID:BFbm2+Cn.net]
>>900
覚えるのは自分、教わったのに覚えてないようでは学べてない
あと文法は覚えてもアルゴリズムは考えるもの
教わってないからできないって言ってるのは初心者以下な

926 名前:デフォルトの名無しさん [2025/06/04(水) 07:44:26.54 ID:f2CAL3f8.net]
やる必要性がないからやらないけど、Pythonが簡単というならPythonだってわかる気がするし、C言語がFor eachもない様な単純な言語だというならそれはそれでできそうな気もする(Copilotがあるから尚更)。
ローコードにしろスクラッチにしろそれは同じ。

既製品のソフトウェアを導入するか、VBAで作成するかならどちらが安いと思いますか?
もしVBAの方が安いなら世の中マクロだらけだと思うのです。

927 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 08:21:45.39 ID:B6zQeN2g.net]
誰も責任を負いたくない、率先して矢面に立ちたくない方々だらけだから



928 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 08:50:54.30 ID:yTwvetl9.net]
>>907
マクロだらけだよ
それらを管理する人(作成者)が抜けていくから管理不能になる
そういった事象を解決する銀の弾丸としてRPAやノーコードツールが喧伝されたけど、
管理する人がいないって意味では同じなので同じことが繰り返されてる

929 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 10:16:27.04 ID:pOYKhOcI.net]
>改行コードが CRLF と LF が混じったお行儀のよろしくないファイル

CSVなら普通にあるな
行儀の問題じゃない

930 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 10:36:26.59 ID:yTwvetl9.net]
行儀だよ
少なくともRFC上においては行末がCRLFであると規定されてる
ファイルの最後のみがどうでもよい

931 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 11:22:31.03 ID:ZuFYF6Nx.net]
>>907
どっちが安いって、保守コストまで考えて言ってる?
そりゃ作りっぱなしならVBAのが安上がりだけど、それじゃ後で困るって話をしてるんでしょ

932 名前:デフォルトの名無しさん [2025/06/04(水) 12:21:29.23 ID:pOYKhOcI.net]
LFは行末じゃないよ

933 名前:デフォルトの名無しさん [2025/06/04(水) 14:36:42.79 ID:p0LJP29f.net]
CSVの行改行と項目内改行が使い分けられてないわけが無い
使い分けられてなければ復元不可能になる

934 名前:デフォルトの名無しさん [2025/06/04(水) 14:39:56.22 ID:p0LJP29f.net]
>>914
"あれば可能だが無いの見たことあるのよね…

935 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 16:28:29.01 ID:3c6clsCg.net]
標準の改行コードはOSによって違う
CR、LF、CR+LF、LF+CR、すべてのパターンが実在する
フィールドに改行やコンマを含めたい場合、レコードの区切りと違うコードを割り当てる場合もあれば、クォートなどの記号でフィールドの範囲を明示する場合もある
Windows版Excelはダブルクォートでフィールドの範囲を指定するのが基本

936 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 16:30:20.58 ID:3c6clsCg.net]
>>915
それは固定長かセパレータ(コンマ)の数をカウントしてるかどっちかかな

937 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 18:23:31.04 ID:RQn0r/Lq.net]
>>916
CR MacOS(UNIX化前)
LF UNIX、MacOS(UNIX化後)
CR+LF Windows、DOS
LF+CR ← なんてOS?



938 名前:デフォルトの名無しさん [2025/06/04(水) 18:39:20.47 ID:f2CAL3f8.net]
>>909
RPAにしろ、ノーコードにしろ、なんにしろ、そうなりますよね。
結局社内でどれだけ学習意欲のある人を揃えるかによりそう。

939 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 19:22:49.50 ID:7S8kDVf/.net]
>>913
由来のタイプライターを鑑みたらLFは本来行頭に来るべきものだけど、
現実的には行末

940 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 19:55:51.24 ID:frrYvMiA.net]
頑張ってVBA勉強したところでプログラミングスキルとしては流石に時代遅れ&最底辺だし、
事務員としてスキルアップしたいならツールに入れ込むより業務知識を強化した方がいいし、
組織の中で出世したいなら自分でVBA書くより他人に書かせて継続的にスケールする仕組みを作るべき
そして、めでたく業務効率化できたとして、いず」行き着く先は「脱Excelで属人化解消&業務効率化」でVBA職人は悪者扱いだ
本当にVBAを広めたいのなら、個人の意欲に頼るのではなく、組織として適切なインセンティブを設けることだな

941 名前:デフォルトの名無しさん [2025/06/04(水) 20:02:53.71 ID:f2CAL3f8.net]
>>921
結局、経営者次第だよね
まるでITや業務効率化に興味がないなら何もできない
社員の進言に耳を傾けないなら騙されもするし、せ

942 名前:っかく導入したツールは社員にとって非常に使いづらい []
[ここ壊れてます]

943 名前:デフォルトの名無しさん [2025/06/05(木) 00:29:50.41 ID:Nu77Yg2O.net]
>>921
そっか
あなたはこのスレ卒業だね

944 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 08:17:29.72 ID:FSpPjL7A.net]
四行目までは自虐だろ? 言いたいのは五行目だけって意味と捉えたが、どうなんだ
まあ、ちょっと過剰に反応し過ぎなきらいは否めないが

945 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 08:45:28.01 ID:Lp1WVm/I.net]
>>921
組織の中で継続してスケールする仕組み作ったなら属人化してないんだから悪者になる理由なくない?

946 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 09:07:39.20 ID:FSpPjL7A.net]
お利口さんに成ろうとしてアタマでっかちに成り過ぎ
大工だっていろんなレベルもあるし色んな層が大工してる
その場しのぎのやっつけ大工も居れば、客の要望を叶えるために青写真から描ける熟練大工もいる
新人大工なら木の特性とか部材同士の相性とかもよく理解しないまま最新部材使って威張ってみたり
ガルバリウムには使ってはいけない釘平気で使って1〜2年後にはその部分からサビを拡げる原因作って顰蹙買うし
それでも世の中は回ってる
改善なんか数年で変化してくものだ、という前提を踏まえてれば、それに見合うコストで運用出来てれば御の字

947 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 10:31:37.20 ID:1teg7ITB.net]
>>925
コンサルはいわゆるExcelバケツリレーの非効率さを指摘してくるのが常道
VBAで個々人の作業が省力化されてようとフローは変わらないので、実際非合理だから仕方ない
その上で現行業務の調査として関係者全員にヒアリングして介在するワークシートやマクロをつぶさに調査するのにかかる莫大な費用の見積りを提示されると、
もう経営層からはVBA職人なんて非効率な業務を助長するだけの排除すべき敵としか見えなくなるわけよ



948 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 10:49:41.34 ID:1teg7ITB.net]
あと、業務を見直してシステム化しようとした際にVBAが悪者になる大きな原因として、
一見簡単な処理に見えて蓋を開けたらたまに複雑怪奇な難攻不落の化け物が出てくる、ってのがある
これ、Excel中心のワークフローをシステム化する際にはよくある話で、スケジュール遅延や予算超過を引き起こすことが多い
そうなるとシステム部門や現場が経営層に頭下げるのは当然として、上場企業だと株主に経営層が謝罪なんてケースもある
ここまでくるともうVBAなんて悪者もいいとこよ

949 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 10:55:09.32 ID:Lp1WVm/I.net]
それらは継続してスケールする仕組みを作れていない場合の話じゃないの?
複雑怪奇な難攻不落の化け物って、それスケールできる仕組み作れてなくない?
そもそもの話が噛み合ってないよ

950 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 11:09:55.37 ID:1teg7ITB.net]
>>929
隅々まで適切にガバナンスを効かせながら使うならいいんじゃない?
それができるほどの優秀なリーダーがVBAを選ぶかは疑問だけどな
どんな組織でも、人が増えれば馬鹿も増えるし目も行き届かなくなるものだ

951 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 11:27:50.93 ID:Z5osrhWk.net]
Excelバケツリレーは業務や人員を追加していく分にはスケールするよ
後から変更するのが困難でありシステム化が前提なら極めて非合理だけ

952 名前:デフォルトの名無しさん [2025/06/05(木) 17:48:57.22 ID:lb5raFks.net]
>>928
IR出すレベルのVBAは確実に一見簡単そうな処理では無いと思います。
そこまでの規模のシステムなら、それこそ何かしらの製品やサービスを導入してください。

953 名前:デフォルトの名無しさん [2025/06/05(木) 17:54:18.01 ID:lb5raFks.net]
ローコードツールや多言語の方がいいのはその通りだと思います
VBAはOfficeしか扱えないのだから

954 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 18:20:52.21 ID:uYkJABQ4.net]
> VBAはOfficeしか扱えないのだから
AutoCAD、SOLIDWORKS、・・・

955 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 18:33:57.70 ID:Lp1WVm/I.net]
>>933
そうなんだ?知らなかった

956 名前:デフォルトの名無しさん [2025/06/05(木) 20:15:40.58 ID:r0Qxvap7.net]
そもそもパッケージやクラウドサービス使えば、中身は全くわからない
手の出しようがない
自前なら何とかなる
そこをどう捉えるかよ
そもそも基幹システムをVBAで作らないし
(小企業は知らんが)
作っても枝葉よ

957 名前:デフォルトの名無しさん [2025/06/05(木) 20:29:53.99 ID:lb5raFks.net]
>>936
C、CSVで吐き出せればなんとか(震え声)

TYPEを全く使ってこなかったのです。
しかし、この度同じモジュールで多数のstring型の変数を宣言する必要があります。
TYPEデビューしようと思うのですがどうでしょうか?



958 名前:デフォルトの名無しさん [2025/06/05(木) 23:29:45.76 ID:fxlZJI+h.net]
ここで聞かなきゃいけないような馬鹿はやめとけ

959 名前:デフォルトの名無しさん [2025/06/05(木) 23:53:54.23 ID:r0Qxvap7.net]
>>937
type稀にしか使わないので調べたら
CollectionやDictionaryに格納できないと
マジか、知らなかったわ
これに使うならクラスにしたらいいかもね

960 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 23:57:55.29 ID:0HOZWCXV.net]
>>920
リアルタイプライターではLFの位置は任意だよ
行頭とか行末とか関係なく、行の途中でも好きな所でline feedは可能

961 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 01:00:59.18 ID:gfk/0ela.net]
>>940
CRLFはCRが来る時点でLFが行末じゃなくなるって話

962 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 08:39:00.12 ID:cx/TERMm.net]
Enterキーの矢印ってLF-CRだよね
  ↓

CR-LFならこういう向きじゃないとおかしい
  ←


963 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 09:32:23.47 ID:rGtsPzUl.net]
VBAでクラスモジュールを使っていろいろやるのもなしとは言わないけれど、それなら正直JavaとかPythonとかの普通の言語を勉強した方が良いような気もするかな。クラスモジュールって、よくある普通の言語とはちょっと違ったVBA固有の仕様に過ぎないし。

964 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 09:44:39.10 ID:4a1tHPn5.net]
>>943
JavaScript様のプロトタイプに喧嘩売る気か

965 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 10:07:22.76 ID:NfW6LToZ.net]
クラスモジュールはVBA固有というかCOMの仕様
COMの絡まない処理で無理に使う必要は全く無いし、COMを理解してないと不可解な仕様が多い

966 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 10:45:07.80 ID:c6RrnkVo.net]
他言語でクラス使ってたらクラスモジュール作りたくなる病

967 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 11:16:07.96 ID:FmZludjM.net]
COMってどう勉強するんだろ
漠として簡潔な説明がなかなかなく
IUnknownやらなんやら、



968 名前:デフォルトの名無しさん [2025/06/06(金) 11:35:48.78 ID:3VaYoART.net]
InsideCOMを辛抱強く読むのが唯一の道
それ以上の資料もかみくだいた解説書もない

969 名前:デフォルトの名無しさん [2025/06/06(金) 18:33:04.93 ID:lAxJJHmL.net]
っ https://learn.microsoft.com/ja-jp/cpp/mfc/ole-in-mfc?view=msvc-170
https://learn.microsoft.com/ja-jp/windows/win32/learnwin32/module-2--using-com-in-your-windows-program

970 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 18:52:09.71 ID:4a1tHPn5.net]
COMの解説
https://learn.microsoft.com/ja-jp/windows/win32/com/component-object-model--com--portal

971 名前:デフォルトの名無しさん [2025/06/06(金) 19:13:06.68 ID:fJneNGsq.net]
>>939
TYPEは他のオブジェクトに引き渡せないとは聞いていました

結局ディクショナリーで登録しました

972 名前:デフォルトの名無しさん [2025/06/06(金) 20:17:15.03 ID:tc8PGxli.net]
>>951
ディクショナリだとインテリ使えんけど、まあそれでいいなら

973 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 20:34:48.52 ID:2QLQ97JJ.net]
たまにいる勘違い人間 「自分、CやJavaできるから低レベルのVBA(笑)なんてすぐマスターできるし」とか豪語するヤツ

974 名前:デフォルトの名無しさん [2025/06/06(金) 21:03:29.16 ID:fJneNGsq.net]
私はファイルパスやフォルダパスの取得や設定、ファイル名やフォルダ名の作成に冗長なコードを書いている気がしてならないのですが、何かいいコードはないでしょうか?

975 名前:897 [2025/06/06(金) 21:52:26.62 ID:CfJ/EVmD.net]
Typeの代わりにRecordSet使ったりする Field設定いちいちするの面倒だけど
Filterとか使えるしCopyFromRecorSetとかできるし

976 名前:デフォルトの名無しさん [2025/06/07(土) 01:20:40.40 ID:hTJ86lb5.net]
>>954
昔はdirやnameだったけど、今はfso使ってればいいんじゃね

977 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 04:19:49.26 ID:GCIZhVy1.net]
>>954
その程度の処理なら、冗長で困ることなんかほとんどないよ
自分に理解できる形で書くのが、長い目で見れば一番保守性が高いんだから
ちゃんと



978 名前:動いてる物を直そうとして壊すことも多いから、そっとしとけ []
[ここ壊れてます]

979 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 07:03:08.54 ID:QQtzQfGp.net]
>>954
末尾の円マーク有無で毎回処理を分岐させてるのならBuildPathを使え

980 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 09:36:28.54 ID:zGsllLLl.net]
>>954
その冗長なコードとやらを貼ってみれば何が悪いか指摘してもらえると思うぞ

981 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 10:26:27.74 ID:pGBLBsE0.net]
.netの文字列操作ライブラリとか見たらいたせりつくせりで贅沢過ぎるわ!って怒り出しそう

982 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 12:33:58.98 ID:NHsDgqoS.net]
タスクバーのアイコンを取得したくて、下記のサイトのC#をVBAに移植しても、Excelがハングアップする
C#ではちゃんと動く
なぜ?

Dim pUIAutomation As New CUIAutomation
Dim windowElementTray As IUIAutomationElement
Set windowElementTray = pUIAutomation.ElementFromHandle(ByVal hTaskBar)


https://learn.microsoft.com/en-us/answers/questions/115440/how-to-find-taskbar-button-screen-rect-of-a-window

983 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 13:25:32.25 ID:QQtzQfGp.net]
https://qiita.com/Mrs_P/items/5c8070fd880b9deb284a
↑ここの人がVBAで似たようなことやってますね
GetReferenceElementという関数の中に >>961 と同等のコードが書かれているから
hTaskBarの値がおかしいんじゃないの?

これでブラウザの自動操縦できるのかぁ 便利そうだな

984 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 13:32:49.76 ID:NHsDgqoS.net]
>>962
このサイトも見た
hTaskBarの値は、C#版とVBA版で同じ値だったので、正しいと思う。

Chromeのウィンドウハンドルでやった場合は、ちゃんと動いた

985 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 13:58:10.47 ID:QQtzQfGp.net]
これで最後の行まで動いたよ

Dim hWndTray As LongPtr: hWndTray = FindWindow("Shell_TrayWnd", vbNullString)
Dim hWndRebar As LongPtr: hWndRebar = FindWindowEx(hWndTray, 0, "ReBarWindow32", vbNullString)
Dim hWndMSTaskSwWClass As LongPtr: hWndMSTaskSwWClass = FindWindowEx(hWndRebar, 0, "MSTaskSwWClass", vbNullString)
Dim hWndMSTaskListWClass As LongPtr: hWndMSTaskListWClass = FindWindowEx(hWndMSTaskSwWClass, 0, "MSTaskListWClass", vbNullString)

Dim pUIAutomation As New CUIAutomation
Dim windowElementTray As IUIAutomationElement
Set windowElementTray = pUIAutomation.ElementFromHandle(ByVal hWndMSTaskListWClass)
MsgBox "終わり"

986 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 14:07:56.34 ID:QQtzQfGp.net]
もうひとつの方もこれで動いた

Dim hWndTray As LongPtr: hWndTray = FindWindow("Shell_TrayWnd", vbNullString0)
Dim hWndTrayNotify As LongPtr: hWndTrayNotify = FindWindowEx(hWndTray, 0, "TrayNotifyWnd", vbNullString)
Dim hWndSysPager As LongPtr: hWndSysPager = FindWindowEx(hWndTrayNotify, 0, "SysPager", vbNullString)
Dim hWndToolbar As LongPtr: hWndToolbar = FindWindowEx(hWndSysPager, 0, "ToolbarWindow32", vbNullString)

Dim pUIAutomation As New CUIAutomation
Dim windowElementTray As IUIAutomationElement
Set windowElementTray = pUIAutomation.ElementFromHandle(ByVal hWndToolbar)
MsgBox "終わり"

987 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 15:15:58.64 ID:NHsDgqoS.net]
>>965
あ、
Windows 11だと動かないな…

>>964のタスクバーのボタンは動いたけど、
>>965のトレイアイコンは、最後の1行で、やっぱExcelごとハングアップで強制終了するわ
(Set windowElementTray = pUIAutomation.ElementFromHandle(ByVal hWndToolbar))

C#版は、>>965のトレイアイコンもちゃんと動くんだけど…



988 名前:デフォルトの名無しさん [2025/06/07(土) 16:04:31.64 ID:I++ihMYF.net]
>>959
例えばファイルシステムで
フォルダ1の中から指定の文字列を含むフォルダを探して
見つかったフォルダのパスを取得して
さらにそのフォルダの中から指定の文字列を含むフォルダを探して
見つかったフォルダのパスを取得して
そのフォルダの中に指定のフォルダがあるか確認してなかった場合はフォルダを作成するコードです
2〜3回同じ様な事を繰り返しているので冗長な気がしてなりません

989 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 16:09:10.87 ID:WTKqP7i+.net]
>>967
それそのままAIに投げたら一瞬で書いてくれるよ

990 名前:947 mailto:sage [2025/06/07(土) 16:28:51.74 ID:ADmBeqPj.net]
>>948, 949, 950
ありがとうございます

マイクロソフトのサイトは機械翻訳がどうも…、と敬遠していましたが、参照してみます
それから洋書、かぁ…

991 名前:デフォルトの名無しさん [2025/06/07(土) 17:36:52.86 ID:hTJ86lb5.net]
>>967
それを平で書いてるなら冗長
再帰処理でやるのがあるべき姿
まずは指定フォルダ下の全フォルダを出力する再帰処理書いてみ
(全てが再帰処理ではない。呼び出し元処理と再帰処理の2つ書くことになる。念の為)

992 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 17:47:31.26 ID:QQtzQfGp.net]
>>966
Windows11はタスクバーに使われてるクラスが変わってるらしいから関係あるかもよ
https://www.autohotkey.com/boards/viewtopic.php?style=19&t=108539
AHKにクラス名を調べるツールがついてたような

993 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 17:55:49.45 ID:nK7i38Q0.net]
>>967
こんなのかな
>フォルダ1(Path1)の中から指定の文字列を含むフォルダ(Pattern1)を探して見つかったフォルダのパス(Path2)を取得する

Path2 = GetPatternPath(Path1, Pattern1) As String

>さらにそのフォルダ(Path2)の中から指定の文字列(Pattern2)を含むフォルダを探して
>見つかったフォルダのパス(Path3)を取得する

Path3 = FindPatternPath(Path2, Pattern2) As String

>そのフォルダ(Path3)の中に指定のフォルダ(Pattern3)があるか確認してなかった場合はフォルダを作成するコードです

result = CheckPatternPath(Path3, Pattern3) As Boolean
If result Then
Call MakePatternPath(Path3, Pattern3)
End If
あとは関数の中身を書くだけ

994 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 18:21:21.32 ID:QQtzQfGp.net]
>>967
ShiteiNoMojiretsu = "指定の文字列"
Shitei = "指定"
Path = "C:\フォルダ1"
Path = Path & "\" & Dir(Path & "\*" & ShiteiNoMojiretsu & "*", vbDirectory)
Path = Path & "\" & Dir(Path & "\*" & ShiteiNoMojiretsu & "*", vbDirectory)
If Dir(Path & "\" & Shitei, vbDirectory) = "" Then
MkDir Path & "\" & Shitei
End If

995 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 18:49:45.58 ID:NHsDgqoS.net]
>>971
んー

でも、C#ではちゃんと動くので、VBA側の問題な気が…
クラスが変わってるのも知ってる。

996 名前:デフォルトの名無しさん [2025/06/07(土) 22:19:45.07 ID:I++ihMYF.net]
>>970
やっぱりそうですよね
再帰処理を頑張って覚えます

997 名前:デフォルトの名無しさん [2025/06/08(日) 02:30:07.18 ID:bVJzS0fI.net]
>>975
そやね
たったこれだけでフォルダ階層どこまでも潜れるのかと感動すると思う
(かもしれないw)
フォルダ再帰ができたら各全ファイル名列挙も再帰処理の中に追加しとき
いつか使う時が来る



998 名前:デフォルトの名無しさん [2025/06/08(日) 03:49:16.50 ID:kACuu3za.net]
こんなので偉そうにする馬鹿

999 名前:デフォルトの名無しさん [2025/06/08(日) 10:13:48.24 ID:szoadHGe.net]
>>977
わざわざ「私バカです」って手を挙げて出てきてどうした

1000 名前:897 [2025/06/08(日) 10:59:09.81 ID:BE7fUg1L.net]
>>976
昔だったら stack overflowとか心配してたけど今はあまり気にしなくて良さそうだね

1001 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 11:01:04.08 ID:j4jIPbHU.net]
.netのAPIラッパー関数もソース見ると大抵泥臭い事やってんのよね

1002 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 11:03:50.75 ID:4qkaLQIW.net]
スタック領域は昔からほとんど変わってないから気にする必要はある

1003 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 11:07:37.10 ID:j4jIPbHU.net]
Excel VBA 質問スレ Part83
https://mevius.5ch.net/test/read.cgi/tech/1749348402/

1004 名前:897 [2025/06/08(日) 11:11:01.02 ID:BE7fUg1L.net]
>>982
乙彼
>>981
共有サーバのアドレス変わった時、全フォルダの奥までショートカット探して書き換えたけど
何ともなかったからそんなもんだと思ってた

1005 名前:デフォルトの名無しさん [2025/06/08(日) 12:43:48.49 ID:gXHyLlYW.net]
>>976
再帰処理のコード自体はわかるのですが、If文で再帰処理をする、しないまでは考えてなかったです

1006 名前:デフォルトの名無しさん [2025/06/08(日) 14:43:09.01 ID:bVJzS0fI.net]
>>984
if?
途中から折り返す時のこと?
それなら必要

1007 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 16:28:21.07 ID:46RFXcFD.net]
2階層しか掘らないのにわざわざ再帰処理にするかなぁ



1008 名前:デフォルトの名無しさん [2025/06/08(日) 16:56:20.91 ID:DI4VVn6/.net]
>>978
構ってもらうのも大変なんだぞ
察してあげなきゃ

1009 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 17:17:56.33 ID:8915HtnW.net]
>>983
スタックさせたまま全ファイル走査なんてしないだろうから、
ファイルの数何個あろうが同じでは?

1010 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 19:19:30.01 ID:4BwIalv3.net]
ソース的に簡単にするなら全ファイルのフルパス取って正規表現だな

1011 名前:デフォルトの名無しさん [2025/06/09(月) 07:30:24.52 ID:UIpY0QNU.net]
フォルダのショートカットファイルがある場合の動作確認はした方がいいぞ

1012 名前:デフォルトの名無しさん mailto:sage [2025/06/09(月) 08:19:56.01 ID:EHQrQQev.net]
シンボリックリンクとジャンクションとハードリンクも動作確認した方がいいぞ
パスが255文字超えた場合も動作確認した方がいいぞ

1013 名前:デフォルトの名無しさん [2025/06/10(火) 20:52:05.68 ID:RKOrDLCJ.net]
VBAのfor eachやfor nextでif文を使用して条件に合わなかった時にnext するにはどうしたらいいでしょうか?

1014 名前:デフォルトの名無しさん mailto:sage [2025/06/10(火) 21:05:38.20 ID:94f6xD2K.net]
forの中をDo-Loopで囲んで脱出したい時はExit Doする

1015 名前:デフォルトの名無しさん mailto:sage [2025/06/10(火) 21:05:45.22 ID:zK5HBYNC.net]
>>992
VBAでFor EachやFor Nextループ中に条件に合わない場合に次のループに進むには、If文を使い、条件が合致した場合のみ処理を記述します。
' For Each の例
For Each item In collection
If 条件 Then
' 条件に合った場合の処理をここに書く
End If
Next item

' For Next の例
For i = 1 To 10
If 条件 Then
' 条件に合った場合の処理をここに書く
End If
Next i

Elseブロックを記述しないことで、条件が合わない場合は自動的に次のループへ進みます。

1016 名前:デフォルトの名無しさん mailto:sage [2025/06/10(火) 21:17:29.25 ID:KLsW+s5l.net]
next の手前にgoto

1017 名前:デフォルトの名無しさん [2025/06/10(火) 21:35:49.89 ID:chtn5cci.net]
gotoでnext前のラベルに飛ぶ。ラベルは
CONTINUE_1:
など



1018 名前:897 [2025/06/10(火) 21:41:20.79 ID:4RtejL7X.net]
C言語の呪いから解けずにGoTo使いにくい俺

1019 名前:デフォルトの名無しさん mailto:sage [2025/06/10(火) 21:55:14.34 ID:qJv58WHL.net]
無理して使うもんじゃない
そもそもifで処理せずにnextさせたいなら、
逆にifで処理させれば条件に当てはまらなければnextになるんだし

1020 名前:デフォルトの名無しさん [2025/06/10(火) 21:57:34.45 ID:YNq6kTxr.net]
馬鹿ばっかで呆れるスレ

1021 名前:デフォルトの名無しさん [2025/06/10(火) 21:58:07.04 ID:YNq6kTxr.net]
馬鹿ばっか

1022 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 137日 18時間 26分 52秒

1023 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<280KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef