Excel VBA 質問スレ Part83

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

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

※前スレ
Excel VBA 質問スレ Part82
https://mevius.5ch.net/test/read.cgi/tech/1737657075/1
2025/06/18(水) 22:03:48.23ID:pjzDoD0c
WEBSERVICE ENCODEURL FILTERXML
いまやWebスクレイピングもVBA要らず
136デフォルトの名無しさん
垢版 |
2025/06/18(水) 22:56:38.00ID:BW5TgS6t
>>135
社内のイントラネットに入力するっていうあるあるがしたいです
本当はPower Automateです
2025/06/18(水) 23:16:59.86ID:Kf62JwRL
>>135
動的サイトもスクレイピング可能?
138デフォルトの名無しさん
垢版 |
2025/06/18(水) 23:32:21.40ID:BW5TgS6t
>>137
動的サイトってなんですか?
まさに私が今悩んでいる事な気がします
139デフォルトの名無しさん
垢版 |
2025/06/19(木) 00:26:00.22ID:ZDBDhjrQ
馬鹿ほど厚かましくしつこい
2025/06/19(木) 00:40:34.97ID:ROoqywLw
>>137
(必要ならENCODEURLを使って)クエリ文字列を作り
URLの末尾にくっつけてWEBSERVICEすればいいのでは?
2025/06/19(木) 00:43:27.51ID:qitj2LBq
横だけどそもそもイントラのフォームに入力とかが本当に必要なの?
うちは225だけどイントラから特定条件でデータを落とすようなよくあるユースケースなら素直にGET,POSTすれば済むのもたくさんあるぞ
142デフォルトの名無しさん
垢版 |
2025/06/19(木) 00:53:45.50ID:QChnVNm1
>>141
ローコードツール?で作られた?サイトに必要事項とファイルのドラッグアンドドロップが必要なんですか
2025/06/19(木) 00:59:33.98ID:qitj2LBq
>>142
その手のやつって普通API公開されてない?
そしてローコードなら作った人もユーザー側の人間だから頼めばトークン発行してくれたりしないか?

てかそもそもそのローコードで作ったページがやってること自体
突き詰めると既存の社内DBでクエリ動かしてるだけだったりしないかな?
2025/06/19(木) 01:16:08.33ID:ROoqywLw
HTMLソース見て<form〜>〜</form>の中を見ればどこに何をPOSTしてるかわかるでしょ
それと同じことをMSXML2.ServerXMLHTTPを使ってやればいい
その前にログインURLにPOSTしてセッションIDもらう必要があると思うけど
145デフォルトの名無しさん
垢版 |
2025/06/19(木) 07:09:53.12ID:QChnVNm1
今の今までpublic変数やprivate変数は怖いと思って使うのを避けてきたんだけど、いい加減最終行の番号くらいならいいかなと思って油断したら、共通関数の最終行番号までpublicに代入した値を参照してしまって無事死亡。
これがグローバル変数の怖さですか。
2025/06/19(木) 11:48:52.46ID:Y5iG6yck
テスト中の事故でしょ? コピー作ったうえで、コピーの方で試した結果でしょ?
いい経験したし、それを結果に反映させるように作り込みを考慮すればいい
まさか、まさかな
147デフォルトの名無しさん
垢版 |
2025/06/19(木) 13:03:13.43ID:DFOz6nBR
>>145
共通関数だってpublicだろうし、public変数を共通で使っても何も問題ない
使い方間違えば(=バグ)エラー起こすのは当たり前
もちろんpublicにする必要のないものは対処必要
2025/06/19(木) 13:12:45.28ID:K/Fu6xnk
N88の頃はiとかjのトラブルはよくあったよね
DOSだって再入不可のやついっぱいあったろ
今だとマルチスレッド非対応のライブラリは気をつけないとね
149デフォルトの名無しさん
垢版 |
2025/06/19(木) 18:29:25.72ID:CkE44pQz
>>147
パブリック変数をコンストのノリで使用する事と、関数(public関数)を使う事は違う
2025/06/19(木) 18:34:14.95ID:ROoqywLw
FSOをグローバルにしたくなる衝動が抑えられない
151デフォルトの名無しさん
垢版 |
2025/06/19(木) 19:33:40.40ID:QChnVNm1
>>150
グローバル変数にしたらダメなのですか?
今まさにグローバル変数にして、それぞれのモジュールごとに機能を分けようと考えていました。
だったらセットぐらい個別に書けばいいのですが
2025/06/19(木) 19:49:35.93ID:3HWkDcCe
>>150
やってみりゃわかるが、モジュールごとにいちいちオブジェクト作って終わったら開放とかやってても、大したオーバーヘッドにならんぞ
コードの見通しを良くした方がメリット大きい
153デフォルトの名無しさん
垢版 |
2025/06/19(木) 19:52:14.41ID:UuH6bh00
>>150
Singletonみたいにして使ってるけど
154デフォルトの名無しさん
垢版 |
2025/06/19(木) 20:13:36.51ID:QChnVNm1
Staticだったら信頼性が上がりますか?
155デフォルトの名無しさん
垢版 |
2025/06/19(木) 21:04:13.73ID:DFOz6nBR
>>149
どう違うの?
どこからコンスト出てきた?
156デフォルトの名無しさん
垢版 |
2025/06/19(木) 23:24:02.96ID:O+fabiFQ
>>149
お前がバカなのはわかった
157デフォルトの名無しさん
垢版 |
2025/06/20(金) 02:56:57.97ID:yoed5JvY
>>155
関数は値を汚さない(書き換えない)作りにするのが基本、引数に処理を加えて右から左へ受け流すのが基本。
public変数どこからでも値の代入を受けて、値を保持する
全く違う
158デフォルトの名無しさん
垢版 |
2025/06/20(金) 02:59:11.97ID:yoed5JvY
Application.DisplayAlerts = Falseしているのに、Saveで確認画面が出てくるのはなぜでしょうか?
Excelの設定に必ず確認画面を出す設定があるのでしょうか?
159デフォルトの名無しさん
垢版 |
2025/06/20(金) 07:29:41.92ID:LSwiyXBC
必要に応じて publicとprivateの使い分けが出来てないのは初心者
2025/06/20(金) 08:29:46.45ID:eaqG1YUh
上級者はVBAなんてさっさと捨てるからな
161デフォルトの名無しさん
垢版 |
2025/06/20(金) 09:09:08.54ID:HQ2+VBne
>>157
>パブリック変数をコンストのノリで使用する
>public変数どこからでも値の代入を受けて、値を保持する

お前がバカなのはわかった
2025/06/20(金) 09:30:18.29ID:gc/RcLN0
このスレを見てる時点で捨ててないかマウント取りに来てるだけか
どっちにしても人生負け組
163デフォルトの名無しさん
垢版 |
2025/06/20(金) 09:41:59.47ID:r8vuXojP
まあマウント取りたくて取れる相手を探しに来てるなら器がちっちゃいわな
2025/06/20(金) 10:04:21.23ID:izQX0zhk
なにぃ~ 5ちゃんに器の大きい人間なんかいたら希少だろー
165デフォルトの名無しさん
垢版 |
2025/06/20(金) 10:15:50.81ID:bGFhNefV
>>158
出るのと消えるのがある
こべつに他の設定でけせるのもある
何を消したいかを検索してみ
166デフォルトの名無しさん
垢版 |
2025/06/20(金) 14:31:29.46ID:Y6uQQV89
>>162
マウント取れなくて悔しい
がよくわかる定期w
2025/06/20(金) 16:26:33.16ID:q7FcQ3E6
え?>>166みたいに読み取る人ってかなりの少数でしょ
国語の成績悪かった子だと思うよ
168デフォルトの名無しさん
垢版 |
2025/06/20(金) 17:04:06.71ID:HQ2+VBne
>>167
えっ!?
ついでにブーメランまでぶっ刺さってんじゃん
バカはジタバタしてもバカから一生逃れられないからw
169デフォルトの名無しさん
垢版 |
2025/06/20(金) 19:16:20.77ID:yoed5JvY
VBAのツール作成を指示されました。
VBAで自動化したい事は明確です。
今回、VBAで自動化したい事のミソ、機関部分、エンジン自体は完成しています。
しかし、ソースファイルに新しい情報を記入するにもかかわらず、上書き保存はしないと言われます。
私はまるで意味がわからないのですが、これは私の頭が悪いのでしょうか?
2025/06/20(金) 19:19:34.53ID:sV38LovV
>>169
上書き保存しないなら、名前を付けて保存すれば良いではないか
171デフォルトの名無しさん
垢版 |
2025/06/20(金) 19:24:19.55ID:yoed5JvY
私はExcelのブックをReadonly:=Trueでしか開かないし、当然、「上書き保存」なんかするわけがないのに、です。
2025/06/20(金) 19:30:29.79ID:SS2ziZwY
中規模以上の企業だと障害者を何人か雇う必要があるのよ
新しい仕事を大変なわけよ
2025/06/20(金) 20:10:04.06ID:s6iEsyPY
>>169
入力したデータだけ別ファイルに切り出してリレーションするとか?
174デフォルトの名無しさん
垢版 |
2025/06/20(金) 20:10:34.24ID:Tkymh4/E
ID:yoed5JvY

本日の馬鹿
175デフォルトの名無しさん
垢版 |
2025/06/20(金) 20:26:20.59ID:yoed5JvY
>>170
では上書きしないのなら、新しい情報をソースファイルに記入するときはどうするのでしょうか?
176デフォルトの名無しさん
垢版 |
2025/06/20(金) 20:32:19.33ID:yoed5JvY
普通、If文を書くときは、
If 〜 = 〜 Then

〜 = Format(〜,"")

Else

〜 = 他の処理

End If

と書くと思いますが、

〜 = 処理

If 〜 = 〜 Then

〜 = Format(〜,""h

End If

と書くのは可読性が低いでしょうか?
2025/06/20(金) 20:45:33.55ID:s6iEsyPY
>>175
相手の意図も知らないのにこちらに聞かれてもわからないでしょ。

何で相手に確認しないの?
2025/06/20(金) 20:55:30.36ID:3oNRkMSd
>>176
可読性が低くなるうえ、else側の処理をIfの前に書くと必ず実行することになって無駄
2025/06/20(金) 21:00:27.73ID:s6iEsyPY
極力else使わない派です。。。
2025/06/20(金) 21:22:13.93ID:sV38LovV
>>175
上書きしないで別ファイル名で保存して、元のファイルを残しておく
今度からは新しい方を使ってね、新ファイル名「xxxx_ver2.xlsm」
181デフォルトの名無しさん
垢版 |
2025/06/20(金) 21:22:17.00ID:yoed5JvY
>>179
Elseを使わないノウハウとても気になります。
条件が必ず一つの方が可読性も高そうですね。
182デフォルトの名無しさん
垢版 |
2025/06/20(金) 21:24:35.36ID:Tkymh4/E
ID:yoed5JvY

本日の馬鹿
183デフォルトの名無しさん
垢版 |
2025/06/20(金) 21:32:19.27ID:HQ2+VBne
馬鹿すぎて収束しないので放置、NG推奨
184デフォルトの名無しさん
垢版 |
2025/06/20(金) 21:43:45.62ID:GTdUEOjB
>>180
https://pbs.twimg.com/media/EXw7chRUwAAxEy7?format=jpg&name=900x900
2025/06/20(金) 21:50:27.39ID:sV38LovV
新人研修終わったばかりの新人かな?
既存のファイル消しちゃいました〜 ってことになったら悲惨だぞw
2025/06/20(金) 21:50:46.76ID:EB90632S
ソースファイルに新しい情報を記入???
VBAでVBAソースの書き換えなんてできるんだっけ?
2025/06/20(金) 21:59:38.37ID:sV38LovV
>>184
わかるwww 
2025/06/21(土) 08:13:33.35ID:xnN29f9y
> VBAで自動化したい事は明確です。
それが何なのか、概略だけでもいいからその点を説明してくれれば、何故上書き保存しないのかの理由が判明するかも
189デフォルトの名無しさん
垢版 |
2025/06/21(土) 08:47:05.05ID:GbO1k/NC
Option Private Module
を使用すると不具合は起きますか?
190デフォルトの名無しさん
垢版 |
2025/06/21(土) 08:56:36.24ID:GbO1k/NC
ブックを不必要に上書きしないという事は分かりきっていますし、私もVBAでブックを開く時は
ReadOnly:=True
としか書いていません。
2025/06/21(土) 13:41:14.95ID:iA3bwhzi
>>189
使い方を知らない機能なら使わないほうがいいだろう
192デフォルトの名無しさん
垢版 |
2025/06/21(土) 15:35:50.74ID:G6SvAclG
ID:GbO1k/NC

本日の馬鹿
193デフォルトの名無しさん
垢版 |
2025/06/21(土) 20:05:22.34ID:GbO1k/NC
標準モジュールを知ってからは、ずっと標準モジュールにコードを書いていたけど、もしかして特定のシートの内容を更新するだけのプロシージャなら、そのシートモジュールに書いて、パブリックで呼び出すなり、単独で完結させるのがいいのでは。
2025/06/21(土) 20:11:34.06ID:/aN2bQtG
シートにコードを書くとMeでWorksheetにアクセスできるしな
195デフォルトの名無しさん
垢版 |
2025/06/21(土) 20:40:04.26ID:zdpjAWls
Copilot悪くないなと思って家でChatGPT使ってみるとやっぱりこっちのがVBAに関しては遥かに格上だわ
作ってくれるものが違いすぎる
使いまくってるからこそ明確に違う
Copilotの方が堂々と使えると思ってたのに悲しい
2025/06/21(土) 21:15:57.84ID:Pivyh754
>>193
他に使いまわしが出来そうなら標準にしてる 。
使えなさそうならシートに書いてる
197デフォルトの名無しさん
垢版 |
2025/06/21(土) 21:38:06.55ID:pQFMDB6w
絶対に標準モジュールに作った方がいい
シートなんてユーザーツールの表示非表示や特定の挙動くらいしか書かない
シートにあれこれ書くのはメンテナンス性も考えると絶望的に人としてセンスがないと断言できる(ドヤアッ
198デフォルトの名無しさん
垢版 |
2025/06/21(土) 21:46:00.83ID:ntnP1SjV
どうなんだろね
シートモジュールはクラス(のインスタンス)のようなものだと思っていて、そこで完結・隠蔽できるなら、メンバ変数みたいに書いてもいいのかも
199デフォルトの名無しさん
垢版 |
2025/06/21(土) 21:46:58.70ID:ntnP1SjV
メンバ変数に限定せず、メソッドも
2025/06/21(土) 22:03:56.91ID:/aN2bQtG
Range読み書き、シート固有の処理、シートに置いたボタンのクリック処理はシートだな
201198
垢版 |
2025/06/21(土) 23:22:42.53ID:0pc0VOCQ
>>196 のような感じかなぁ
正直なところ、大規模なツールにならなければ厳密に考えないかなぁ
202デフォルトの名無しさん
垢版 |
2025/06/21(土) 23:55:37.27ID:AzvejTaO
シートにコード書いてうっかりシート消しちゃった俺が通りますよ、っと
203198
垢版 |
2025/06/22(日) 00:03:54.38ID:eJ/mtVfh
共通不要のものだったと観念すべし
あらたに書き直した時の方がよりよいものができるので、悪いことではないよ
204デフォルトの名無しさん
垢版 |
2025/06/22(日) 00:45:47.89ID:dorlFOp8
そのシート用のコードは一緒に消えるべき
2025/06/22(日) 01:57:40.21ID:qX3IUG6k
シートをコピーするとコードもコピーされるのは当たり前のことだが
1日〜31日の各シートがあってそれぞれに同じようなコードが付属しているの見て愕然とした思い出
206デフォルトの名無しさん
垢版 |
2025/06/22(日) 06:45:49.76ID:ea/8LIl6
Copilotは「会話しながら考えを整理したり、複数の目的をサポートする」コンパニオンとして設計されているため、必ずしも最短でコードを出すことだけを目的としていない場合があります。VBAコードを生成する場合でも、「どう使いたいのか」「何をしたいのか」といった文脈を対話しながら深掘りするスタイルです。

本当かなぁ。
でも確かにGeminiとかは質問を掘り下げてくれる。
207デフォルトの名無しさん
垢版 |
2025/06/22(日) 06:52:56.85ID:ea/8LIl6
特にこだわる必要はないか、あるいはシート別に標準モジュールを追加して、そこにシート完結、単独処理のコードを書く、という感じでしょうか。
208デフォルトの名無しさん
垢版 |
2025/06/22(日) 07:36:42.56ID:ea/8LIl6
クラスモジュールのイニシャライズイベントに引数は使用できないけど、シートやセルの値は使えるから、ConstやEnumとまではいかなくてもとても便利ですね
209デフォルトの名無しさん
垢版 |
2025/06/22(日) 09:29:39.07ID:dorlFOp8
>>207
何のために「わざわざそうする」のか理由が必要
2025/06/22(日) 12:46:56.16ID:iBq+8EF4
>>208
クラス内に直接シート名とかセルの値を入れてるの?
あとでシート名変わったりとかしたら面倒くさくならない?
2025/06/22(日) 12:57:33.20ID:qX3IUG6k
つられんぞ
212デフォルトの名無しさん
垢版 |
2025/06/22(日) 13:57:00.30ID:+ISvpo1N
ID:ea/8LIl6

本日の馬鹿
相手にするのも馬鹿
213デフォルトの名無しさん
垢版 |
2025/06/22(日) 16:10:26.36ID:ea/8LIl6
>>210
シートはコードネームで指定しています。
https://learn.microsoft.com/ja-jp/office/vba/api/excel.worksheet.codename
214デフォルトの名無しさん
垢版 |
2025/06/22(日) 16:15:42.86ID:ea/8LIl6
>>205
その様な場合でも、例えばそのシートが日報だっとして、入力する内容に規則性があるのならそれはそれで意味がある気がしますし、そうでないならシートのコピーではなくて、シートを追加するコードでいいのではと思います。
215デフォルトの名無しさん
垢版 |
2025/06/22(日) 16:30:28.75ID:dorlFOp8
>>205
別に普通ですよ
同じょうな、なのか全く同じなのかは少し気になる程度ですが
共通処理で別出ししてもそこで吸収できない変更は結局各シート変更要
1日のシートを2日以降にコピーする処理はあった方がいいだろう
ならば共通処理の別出しは宗教の違い程度のこと
(月初処理があるとしても、月末処理と同じように共通化すればいい)
216デフォルトの名無しさん
垢版 |
2025/06/22(日) 18:13:47.25ID:ea/8LIl6
ファイルを開く前に一次作業用フォルダにファイルをコピーしてから開くなんて全く気が付かなかったよ
2025/06/22(日) 20:04:06.76ID:qX3IUG6k
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
218デフォルトの名無しさん
垢版 |
2025/06/22(日) 20:18:45.86ID:OtmHPGNq
ID:ea/8LIl6

本日の馬鹿
相手にするのも馬鹿
219デフォルトの名無しさん
垢版 |
2025/06/23(月) 22:05:25.81ID:3YQNLfcG
同じブック、同じシートなのに、PDFで出力すると、人によっては改ページの下に一行増えて(?)空白のページを挟んで出力されます。
なぜでしょうか?
プランターをWindowsのPDFのプリンターにすればいいのでしょうか?
220デフォルトの名無しさん
垢版 |
2025/06/23(月) 22:11:17.82ID:Nt0QtUVK
PCによってモニタサイズによってOSバージョンによってメーカーによって
Excelの印刷範囲は異なりVBAで制御しようとするもんじゃない
どうしようもなく色々なパターンがあって無理
 
俺が最近体感したこと
221デフォルトの名無しさん
垢版 |
2025/06/23(月) 22:59:56.85ID:3YQNLfcG
>>220
そうなんですね
2025/06/24(火) 09:46:14.05ID:17zM306D
フォント替えるだけで死ねる
223デフォルトの名無しさん
垢版 |
2025/06/24(火) 12:43:50.14ID:n0EsgZjg
まさか本当にどのプリンターを使用しているのか?で改ページが変わるとは思いませんでした。
A4はえーよんじゃなかったのでしょうか?
224デフォルトの名無しさん
垢版 |
2025/06/24(火) 13:38:19.20ID:17zM306D
わりとマジレスするとどんなexcelシートもpdfファイルに印刷(出力)して
それを改めてpdfをプリンタで印刷する習慣にすると
環境依存性下げて揃えられる気はしてる
225デフォルトの名無しさん
垢版 |
2025/06/24(火) 15:34:57.09ID:r1pLwix4
全シートの連続表裏印刷もそうだっけ
2025/06/24(火) 17:26:03.83ID:PRrta3wT
プリンタの仕様だから仕方無いのもある
某XEROX社の安い方の複合機だと印刷可能範囲の上端だったか下端だったか7mmとかいうのもある
だから上の方で全周7mmで設定しとけばかなりクリアする可能性があがる、と書いた
しかし、そんなに1ページにみっちみちに詰め込まなきゃならない書類って、逆に効率悪いような
227デフォルトの名無しさん
垢版 |
2025/06/24(火) 18:05:26.27ID:n0EsgZjg
>>224
私も思い知らされました。
まずはwin標準の仮装プリンターに出力ですね
2025/06/24(火) 18:12:16.30ID:CEept5wW
欽ちゃんかよ
2025/06/24(火) 18:21:11.10ID:KEAdRoBs
>>226
> しかし、そんなに1ページにみっちみちに詰め込まなきゃならない書類って、逆に効率悪いような

その発言は業務システムに関わる多くの真面目な日本猿達の存在意義を否定している
謝罪しなさい
2025/06/24(火) 18:24:41.47ID:CEept5wW
>>226
んなもん用途次第だろうが
1枚であることに意味のある資料だってある
2025/06/24(火) 18:26:55.76ID:sjc0o4g2
さっそく否定された人が現れて草
2025/06/24(火) 19:01:03.16ID:9f5lnV/o
ワードを使えば改ページで改ページしてくれるよ
233デフォルトの名無しさん
垢版 |
2025/06/24(火) 19:16:55.70ID:n0EsgZjg
>>228
みんなMicrosoft Print to PDFを使って合格かな?
234デフォルトの名無しさん
垢版 |
2025/06/24(火) 19:38:00.37ID:n0EsgZjg
シートを完全に隠す、プロジェクトを隠す(?)気持ちが本当によく分かった。
そもそも設定や値を触らなければ壊れないから。
ただ、別ブックから値を読み込むとなると、Worksheet.CodeName プロパティが使えないのが嫌だなぁと思う。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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