Excel VBA 質問スレ Part82

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2025/01/24(金) 03:31:15.25ID:l239yW+P
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/
548デフォルトの名無しさん
垢版 |
2025/05/01(木) 23:23:13.02ID:15supz3z
スレチだけど
やっとPowerQueryの変数宣言、代入、for each、無名(名前付き)関数がわかった。
.Buffer早すぎ
2025/05/02(金) 00:25:17.81ID:+dCfSpYU
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式の中身をワークシートに書き出せるのね
550デフォルトの名無しさん
垢版 |
2025/05/02(金) 01:50:51.67ID:TLbUOI0p
>>549
いやん見ないで照
551デフォルトの名無しさん
垢版 |
2025/05/02(金) 06:41:36.56ID:TLbUOI0p
前に言っていた、Power Automateみたいにコードブロックを入れたら、作成したコードブロックだけで有効な変数が自動的に作成されて、コードブロックを抜けたら変数が削除される、コードブロックごとに変数が一意、コードブロックがカプセル化、秘匿化されている、もはやコードブロックがサブプロシージャ、ファンクション関数っていうの、関数型プログラミングの事だったんだな
552549
垢版 |
2025/05/02(金) 06:43:09.29ID:+dCfSpYU
そんな、他人を痴漢扱いすなw

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

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

ここから親子関係の一覧表を作る、次のプロシージャは
正規表現検出をどう扱うか、相談しながらチューニング中なんだけど。
553デフォルトの名無しさん
垢版 |
2025/05/02(金) 07:20:32.31ID:TLbUOI0p
ワイはCopilotにsheet.copyで作成した新規ブックのクエリを削除するにはどうしたらいいですか?
のコードでマクロ実行ブック(コピー元)のクエリも削除された泣

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

TypeScriptでは静的型付けの様に、バグの無いコードというのは、できる事、やれる事、受け付ける操作を限定する事だと思う。
何でもかんでもできる、受け付けるというのはバグの元だよ。
554デフォルトの名無しさん
垢版 |
2025/05/02(金) 07:59:38.75ID:TLbUOI0p
VBAは変数を宣言しなくても変数が使用できるし、Variantは中のデータの型を判断するし、動的型付けだった😫
宣言を強制しているし、型指定もしているからすっかり忘れていた
2025/05/02(金) 08:41:13.69ID:IByDjNOR
>>549
WorkbookQuery初めて知った
面白そうだな
2025/05/02(金) 09:45:33.14ID:G++s7sQD
>>551
Power Automateって使ったことないので分からないんだが、多くの言語で一般的ないわゆるブロックスコープとは別物なの?
557デフォルトの名無しさん
垢版 |
2025/05/02(金) 12:34:26.30ID:FVfG1Al+
>>556
同じなんだけど、
Power Automateはループ処理のアクションを追加すると自動的にvbaでいう for i の i とか for each 変数 の 変数が自動的に宣言される

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

個別に変数を自動的に宣言してしかも管理も把握も一目瞭然だと、これからの時代はそれぞれのアクション、ブロックが一つのオブジェクト、関数みたいになるのがスタンダードで、しかもさらに進化するのかなと思う
2025/05/02(金) 13:08:27.70ID:i8P7c2SF
だからそんなもん20年前から他の言語では一般的だし、
PowerAutomateって複雑なことやろうとすると共通の変数を複数ステップに渡って弄り回すことになって簡単にVBAの糞コードみたいになるよ
変数のスコープに関する君の考えは一般的には正しいが、残念ながらPower Automateは君が期待しているようなものではない
2025/05/02(金) 13:46:02.65ID:G++s7sQD
スコープが別なことが分かっていれば、ループ変数は同じ名前の流用でも特に問題は起きないような気もするけれど。まぁでも便利なんだろうね。
ブロックスコープがない言語もそこそこあるような……。Pythonとか昔のJavaScriptとかは、関数スコープはあるけれどブロックスコープはないよね。
2025/05/02(金) 16:53:20.86ID:nKjy1k/M
ブロックがあればええ
2025/05/02(金) 19:06:46.82ID:ngu+xaVd
全てグローバル
変数名も文字数制限あり

BASICとはそういうものだ
562デフォルトの名無しさん
垢版 |
2025/05/02(金) 20:16:54.76ID:KF55o+fS
変数名といえばおまえら Option Explicitしてるの?
俺はうっかりさんでスペルミスしがちだから外せないけど
2025/05/02(金) 20:38:35.86ID:sdnBjLxl
しない理由がない
2025/05/02(金) 20:55:10.60ID:1BRp4bnH
あれ消えないようにして欲しい
565デフォルトの名無しさん
垢版 |
2025/05/03(土) 05:59:05.73ID:2+JR0EAo
今更ながらブックオープン 読み取り専用のコードだけを書いたfunction関数を作れば短い文字数でブックを開いて変数に代入できるって気づいたんだけど
もっと有用なコードはありますか?
さらにテーブルをセットするfunctionとか、ディクショナリーの作成、登録するfunctionとかもいいな
2025/05/03(土) 07:20:36.45ID:0JGyOYLe
自分だけが読み書きするコードならそれもありだと思うけど、一般論としては、文字数を少し節約できるというくらいしかメリットがないなら、あえてラッパーを作る意味はあまりないような気がする。
2025/05/03(土) 09:23:52.05ID:Hazt22aJ
>>565
短い文字数が有用ならコメント付けないで変数名とか全部1文字にしたらいいんじゃね
2025/05/03(土) 10:20:15.15ID:VRj6VpYS
使用回数によるよね
同じ操作が何回も出てくるなら適当なラッパー書いてあげると見通し良くて親切かなと
もちろんコメント付きでね
2025/05/03(土) 11:20:28.73ID:F8pywi6k
そのプロジェクト内では1回しか使わなくても、よくある定形処理は関数にまとめた方がいい
文字数を減らす必要はないけど、行数は少ない方がデバッグがしやすくなる
2025/05/03(土) 16:42:04.86ID:h9Jrb8E+
1ファイルに全部書く
571デフォルトの名無しさん
垢版 |
2025/05/03(土) 17:16:40.74ID:2+JR0EAo
ラッパーというのですね
ありがとうございます
function関数やサブプロシージャは短い方がいい(一つの処理しか行わなくてもいい、行わない方がいい)
一回しか使用しない処理でも、メインプロシージャから切り分けた方がいい
と聞いていましたが、これはラッパーというのですね
2025/05/03(土) 18:50:44.41ID:ocHu15P2
ぱっぱらぱー
2025/05/03(土) 21:38:51.92ID:Hazt22aJ
お鍋の中からインチキおじさんが登場しますた
2025/05/03(土) 22:43:16.33ID:aLoX39eB
ぴーひゃらぴーひゃら
2025/05/04(日) 07:28:49.39ID:ajXSlqYh
ラッパーというのは、元の関数とかにガワを被せた(つまり、その中で元の関数を呼び出している)関数とかのことね。包装するとかの意味のラップ。念のため。
2025/05/04(日) 08:17:46.31ID:kPdoN8ak
ラッパーとインターフェースはどう違うのっと
2025/05/04(日) 09:35:43.88ID:VN1fyBP0
インターフェースは、抽象的にいえばひとまとまりと観念されるコードの塊(クラスとかモジュールとか)同士の間の境界、その境界に接するコード部分かな。インターフェースを介して情報のやり取りを行うに際して互いの前提が異なる場合には、そのままでは情報のやり取りができないので前提を合わせる必要がある。ラッパーはそのために使われることもあるけれど、基本的には全然別の概念。
578デフォルトの名無しさん
垢版 |
2025/05/04(日) 16:30:55.85ID:IQyuDcpS
>>571
それはモジュール分割

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

ラッパーはラッピングだから、モジュールを包むモジュールというイメージ
579デフォルトの名無しさん
垢版 |
2025/05/04(日) 16:35:24.36ID:IQyuDcpS
>>577
質問者じゃないけど、あなたの説明は入出力のインターフェース
質問者はオブジェクト思考のインターフェースのことを聞いているとおもわれる

インターフェースはモジュールに決まったメソッド、プロパティを持たせるための骨格となる設計の定義
特定のインターフェースを継承させることで、そのクラスにはどういうメソッド、どういうプロパティがあるのか調べなくてもわかるようにできる
2025/05/04(日) 21:24:05.55ID:NkPvwNmC
具象クラスの(>>577の意味での)インターフェイスを規定する抽象クラス(抽象基底クラス)それ自体のことをインターフェイスと呼ぶのは、オブジェクト指向というよりもJavaとかから広まった用語法なのでは。
個人的には、インターフェイスという語の本来の意味はあくまでも577のようなものであって、Javaとかでいうインターフェイスはそこからの派生とか転用として位置付けられるべき用語法だと思うかな。
ただたしかに、Javaみたいな意味でインターフェイスという語を用いることの方が(プログラミング関係の文脈では)もはや多いのかもしれないし、質問した576の意図もそちらにあったのかもしれないね。
581デフォルトの名無しさん
垢版 |
2025/05/04(日) 21:50:46.14ID:6QG7+rqM
PowerQueryでの動的な繰り返し処理を理解したら、VBAにもList.Select関数とかText.PositionOfのOccurrence.Allとか欲しい
582デフォルトの名無しさん
垢版 |
2025/05/05(月) 01:42:23.95ID:6skGH2rL
自分で実装すればいいじゃん
2025/05/05(月) 09:14:01.67ID:8n1c0Fvg
実装は難しくはないだろうけど、汎用的に使える便利な関数はできれば組み込みで持っていて欲しいという感覚は分かる。
584デフォルトの名無しさん
垢版 |
2025/05/05(月) 10:45:35.51ID:NKQxWENO
配列の中に、対象に含まれているものがあれば、配列から取り出す、
っていう処理だから、内部処理的には、結局配列を全てチェックしていて意味がないのかな
2025/05/05(月) 10:46:27.32ID:Q8K4+hk+
自分が欲しいと思ったものは誰かがすでに作ってる
作るよりAIに聞いた方が早い
2025/05/05(月) 11:03:49.52ID:20YqVkB+
>>579
InterfaceはJava用語
TraitはRust用語
Excelでは何と言うのか?概念がそもそも無いのか?
2025/05/05(月) 11:43:00.38ID:EffckoF6
VBAにもInterfaceという機能があり見た目はJavaに似ている
しかし実質的にはCOM相互運用専用の機能であり、JavaのようなInterfaceは無いと考えて差し支えない
そもそもクラスメンバへのアクセスは常にダックタイピングなのでInterfaceはあってもなくても何の影響もなく、特に意味はない
588デフォルトの名無しさん
垢版 |
2025/05/05(月) 13:17:06.42ID:bvP/AgOh
今時のプログラミングの考え方とか、関数型プログラミングというのは、ワークシート関数でいうindex関数とmatch関数の組み合わせの検索関数や、
マッチ関数とoffset関数とcount if関数の組み合わせによるプルダウンリストの絞り込みの様な、
一つのセルに対して関数のネストはやめましょう、
一つの関数は一つの答えを返しましょう、という認識なのですがどうなのでしょうか?
2025/05/05(月) 13:26:58.67ID:qohU83nC
入門書読んだこと無いの?
2025/05/05(月) 13:37:24.10ID:EffckoF6
違う
関数型プログラミングってのは、VBAなんか使わずにワークシートの式と関数だけで作りましょう、というものだと考えるとイメージしやすい
正確には、副作用のない式や関数だけを組み合わせてプログラムを作るのが関数型プログラミングで、Excelのワークシートはその一例
VBAでも注意深くやれば副作用のない関数だけで作ることは可能だが、それができるスキルの奴はVBAなんか使わないだろうね
2025/05/05(月) 17:39:10.53ID:ueUnqmHR
関数型プログラミングは入門記事でちょっと齧ったくらいだけど自分にはムリそうだなーと思った。
VBAとかPythonとかの手続型言語で書く分には、@決定性や副作用を意識する、A言語に取り入れられた関数型言語由来の構文(Pythonでいえば、イテレーター、内包表記、構造的パターンマッチとか?)を使うというくらいで十分じゃんじゃないかなぁ。
本格的に関数型でやるぞっていう人なら関数型言語(HaskellとかOCamlとか?)を使うんだろうし、そこまでは頑張れないけど手続型言語を書く際に関数型言語の考え方を参考にしたいという程度なら、上記@Aくらいでお茶を濁しておく感じになるのではないかと。
592デフォルトの名無しさん
垢版 |
2025/05/05(月) 22:54:48.45ID:bvP/AgOh
オブジェクト指向でカプセル化とか言っていたけど、結局はその理想通りにはならなかった。
その反省で生まれたのが関数型プログラミングという理解です。
関数には引数を引き渡す事と戻り値を受け取る事しか絶対にできない。
横槍も茶々入れも鶴の一声もない。
関数は一つのだけの事しかできない。
だからバグらない、誰がやっても結果は同じ。
593デフォルトの名無しさん
垢版 |
2025/05/05(月) 23:40:24.40ID:fQ8xBj6s
関数型プログラミングはオブジェクト指向よりも圧倒的に古い
2025/05/06(火) 01:25:53.28ID:AZSw2w0R
関数型において関数は引数を受けることと戻り値を返すことしかできないというのは正しいのだけど、
鬼門なのは関数そのものを引数として渡したり関数の戻り値として関数を返したりできるところ
それにより関数型プログラミングは飛躍的に自由度と難易度が上がり、>>592の頭だとたぶんそこで挫折する
595デフォルトの名無しさん
垢版 |
2025/05/06(火) 06:45:59.65ID:j1SFEq5D
>>594
まさに今それをやろうとしていますね
引数に関数を渡そうとしているの
値を引数にしたいけど、関数をネストせざるを得ない
2025/05/06(火) 07:24:57.73ID:Gnnon1y6
引数として関数そのものを渡したり、戻り値として関数そのものを返したりできるかは言語仕様の問題だから、言語によってできるかできないかは決まっている。VBAではできない。
2025/05/06(火) 08:15:59.98ID:Gnnon1y6
念のためだけど、
@ある関数(関数A)の引数の一つとして、他の関数(関数B)からの戻り値を渡すこと(大袈裟に言えば、関数呼び出し式のネスト?)と
Aある関数(関数A)の引数の一つとして、他の関数(関数B)そのものを渡すこととは、違うことだよ。
C言語もVBAと同じく、関数そのものを他の関数の引数として渡したりすること(上記A)はできないが(もっとも、関数へのポインタを渡すことによって同等のことは実現できる)、上記@はできる。

さらにいえば、関数を引数として渡せたり、戻り値として返したりできる(関数が第1級の値である等と表現されることも多い)というのは、関数型プログラミングのおそらく必要条件にはなるのだと思うけど、だからといってこれらの性質があれば関数型言語というわけでもない。JavaScriptとかPythonとかは関数が第1級の値である言語だけと、いわゆる関数型言語とは言われていないと思うし。
VBAは、構文的にはJavaScript、Pytnon、C辺りと比べても関数型プログラミングからより遠い位置にいる言語だと思うので、あまり関数型にこだわる必要はないのでは? 実践的には、関数の決定性と副作用の有無に意識的になるだけでも、それなりのメリットはあると思う。
2025/05/06(火) 09:32:02.27ID:ePr8aXMn
あとこれは割とどうでもいいことだけど、関数の戻り値を他の関数の引数にすることを「関数のネスト」ということは、普通はあまりないのではないかなぁ(関数呼び出し式のネストという趣旨だとすれば意図は通じるけれども)。
普通は「関数のネスト」といわれれば、関数定義のネスト(関数内で定義された関数)の方を想起すると思う。
2025/05/06(火) 09:47:26.27ID:K1Pjz07i
pythonの凸レータは関数型らしいし関数のネストっぽく観える
600デフォルトの名無しさん
垢版 |
2025/05/07(水) 23:18:41.10ID:5rQjCI4p
関数型プログラミングは手続きという処理を見せないだけで、ロジックを隠すことでシンプルな見た目にするもの。

歴史上、常にこういう発想が何度も出てきているが、見た目をきれいにしたいだけで仕様の変更に耐えられない構文であることから、一度も主流になったことがない。
601デフォルトの名無しさん
垢版 |
2025/05/07(水) 23:48:45.09ID:8NEt0qiL
>>600
全然違うと思いますけど?
結局大勢の人で手続き型プログラミングを作ったところでバカだらけ
2025/05/08(木) 01:43:07.29ID:eAkjlYW3
VBA使ってる人間が他言語批判は草
603デフォルトの名無しさん
垢版 |
2025/05/08(木) 01:56:21.88ID:hlDlUBWZ
VBAは俗人化するのでは?なんて質問を会議でこのご時世に言われるとは思わなんだ
優しく答えて大恥かかせてしまったけど少し悪かったかも
2025/05/08(木) 03:20:26.19ID:Mm7IQCJP
設計と管理がちゃんとしてれば関数型だろうがプログラムは作れる
だいたいは見積もりが甘いかドキュメントの整備がおろそかになってるだけ
605デフォルトの名無しさん
垢版 |
2025/05/08(木) 06:36:17.83ID:rpgtocHg
VBAの何が属人化するの?
他の本格言語、例えばC++と何が違うの?
606デフォルトの名無しさん
垢版 |
2025/05/08(木) 07:04:16.42ID:KsTAlec+
単純に用途が限定的なのでわざわざ覚える人が少ないのよ
2025/05/08(木) 07:25:23.15ID:jLg0E+bB
関数型言語が主流になったことがないというのは事実だろうけど、関数型言語による宣言的なプログラミングスタイルに何かしら限界とか制約があるからなのか、それとも単に難しいからなのかはわからないな。関数型言語をある程度使いこなした経験がある人には分かるのかもしれないが。
2025/05/08(木) 07:39:13.07ID:jLg0E+bB
状態を数多く管理しなければならないようなプログラム(GUIとか?)はちょっと苦手と聞いたことごあるような気もするが、今はどうなんだろう。
2025/05/08(木) 08:15:37.11ID:Im8CJRBo
VBAに限らず、属人化のリスクは「協業の仕事」共通やな
当たり前っちゃ、当たり前だが

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

10年も使い続けられるような制作物ならとっくに償却できてるし、その会社の立派な資産
2025/05/08(木) 10:03:03.06ID:a9PTljx+
話がループしてるな
612デフォルトの名無しさん
垢版 |
2025/05/08(木) 10:09:29.45ID:D3KgMrbS
Exit vba
2025/05/08(木) 10:11:28.02ID:RKaJBu95
属人化の話題はVBAスレの華だからね。VBAがアイデンティティになっているタイプの人には譲れない話題なんでしょ。

今は、昔と比べて他の言語に触れてからVBAもやるという人が増えているのかな。VBAが最初に触れた言語ですという人の割合ってどれくらいなんだろう。
2025/05/08(木) 10:29:57.11ID:a9PTljx+
モジュール分ける意味と基準が判らない
全部のプロシージャを一つのモジュールに詰め込むのは何が悪いの?
2025/05/08(木) 10:32:44.22ID:G5GTs1je
Exile VIVA!
2025/05/08(木) 10:41:00.38ID:719LxqHN
>>614
VBAレベルなら全部一つでいいよ
分割したくなるほど大きくなるようなら全体の業務フローを見直すべき
2025/05/08(木) 10:54:42.11ID:RKaJBu95
一般的な言語だと、機能分割や名前空間の分割のためにモジュールを分けるのでは。
モジュール分割の基準については、凝集度(高い方が良い)とか、結合度(低い方が良い)とかの概念でいろいろ議論されているみたい。
ただ、正直、VBAのモジュールっていろいろと特徴的なので(クラス定義はクラスモジュールで行う必要があるとか)、モジュール分割が必要な規模ならVBAではあんまり書きたくないかな。
2025/05/08(木) 12:10:22.44ID:8ptxnmrn
今は改善されてるのかも知れないが
名前ちょっと変えただけで行方不明になることは良くあった
619デフォルトの名無しさん
垢版 |
2025/05/08(木) 18:48:55.03ID:rpgtocHg
私はモジュールをコードの使用目的で分けているな
ブックマークみたいな感じ
あと特定のアプリケーションを操作する時は、関係する変数、オブジェクトをひとまとめにしたりとか
もっと何も気にせず使えるのなら、アドインにコードをまとめて共有したりもするんだろうな
2025/05/08(木) 20:28:48.50ID:Qp1M/T2r
皆さんVBAでどのくらいコードを書きます?
1000行くらい?
621デフォルトの名無しさん
垢版 |
2025/05/08(木) 21:11:25.68ID:kNzCbrU5
シートごとにモジュール分けてる...
622デフォルトの名無しさん
垢版 |
2025/05/08(木) 21:26:36.63ID:ownVsw/K
>>620
必要に合わせてかなり書くよ
1000は小規模
623デフォルトの名無しさん
垢版 |
2025/05/08(木) 21:34:26.78ID:hlDlUBWZ
そういうところがセンスないんだよな
僕は詳しい僕は長くかける
で自己満足して社内の評価も年収も低いっしょ
火の玉ストレートでごめん
624デフォルトの名無しさん
垢版 |
2025/05/08(木) 21:49:23.37ID:rpgtocHg
可読性の高いコードは、処理を一つ一つ、行を書く事だと思います
あと、エクセルだとRangeだのCellsだの、英語や数字になるから、それぞれ変数で名前をつけて変数に代入して可読性を上げるとか
625デフォルトの名無しさん
垢版 |
2025/05/09(金) 07:31:44.14ID:Y+GhIEwV
うちの職場だけ特殊なので
全体のシステムが大きいからコードも必然的に大きくなるだけ
その中の個々の機能では1000行以下の機能もたくさんあるよ
2025/05/09(金) 08:00:17.09ID:zNQNct04
RPA!RPA!って少し前もてはやされてたけど、
速度的にも手順的にもVBAでよくねって案件多かったよね
627デフォルトの名無しさん
垢版 |
2025/05/09(金) 12:28:57.25ID:piOnFv34
そうなか、自分のとこだけで精一杯で世間知らずになってるかも
628デフォルトの名無しさん
垢版 |
2025/05/09(金) 18:28:31.58ID:HJ6RQEwc
VBAで済むならVBA
RPAの方が楽ならRPAってだけ
RPAの方が楽なのにVBAで書くのはバカ
629デフォルトの名無しさん
垢版 |
2025/05/09(金) 18:30:10.14ID:HJ6RQEwc
>>628
ちょっと一行目が合わんな(寝起き)
2025/05/09(金) 18:41:10.42ID:zNQNct04
何が楽かって視点がないからRPAが廃れたってことをわかってなさそうなレス
631デフォルトの名無しさん
垢版 |
2025/05/09(金) 22:10:08.68ID:p2pcYwx2
そもそも論として、使い方を学ぼうとしない人が大勢なのに使いこなせるわけがない
kintoneだろうがなんだろうが
銀の弾などない
632デフォルトの名無しさん
垢版 |
2025/05/09(金) 22:37:09.74ID:p2pcYwx2
文系管理職なのに業務アプリをシュシュっと作れちゃう俺

あるわけないだろバーカ
絶対スカラ値の原則を無視したり、列を繰り返したりしてるわボケ
633デフォルトの名無しさん
垢版 |
2025/05/10(土) 02:15:51.46ID:2PI0HY+M
豊川悦司「俺ー♪」
634デフォルトの名無しさん
垢版 |
2025/05/10(土) 13:05:37.78ID:IWhliTad
無から有は難しいよね、環境や周囲の協力がないと
2025/05/10(土) 13:13:10.16ID:APagMvUq
業務効率化程度の仕事なら、無から有は勝手にやりゃいいだけだから難しくない
周囲を巻き込んだとしてもどのみち最終的には言い出しっぺが責任持ってやれよという感じにしかならん
有から別の有の方が遥かに難しい
2025/05/10(土) 13:23:47.83ID:TkZSyEZj
誰かがVBAなんかで半端に作っちゃったものを、こんなもんSaaSでいいだろと移行させるみたいなのは難しい
必ず、決まった業務を回すしか能のない人達が重箱の隅をつついたり牛歩戦術をしてみたりと必死に抵抗してくる
2025/05/10(土) 13:31:42.36ID:HZyfRGTg
金がかかるとなるとそりゃそうでしょ。
2025/05/10(土) 13:49:08.55ID:tG+fugNq
いや、経験上、金を問題にするのはある程度上の立場の人間なので、本質的でないしょーもない業務影響はあまり問題にしない。
〇業務を〇時間削減できるから人件費換算で導入コストと利用料を上回る効果が見込めますと説明できればよい。
くだらないことで難癖を付けてくるのは現場の人間。
639デフォルトの名無しさん
垢版 |
2025/05/10(土) 14:05:58.61ID:3Mk2sCKg
>>630
何が楽かさえわかってないのかよw
2025/05/10(土) 14:09:45.85ID:644AQTJb
無から有ってのは、何であれ産みの苦しみって奴で、社会でも人生でもあらゆる場面で起こり得る
有から別の有ってのは例えが判らんが、αというシステム化された処理が有って、その結果を元に
別のβを作ろうとしているのか、或いはαの改善品αUを作ろうとしているのか
前者なら無から有と一緒だし、後者なら元と成ってる最初のαを精査すればいいだけ
こんなもんSaaSでいいだろと思い込んでしまった原因を自省してみて、うかうか宣伝文句に釣られてただけと
理解出来たら儲けもの じぶんで実際にSaaSに移行してみて一年位稼働させてそれでも一切問題が発生しない
事を確認してから提案するぐらいの努力は発言する前に済ませておくべき
やってみましたできませんでしたは、殊営利を目的とする企業では落第の烙印を押されるだけ
プロトタイプ・試作品も無いまま実務で運用することほど無謀な試みは無い 旧日本軍大本営方式でしか無い
2025/05/10(土) 14:31:05.56ID:HZyfRGTg
>>638
利用者が習得するまでの学習コスト考えてる?

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


今よりこれだけ簡単になりますって話なら反発も少ないのでは?
2025/05/10(土) 14:39:47.45ID:tG+fugNq
>>641
だからそれを含めて難しいって話でしょ
2025/05/10(土) 16:34:23.69ID:ngauQQ8E
話の逸れ方が大きくなってきたな
2025/05/10(土) 16:38:29.08ID:iGSB8dlv
前から先人達がこのスレで、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") _
)

と。
で、何度かやり取りした結果、うまく出来まスた。
2025/05/10(土) 18:59:33.45ID:Pq21kD+5
しねごみかす
646デフォルトの名無しさん
垢版 |
2025/05/10(土) 19:48:45.71ID:pekHwIHV
>>644
どれくらい処理の重い作業か、帰りの組み方をしているのか私には分かりませんが、
テーブルデータの整形が終わった後、一区切りついた後、テーブル関数やリスト関数などで繰り返し作業保護(一般的なeach?)
647デフォルトの名無しさん
垢版 |
2025/05/10(土) 19:52:02.31ID:pekHwIHV
>>646
を行う前に
必ず
List.Buffer Table.buffer を行うと(VBAの配列並にとは言いませんが)処理が劇的に早くなると思います。
私は2000行に6000行のTaxt.Containsをして結果をList.SelectやAnyTrueなどをしていますが、劇的に早くなりました。
648デフォルトの名無しさん
垢版 |
2025/05/10(土) 20:41:13.86ID:pekHwIHV
VBAでセルの中の改行のある大量の文字列の中から目的の情報を抽出するという試みをやっていたのですが、最近になってやっと改行で区切って、1行にバラすという事に気がつきました。
これで無関係な文字列の行はフィルターできるし、視認性が劇的に改善したしで本当に楽になった。
データは必ず一行づつという当たり前を改めて知らされた。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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