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


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

Excel VBA 質問スレ Part83



1 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 11:06:42.20 ID:j4jIPbHU.net]
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

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

※前スレ
Excel VBA 質問スレ Part82
https://mevius.5ch.net/test/read.cgi/tech/1737657075/1

313 名前:デフォルトの名無しさん [2025/06/30(月) 20:01:12.87 ID:9Mnf4Vk7.net]
>>309
センスも作り込みスキルも無さそうでしょうか?

314 名前:デフォルトの名無しさん [2025/06/30(月) 20:48:43.72 ID:XO4EHMtF.net]
>>310
ごめん、そんなことはないけど
印刷のVBA化に無理に固執するもんじゃない
マジで
昔経験したからわかる

315 名前:デフォルトの名無しさん [2025/06/30(月) 20:54:02.73 ID:9Mnf4Vk7.net]
>>311
ありがとうございます
vbaで直接プリンターに飛ばすわけではありません
とりあえず改ページの仕様はいくらか理解できたと思います

316 名前:デフォルトの名無しさん mailto:sage [2025/07/01(火) 00:25:06.97 ID:AnMu1HLz.net]
Chatさんに聞いてみたけど面倒くさそう。


' 例:20行目の上に改ページ(21行目から新しいページ)
余白2cm
Sub 印刷設定サンプル()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")

With ws
.ResetAllPageBreaks
.HPageBreaks.Add Before:=.Rows(21)

With .PageSetup
.PrintTitleRows = "$1:$3"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.Orientation = xlPortrait
.PaperSize = xlPaperA4
.LeftMargin = Application.CentimetersToPoints(2)
.RightMargin = Application.CentimetersToPoints(2)
.TopMargin = Application.CentimetersToPoints(2)
.BottomMargin = Application.CentimetersToPoints(2)
.CenterHorizontally = True
End With
End With

MsgBox "印刷設定を適用しました。"
End Sub

317 名前:デフォルトの名無しさん mailto:sage [2025/07/01(火) 00:32:33.67 ID:AnMu1HLz.net]
続き。こういうのも多分いるよね。

指定した行数がA4印刷1ページに収まるかを調べ収まらない場合は改ページを設定する

各行の高さを合計して、ページ内に収まるかを判定。A4の印刷可能範囲の高さ(ポイント単位)と比較。オーバーするならその直前に 改ページを入れる。 A4用紙の印刷可能な高さ(おおよそ)
A4縦の高さ:29.7 cm = 約842 pt
上下余白(例):2cm + 2cm ≒ 113 pt(計)
⇒ 実質印刷可能範囲:約729 pt
※余白・ヘッダー・フッターにより変動
コード例
Sub 自動改ページ_行数と印刷高さを基準に()
Dim ws As Worksheet
Dim i As Long
Dim rowHeightSum As Double
Dim printHeightLimit As Double
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.ResetAllPageBreaks
' 印刷可能な高さを計算(A4縦:842pt - 上下余白 約113pt)
printHeightLimit = 842 - 113
rowHeightSum = 0
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
rowHeightSum = rowHeightSum + ws.Rows(i).RowHeight
If rowHeightSum > printHeightLimit Then
' この行の直前で改ページを入れる
ws.HPageBreaks.Add Before:=ws.Rows(i)
rowHeightSum =ws.Rows(i).RowHeight ' 次ページの高さリセット
End If
Next i
MsgBox "改ページを設定しました。"
End Sub

318 名前:デフォルトの名無しさん [2025/07/01(火) 07:51:53.41 ID:hLMayhbM.net]
>>313
このコードは何をしているかというと、
21行目の上 つまり20行目と21行目に改ページを設定して
上にヘッダー?を設定して
縮尺解除
全列を1ページに収める
行のページ数は自動
用紙サイズはA4
という設定をしています
しかし、改ページの設定は
改ページビューの青い点線(実はこれが自動改ページ)ではないから
1ページと2ページに余分な空白のページが挟まる

319 名前:デフォルトの名無しさん mailto:sage [2025/07/01(火) 12:47:55.21 ID:cyOlFSbV.net]
インスパイアされて作ってみた
関西のコミュニケーションの多様性にはリスペクトしか無い
https://89.gigafile.nu/0706-cf0368763b1caf00c266d1efc563aea36
ネィティブでは無いので誤りが有ったら指摘もらえば改良もやぶさかではない
Captionだけじゃ物足りないので喋らせてみたが、これが結構ドツボ
ExcelでのSpeakは、まだまだ途上らしい

320 名前:デフォルトの名無しさん [2025/07/01(火) 21:04:55.51 ID:hLMayhbM.net]
>>316
何をお作りになられたのでしょうか?

321 名前:デフォルトの名無しさん [2025/07/01(火) 23:30:56.43 ID:uDpPxP0Z.net]
俺氏、VBAで去年社内最優秀賞30万
今年はちょびちょび改善で出して1万6500円
抜群のセンスだわさ



322 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 00:01:46.59 ID:0vwAlXoU.net]
そう思うならさっさと転職して本職のITエンジニアになった方が稼げるよ

323 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 02:51:17.71 ID:g2KaZT8X.net]
AI時代にここの質問スレは盛況なのは何故だ

324 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 03:40:33.29 ID:fiQBdOaz.net]
AIがイマイチだから

325 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 07:59:03.99 ID:02hJ4H7c.net]
AIに書かせることはできても、それの検証はどのみち必要だから

326 名前:デフォルトの名無しさん [2025/07/02(水) 08:13:15.57 ID:h5Fr+SaE.net]
ガイジだけど質問ある?
死にたいガイジ…空気読めないガイジ…死にたいガイジ…

327 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 08:19:12.11 ID:q22wzhF/.net]
AIはうそつきだし
適度に事実も混ぜてくるから一番やっかい

328 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 08:29:36.52 ID:8Lvzc6gd.net]
やっかいだと思うなら使わなけりゃ良いだけなのに、
他人にもそうさせようとするのはなんで?

329 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 08:36:59.95 ID:QMHVqlVc.net]
>>317
[はい][いいえ]を関西弁で、という話題にインスパイアされて
・一つのユーザーフォームを使い回しできる方法
・セルの文字をボタンやラベルのキャプションにしてしまう方法
・何ならしゃべらせる方法
関西弁に限らず、広島弁でも博多弁でもかごんま弁でもとーほぐ弁でもご随意に
リンク先の[ダウンロード開始]ボタンで落とせる
うかつに開くといきなりダイアログが出てきてしゃべりだすので音量注意

OSに入ってるナレーターは、Haruka、Ayumi、Sayaka、Ichiroと選べるはずが
Wordと違ってExcelだとデフォルトのHaruka限定にされて変えられないとのことで
そこがドツボだった まぁ幸い解決方法を指南してくれてるサイトに辿り着けた
喋ってる間は全リソース奪われて他の操作は一切出来なくなるのは、如何ともし難いのか

330 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 08:47:20.48 ID:q22wzhF/.net]
関西弁のyes/no
それはええ/それはええ

331 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 08:49:18.32 ID:q22wzhF/.net]
>>325
個人の中で完結ならいいけど、AIの嘘回答でドヤってくるのが迷惑



332 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 08:52:51.46 ID:8Lvzc6gd.net]
>>328
嘘回答でドヤってきた奴に言えよ
十把一絡げに迷惑って言い散らかすのも充分迷惑だと気付かないのか?

333 名前:デフォルトの名無しさん [2025/07/02(水) 09:23:01.60 ID:IvKsZJU4.net]
AIにも種類あるからなぁ
問い方にもよるし

334 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 09:28:17.31 ID:sOTx1Ysw.net]
AIにテストとバグ取りまでやらせろ

335 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 11:09:29.63 ID:QMHVqlVc.net]
>>327 ww

336 名前:デフォルトの名無しさん [2025/07/02(水) 12:42:29.90 ID:PqQB+KG0.net]
AIに作らせて出来てなかったら投げかけるだけだろ
こんなIT音痴な奴がVBA触ってる事にビビる大木

337 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 19:40:08.71 ID:WTqAcEsV.net]
AI使って嘘の回答だったら質問変えたりコード直せばいいだけでしょ。
実際自分で調べるよりもめちゃくちゃ早いし便利に使えてるよ。


人間は平気で嘘つくのにAIに嘘つくなって求めるのはおかしいでしょ。

338 名前:デフォルトの名無しさん mailto:sage [2025/07/02(水) 20:01:38.68 ID:0vwAlXoU.net]
VBAの場合は他のメジャーなプログラミング言語と比べて平均的な人間とAIの差が大きすぎるから、いきなりゼロショットで指示すると期待通りの結果が得られにくい
もちろんAIの方が上だ
AIに対して予め既存のコードをサンプルとして与えてあげてレベル感を知ってもらうと、いい感じに合わせてくれるよ

339 名前: mailto:sage [2025/07/03(木) 10:04:12.85 ID:q23h/8z8.net]
「嘘の回答だったら」
そもそも嘘かどうか知ってるなら聴く必要が無い
結局嘘じゃないことを調べるのにそれ以上に時間がかかる

340 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 10:05:56.29 ID:q23h/8z8.net]
「人間は平気で嘘つくのに嘘つくなって求めるのはおかしい」
判らんのに平気で嘘回答するネラーも多い罠

341 名前:デフォルトの名無しさん [2025/07/03(木) 10:16:58.13 ID:gVoGF6e7.net]
政治家の財源がないは嘘



342 名前:デフォルトの名無しさん [2025/07/03(木) 10:28:29.92 ID:q23h/8z8.net]
學歴も嘘

343 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 10:37:23.12 ID:cEJAYS/6.net]
>>337
だから話半分に聞くだろ?
AIの回答もそういう姿勢で、参考にはするけど盲信しないことが大事
全部鵜呑みにするならそいつももはやAIと変わらん

344 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 10:44:24.00 ID:q23h/8z8.net]
340
どうみてもAI以下です

345 名前:デフォルトの名無しさん [2025/07/03(木) 20:41:52.66 ID:1CjDULGZ.net]
こんなAIの本質をわかってないような奴らが作るVBAなんてたまらんよ

346 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 20:45:28.43 ID:NNwfFfCt.net]
>>342
AIのプロフェッショナル様だ!
我らに叡智を与えたまえ!

347 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 21:14:39.37 ID:zL884xZP.net]
どこの誰がなにをどう作ろうとも、その成果物に実際に触る訳でも無いし
それに依って迷惑を被る訳でも無いだろ?
ナニを上から目線で大口叩いてんだか
偶々そのソースを目にすることがあろうとも、評価してくれと頼まれた訳でも無いし
VBA評議会の高位評議員という立場でも無いだろ 何がしたいん?

348 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 22:51:34.02 ID:IBfGzwrB.net]
>>336
AIに質問すればコードの1行ずつ丁寧に解説してくれるけどそれでも正しいかどうか調べるのに時間がかかるの?

349 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 22:55:11.76 ID:x0A3mg3D.net]
それをAIに1行ずつ丁寧に解説させて、その内容をさらにAIに解説させて.....以下略

350 名前:デフォルトの名無しさん [2025/07/03(木) 23:14:39.22 ID:1CjDULGZ.net]
どんだけAIに質問投げるの下手なんだよマジでよー

351 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 23:19:49.48 ID:IBfGzwrB.net]
人間と同じで相性なんですかね。
合わないものは合わないのかなぁ。



352 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 08:07:10.89 ID:3EnEQ/Df.net]
>>345
AIだろうと人だろうと成果物のテストするだろ
何のためにテストすると思ってるの?

353 名前:デフォルトの名無しさん [2025/07/04(金) 09:00:20.43 ID:fF3rQ1JL.net]
AIに投げる質問を造るのがうまいと言うことは既にAIに聴く必要が無いんだわ

354 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 13:21:56.31 ID:3EnEQ/Df.net]
それは違う
プロンプトエンジニアリング能力と他の能力は別物

355 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 15:02:13.77 ID:pEhONqjq.net]
だったらAIにでも話してろよ

356 名前:デフォルトの名無しさん [2025/07/04(金) 18:27:01.53 ID:0E9WgSh7.net]
一生懸命コードの基礎学んだのにセンスが無い奴は必死になるよなそりゃ

357 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 19:13:39.58 ID:3EnEQ/Df.net]
>>353


358 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 21:05:20.15 ID:rizrt2ys.net]
>>349
言いたいことがよくわからないです。

おっしゃってるようにAIでコードを書いても人で書いてもテストはします。
ただAIで書いたコードのテストは人のコードより時間がかかるというお話ですか?
丁寧にAIに教えてもらえても?
AIは関係ないと思うけど違うのかな。

359 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 21:22:07.36 ID:JLFKZ1OE.net]
>>355
どこの何をテストする必要があるのかを判断できる能力がある、
もしくはどこの何をテストする必要があるかを導くプロンプトを書ける、
もしくは必要な箇所なテストまで終えるプロンプトをかけるなら問題ない

360 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 06:16:26.93 ID:+cv+JpUz.net]
>>356
例えばCSVファイルを開くときのテストケースを教えてってAI聞いてみたけど答えてくれたよ。


VBAでCSVファイルを開く処理に対して、以下のようなテストケースを行うと、動作の信頼性やエラー対策が強化できます。

主なテストケース一覧
・CSVファイルが存在し開ける 正常にファイルを開けることを確認
・ファイルが存在しない場合 指定されたCSVが見つからない場合の対処
・既に開かれているブックかどうかを確認
・読み取り専用のCSVを開けるかどうか のテスト
・空のCSVファイル 内容が空でもエラーにならないか確認
・文字コードに関わるデータが正しく読めるかのテスト
・CSVの列数・行数が極端に多い たくさんのデータがあるときの パフォーマンスの確認
・ダブルクォートやカンマを含むセル "東京,品川"のようなセルが正しく

361 名前:扱われるか セル確認
・ファイルロックされている場合のエラー回避の確認
[]
[ここ壊れてます]



362 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 06:51:38.76 ID:pq8ewG8r.net]
>>357
それだとハルシネーションが含まれていた場合のことを考慮できてない

363 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 08:48:09.96 ID:rEK7AeQH.net]
>>357
余計な型変換に関する確認が必要
0312345678 → 312345678
1-2 → 1月2日

364 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 08:57:41.98 ID:rEK7AeQH.net]
古いExcelでは先頭がIDだとSYLK扱いされる問題もあるな

365 名前:デフォルトの名無しさん [2025/07/05(土) 09:10:19.51 ID:+boHNEOG.net]
>>357
csvファイルへのショートカットだった場合のチェックがない
開くと読み込みを一緒にしているのが気になった
その前にもともと自力でできる作業なら初めからAIは使わないだろうし
AIが示さない項目を無視していいかの判断ができるのかな
主な項目だからそれ以外もあるよとか後になって言うのはどうかと思うし

366 名前:デフォルトの名無しさん [2025/07/05(土) 09:13:22.18 ID:gPk7JHhb.net]
ショートカット?これは馬鹿のふりしてるの?

367 名前:デフォルトの名無しさん [2025/07/05(土) 09:31:15.35 ID:vyFcCxL+.net]
ショートカットでもcsv開くことがあるがcsvでないことはしっている

368 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 09:35:20.09 ID:eCCJvae8.net]
既にAIの知能が人間を遥かに超えており、ボトルネックがバカな人間であることがよくわかるスレ

369 名前:デフォルトの名無しさん [2025/07/05(土) 09:46:16.30 ID:vyFcCxL+.net]
うちの環境が普通でないなら無視してくれて構わんよ

370 名前:デフォルトの名無しさん [2025/07/05(土) 09:55:15.54 ID:Pf7qA/Ja.net]
我流、独学でExcelをやっている人が表を作ると、そのつもりやその存在を全く知らなくても、マトリクス表形式で表を作成してしまい、しかも完成したものに対してピボットテーブルを使用すると言うのはあるあるですよね?

371 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 10:34:06.26 ID:+cv+JpUz.net]
>>358
それを自分で確認したらダメなんです?

>>359
>>360
>361
指摘ありがとうございます。

主な一覧だったのでテスト例はさらに出てきたかもしれないです。
開くと読み込むは問い合わせ方が悪かったかもです。

AIで出てこなかった項目が無視できるかどうかの判断は難しいですね。
明らかにテストしなきゃいけない項目がAIで抜けててAI丸投げで作った製品を納品されると怖いものがありますね。

ただAI丸投げの流れは止められないでしょうね。



372 名前:デフォルトの名無しさん [2025/07/05(土) 11:46:24.77 ID:dpOItoML.net]
>>357
CSVカラムの途中で改行が入る場合

373 名前:デフォルトの名無しさん [2025/07/05(土) 15:15:49.95 ID:y/LWjdC1.net]
「俺が流れを止めるからお前は先に行け!」みたいなこと言ってみたいね

374 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 15:50:51.02 ID:8jsOt+Pc.net]
「その作業が本当に必要かどうか、もう一度考え直す」

375 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 19:53:47.88 ID:AqSnrZiN.net]
>>370
それはVBA職人的にはタブーでしょ
人力でやってた仕事というのは、自動でやるなら本質的にはそもそもやる必要のないものが多い
VBAはワークフローの改善に踏み込むことなくただ人力作業を単純に自動化するのが王道で、
仕事の意味を問うてしまうとVBAの仕事が減ることに繋がる

376 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 22:49:12.14 ID:+cv+JpUz.net]
>>368
指摘ありがとうございます。

もう回答を全部出してみたよ。
これ以外でテストケースがあるなら負けです。。。


VBAでCSVファイルを開いて読み込む際には、さまざまなケースに対応する必要があります。考えうるテストケースをカテゴリ別に網羅的に洗い出します。

基本ケース
1 正常なCSVファイルを開いて正しく読み込めるか
2 ファイルが存在しない場合のエラー処理
3 空のCSVファイルを読み込んだときの動作
4 CSVファイルのパスに全角文字・日本語が含まれる場合

データ構造・形式のバリエーション
5 カンマを含むデータがダブルクォートで囲まれている "東京都,千代田区"など
6 改行が含まれるデータ
7 ダブルクォートを含むデータ
8 区切り文字がセミコロンやタブなどの場合
9 複数の空白を含む行
10 各行のカラム数が不揃い
11 数値が先頭に0を含むデータ
12 日付形式のデータ
13 UTF-8 BOM付きファイル
14 Shift-JIS形式のファイル

377 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 23:41:01.05 ID:8jsOt+Pc.net]
>>372
・パスが長すぎる場合
・処理系による改行コードの違い
・ファイル全体でダブルクォートが奇数個(閉じられていない)
・巨大すぎる(項目のサイズ、項目の数、行数)
・ファイルの破損(バイナリデータ混入など)
・ファイルシステムの破損、不良セクタなど

378 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 02:30:01.30 ID:N2XXWgcj.net]
>>372
Workbooks.OpenでCSVを読むならテスト項目ほとんど要らなくね?
テキストファイルとして読んで、列と行の分割処理をするなら、
CSVのフォーマット定義を先にやらないとテスト項目作れなくね?
読み込みファイルの指定方法も先に決める必要がなくね?

379 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 06:55:32.42 ID:hfT56Vvk.net]
>>373-374
Claude様に聞いてやったぞ

373と374は的外れすぎる

373について
・「ファイルシステム破損、不良セクタ」→ システム障害テストの範疇、CSV処理テストじゃない
・「ファイル破損(バイナリ混入)」→ 同上、テスト範囲を混同してる
・「巨大すぎる」→ パフォーマンステスト、機能テストと分けろ
改行コードとダブルクォート奇数個は有効だが、他は論点ズレ

374について
完全に間違ってる
・「Workbooks.Openならテスト項目要らない」→ 嘘、文字化け・区切り文字誤認識・データ型自動変換でバグ頻発する
・「CSVフォーマット定義を先に」→ RFC4180あるし、372みたいに実際の問題パターン網羅する方が実用的
・「読み込み方法を先に決める」→ 順序が逆、テストケース洗い出してから実装方法決めるのが正解

372が一番まとも。実際の開発で遭遇する問題を的確に押さえてる​​​​​​​​​​​​​​​​

380 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 08:00:56.53 ID:N2XXWgcj.net]
>>375
外部仕様を先に決めるべきという意味だったんだけど、それも間違ってんの?
CSV=RFC4180というのは一般的じゃない気が・・・
Workbooks.Openを使うなら、「CSVフォーマットはExcelのAPIのそれ」で決定だからAPI動作の二重チェックは不要かな〜と。

381 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 12:05:21.27 ID:Jlu3MuzZ.net]
セマフォは?
別プロセスが同じファイルを開いてるから今は処理すべきでない、とか



382 名前:372 mailto:sage [2025/07/06(日) 21:01:04.07 ID:jU0PBm+8.net]
すみません。
昨日テストケースをすべて載せるつもりだったのですが書き込み制限で書けず途中で諦めました。

テストケースは37項目まであります。

383 名前:デフォルトの名無しさん mailto:sage [2025/07/07(月) 09:23:50.46 ID:GhKlbyJu.net]
だが、Copilotにプログラムを作らせると、こんなにも原始的でバグだらけなのであった
しかもこれだとクソ遅い

【設問】以下はVBAでCSVファイルを開いて読み込むプログラムである。バグを指摘せよ。

FilePath = "C:\Users\YourName\Documents\sample.csv"
FileNum = FreeFile
Open FilePath For Input As #FileNum
RowNum = 1
Do Until EOF(FileNum)
 Line Input #FileNum, LineData
 DataArray = Split(LineData, ",")
 Dim i As Integer
 For i = 0 To UBound(DataArray)
  Cells(RowNum, i + 1).Value = DataArray(i)
 Next i
 RowNum = RowNum + 1
Loop
Close #FileNum

384 名前:デフォルトの名無しさん mailto:sage [2025/07/07(月) 10:00:11.48 ID:xGHCrZSN.net]
>>379
CopilotはVBAerほどじゃないにせよアホの子だからね
以下、Claude Opus 4 with extended thinkingの回答

主なバグ:

1. カンマを含む値(“Tokyo, Japan”等)が分割される
2. エラー処理なし。ファイルなかったら死ぬ
3. 変数宣言してない(Option Explicit使ってたらエラー)
4. UTF-8読めない。日本語文字化け
5. セル1個ずつ書き込みでクソ遅い
6. 前のデータ消さないから残る

最悪の例:
CSVに "売上高は1,000,000円" があったら
→ 売上高は1 000 000円" の3列に分解されるw
結論:Workbooks.OpenTextかQueryTables使え​​​​​​​​​​​​​​​​​

385 名前:デフォルトの名無しさん mailto:sage [2025/07/07(月) 10:31:44.26 ID:GhKlbyJu.net]
>>380
変数宣言は行数の都合でカットしたのでCopilot君は悪くない

386 名前:デフォルトの名無しさん mailto:sage [2025/07/07(月) 14:15:38.83 ID:quoGln+a.net]
>>379
ChatGPTだとこんな感じですね。
そのまま貼り付けたので全角も見てくれてる。


バグ・問題点
1 変数の未宣言
2 インデントに全角スペースが混在
3 変数 i の Dim がループ内にある

補足(改善点)
・CSVに カンマを含むセル がある場合、Splitだけでは不十分(→正確なCSV解析が必要)。
・ファイル存在チェック (Dir(FilePath) など) を入れるとより堅牢になります。
・Shift-JIS以外の文字コード(例:UTF-8 BOM付き)は Open では正しく読み込めないことがあります。

387 名前:デフォルトの名無しさん [2025/07/07(月) 22:35:59.87 ID:CvRTuASj.net]
バグも直してもらえばいいんじゃね

388 名前:デフォルトの名無しさん mailto:sage [2025/07/08(火) 00:47:00.39 ID:urjDQqc8.net]
今日のCopilotはWorkbooks.Openの気分らしい
だけどFormat引数が間違ってて動かないw

ファイルパス = "C:\Users\YourName\Documents\" ' ←適宜変更してください
ファイル名 = "sample.csv" ' ←読み込むCSVファイル名に変更
完全パス = ファイルパス & ファイル名
Workbooks.Open Filename:=完全パス, Format:=6

↓(実行時エラー1004で動かないぞ!直せ)↓

ファイルパス = "C:\Users\YourName\Documents\" ' ←適宜変更してください
ファイル名 = "sample.csv" ' ←読み込むCSVファイル名に変更
完全パス = ファイルパス & ファイル名
Workbooks.Open Filename:=完全パス

直った

389 名前:デフォルトの名無しさん mailto:sage [2025/07/08(火) 01:58:30.92 ID:9X9f1TC3.net]
Format:=6なんて絶対使わないのに、どこからコピペしてきたんだよ

390 名前:デフォルトの名無しさん [2025/07/08(火) 10:53:17.46 ID:Lf/Jcjxk.net]
馬鹿の上塗り

391 名前:デフォルトの名無しさん [2025/07/08(火) 16:04:18.48 ID:J6qvAQ9A.net]
このスレ沼しか居ねぇな…google ai studioの方がまだ良い解答してくれんぞ…



392 名前:デフォルトの名無しさん mailto:sage [2025/07/08(火) 17:01:18.70 ID:G3ulfBZW.net]
>>387
とても鋭い視点です。さすがですね!

393 名前:デフォルトの名無しさん mailto:sage [2025/07/08(火) 17:33:24.49 ID:BCBq8ImS.net]
studio と名付けられてる意味わかってんのかな?
中の人はGeminiそのものらしいじゃんか

394 名前:デフォルトの名無しさん mailto:sage [2025/07/08(火) 17:42:58.67 ID:yBGpSZNW.net]
>>389
その論理だとChromeとChrome OSも比較できないことになるが?
同じモデル使ってても実装・UI・機能が違えば体験は全然違うぞ

StudioはAPI統合やパラメータ調整できる開発者向けツール、コンシューマー版Geminiとは設計思想が違う
「中の人が同じ」で比較無意味論は技術理解が浅すぎる

387の解答品質指摘は妥当な比較対象だし、実際のユーザー体験差を無視してる時点で的外れ​​​​​​​​​​​​​​​​

とAI様が仰せになっている

395 名前:デフォルトの名無しさん mailto:sage [2025/07/08(火) 18:21:34.45 ID:urjDQqc8.net]
>>385
どうやらCopilotさんは間違って記憶している模様

> Workbooks.OpenのFormat 6 はカンマ区切りですか?
はい、Excel VBAで使用される Workbooks.Open メソッドの Format:=6 は「カンマ区切り (CSV) 形式」を示します。
これは、テキストファイルを開くときに、フィールド区切り文字としてカンマが使われている場合に指定されます。

> CSVは2じゃないの?
まず結論から言うと:
Format:=2 → タブ区切り(Tab-delimited)
Format:=6 → カンマ区切り(Comma-delimited)
つまり、CSV形式のファイル(カンマ区切り)を読み込むには Format:=6 を使うのが正解です。

w

396 名前:デフォルトの名無しさん mailto:sage [2025/07/08(火) 18:33:40.30 ID:G3ulfBZW.net]
うちでは2って教えてくれた

397 名前:デフォルトの名無しさん mailto:sage [2025/07/09(水) 08:08:49.40 ID:NYgpwKZ5.net]
つまり、開発環境てことだろ? その中のAI部分を担当してるのはGeminiという認識なんだが?
そのGeminiを使ってAI開発に特化した環境を整えてみましたが、何か? っつーのがStudioなのでは?
じゃあ、コンシューマー向けGeminiとStudioの中の人と成り果ててるGeminiと有料版Studioの中の人は
ぜんぶ別人が担当してンのか?
それぞれ精度にランク付けしてて、コンシューマー向けにはBマイナス程度でいいや
StudioならAな その有料版ならA++とかAAAとかでお答えして差し上げろ とか差別化してるん?
Ver違いってならまだ判る 無料なら2.0でいいよ Studioは2.5にしとくか 有料版は3.0β版な
Copilotを多用してる奴に向かってgoogle ai studio(←ぜんぶ小文字なのが何とも)のが優れてる!
っつーお門違いのコンコンチキな放言は許容できるのか?
おなじGemini同士で比較して見せるとかならまだしも
まあ、おれにはどうでもいいんだけど、ブレインストーミングがてらにしたためてみました

398 名前:デフォルトの名無しさん mailto:sage [2025/07/09(水) 08:48:44.88 ID:/UzV6WSq.net]
スレ違いの長文とか救えない

399 名前:デフォルトの名無しさん [2025/07/09(水) 09:32:08.40 ID:EKMDM/sM.net]
391
x 間違って記憶している
o 過學習でアホになった

400 名前:デフォルトの名無しさん mailto:sage [2025/07/09(水) 10:08:19.13 ID:MuvaPJLR.net]
LLMで過学習…?

401 名前:デフォルトの名無しさん [2025/07/09(水) 10:36:50.67 ID:1h9feY7y.net]
391
x 間違って記憶している
o 円形脱毛症でハゲになった



402 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 13:04:26.89 ID:GLg5N4aG.net]
https://forest.watch.impress.co.jp/docs/news/2030817.html
「JScript」に代わり「JScript9Leg

403 名前:acy」が既定のスクリプトエンジンに ~Windows 11 24H2以降で []
[ここ壊れてます]

404 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 10:46:15.47 ID:1v3q9PKm.net]
Windows11の24H2にしたらJScriptが動かない
https://blog.macorin.net/dos-not-work-jscript-on-windows11-24h2/

405 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 11:19:52.18 ID:IENqpxZQ.net]
毎日夜中の定刻に、気象庁Webサイトの2つのページからcsv落として月次集計する、
マクロとPowerQuery使った2×2の4つのブックを
VBS(例:以下)とタスクスケジューラーを使ってやらせてるんだけど、
いい加減、VBS部分を乗り換えるとしたら、
何がとっつきやすいのかな?
PowerShell?
PowerAutomate?
Python?

---例:DLブックを実行させるVBS---
Const WB_PATH = "E:\集計\01_DLファイル\DLブック_地点A.xlsm"
Const PROC_NAME = "DL_Ref"
Dim excelApp
Set excelApp = CreateObject("Excel.Application")
With excelApp
.Visible = False
Dim wb
Set wb = .Workbooks.Open(WB_PATH)
.Run wb.Name & "!" & PROC_NAME
.DisplayAlerts = False
wb.Close
End With
excelApp.Quit

406 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 11:31:18.20 ID:izh84eSC.net]
>>400
**PowerShell**がおすすめです。

理由:

- VBSに最も近い書き方
- Excelの操作がそのまま使える
- Windowsに標準搭載
- 学習コストが低い

移行例:

```powershell
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$wb = $excel.Workbooks.Open("E:\集計\01_DLファイル\DLブック_地点A.xlsm")
$excel.Run("DL_Ref")
$wb.Close()
$excel.Quit()
```

PythonやPower Automateは学習コストか制約があるので、PowerShellが無難です。​​​​​​​​​​​​​​​​

407 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 11:33:01.33 ID:l/eryieH.net]
vbsに近いならjsだろう

408 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 11:52:00.35 ID:1v3q9PKm.net]
PowerShellは遅くてびっくりするのと
COM(IDispatch)経由の操作なので基本的に書き方はvba/vbsを踏襲する
普通に使うと割とつまらない

409 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 11:53:44.70 ID:SjeLYLBh.net]
>>400
スレ違い

410 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 13:45:04.50 ID:IENqpxZQ.net]
>>401,403
ありがとう。やってみる。

411 名前:デフォルトの名無しさん [2025/07/15(火) 18:57:22.18 ID:F7nJfSiA.net]
やっぱり馬鹿かよ



412 名前:デフォルトの名無しさん [2025/07/16(水) 22:35:52.90 ID:6RqIkTEU.net]
目的のフォルダを取得する効率的なコードを教えてください
1番効率的なのはフォルダのフルパスそのものを取得する事ですが、それも難しいので各階層の部分一致でお願い致します

413 名前:デフォルトの名無しさん [2025/07/16(水) 22:45:55.20 ID:NiCGeJue.net]
パスが流動的ってこと?
指定する以外にやったことないわ






[ 続きを読む ] / [ 携帯版 ]

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

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