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/28(土) 15:34:30.03ID:OhpHj5Et
会話の終わりに知らんがななんか付けたら関西人に成ってしまうだろ
そう言えば、関西系のシステムって見たことも触ったことも無いけど
やっぱあれかな? [はい][いいえ]ボタンなんか配置したら「何東京人ぶってんねん!」とか
罵られるから[そうでおま][ちゃいまんねん]とかなのかな? キャンセルは[やめときますb]とか
いっぺん見てみたい
287デフォルトの名無しさん
垢版 |
2025/06/28(土) 16:39:30.47ID:IggLVQ8p
VBAスレ史上でもワースト3に入るつまらなさ
288デフォルトの名無しさん
垢版 |
2025/06/28(土) 17:20:22.34ID:uA5FL7Cc
>>286
昔々IT企業の同期のコンピューターに疎いやつ(文系)が言ってたことに似てる

プログラムの命令って何でIFとかなん
JKの日本語で「もし~"だったら~"xxする」("ら~"と伸ばすのまでが語w)とか書ければいいのにとw

バカにしたけどまあ文系の素朴な疑問なんやろなとは思った
日本語BASICとかがこの命令体系だったら、一部のマニアに流行ったのかもしれんなと思ったり

ちなみに大阪にある有名企業(の開発現場)で「もし」とかプログラム書いてたとこは存在した。そこで仕事したことある
今そう書いてるかは不明
2025/06/28(土) 18:58:07.89ID:vnGwMlU1
日本語のようなハイコンテキスト言語はプログラミング言語に向かない
2025/06/28(土) 19:31:48.97ID:LhFbdsON
形式言語としてのプログラミング言語の記号列に用いる記号をどのような記号集合から取ってくるかというだけの話で、ASCIIが便利だったってだけだと思うけど。
だから、自然言語としての日本語・英語の性質はあんまり関係ないと思う。構文論・意味論は個々のプログラミング言語で定義されるわけだし。仮に「もし〜だったら」みたいに書けたとしても、期待に反して大して書きやすくはならないはず。
2025/06/28(土) 19:52:26.97ID:2qq3obCO
なでしこ言語(泣)
292デフォルトの名無しさん
垢版 |
2025/06/28(土) 20:13:15.90ID:Me3Cyfy2
もしも あしたが晴れならばの歌詞は色々と論理が破綻してる
2025/06/28(土) 20:35:26.86ID:uZ2SW2TW
財源が無いはずなのに消費税で上振れしている税収の財源があるのも論理破綻している
294デフォルトの名無しさん
垢版 |
2025/06/28(土) 20:44:32.94ID:uA5FL7Cc
>>290
その通り
普通にIF書いてたプログラマーからしたら全然書きやすくはない
しかし当時プログラマーなんて少ない時代に、わかりやすく書ける、読めることはメリットあった

例えば東京特許許可局という変数があったとき、これを英字にしたら読みやすさが激減する
苦肉の策な時代でした
(省略英字の日本語辞書を使って、ソースを読みやすくする現場もあった。SYH-ZEIを消費税とするような)
295デフォルトの名無しさん
垢版 |
2025/06/28(土) 20:45:50.18ID:nr2U5Q2u
俺は変数の宣言は日本語にしてる
ひらがな、カタカナ、漢字
それでトラブったことがないの
2025/06/28(土) 21:46:41.03ID:IE4mXjww
だが日本語変換の切替えがだるい
297デフォルトの名無しさん
垢版 |
2025/06/28(土) 22:01:41.58ID:uA5FL7Cc
>>296
変換をon、無変換をoffにしておくと楽
298デフォルトの名無しさん
垢版 |
2025/06/28(土) 22:05:51.33ID:sSoEJ15o
一応こんなのはある
C++言語によるお嬢様コーディングがブームの兆し!?
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1419370.html
299デフォルトの名無しさん
垢版 |
2025/06/29(日) 02:34:13.89ID:712DhJe3
こんなのも
https://eetimes.itmedia.co.jp/ee/articles/2506/27/news072.html
300デフォルトの名無しさん
垢版 |
2025/06/29(日) 08:26:19.87ID:MOD8edIy
改ページの点線を手動で移動させて1ページに収まる様に指定するのと(実はこれが自動改ページ)
横1ページ指定するのと(全列を1ページに収まる様に指定)
印刷した時の文字の大きさに差はありますか?
2025/06/29(日) 12:48:03.11ID:9LXkiqZz
シート上で指定した改ページはデータをページで区切るための指定
プリンター設定で拡大縮小できるし、紙が数ミリずれることもあるのでギリギリを狙うと失敗する
302デフォルトの名無しさん
垢版 |
2025/06/29(日) 17:00:44.93ID:MOD8edIy
>>301
プリンターの設定で必ずこの行から2ページ目にする
という設定ができるのでしょうか?

とりあえず今日調べてなんとなく挙動がわかった様な気がします
考えれば当たり前の話ですが、行を追加すると余分なページが挟まれる可能性があるのと、空白だけど(何かしら書式設定された痕跡があるからか)印刷対象になってしまっている行を削除しないといけない
303デフォルトの名無しさん
垢版 |
2025/06/29(日) 18:14:38.13ID:jfS/ezr/
印刷画面で1ページだけを5枚印刷とか
3,5~7ページだけを印刷とか指定できるので好きなページだけ印刷すればいいんじゃね
304デフォルトの名無しさん
垢版 |
2025/06/29(日) 18:29:48.73ID:jfS/ezr/
印刷すること自体をマクロでやったこと無いが
プレビューを確認してよければ印刷するくらいにしないと
インクや紙が無駄になるぞ
1万件のデータ印刷したら100ページとかw
305デフォルトの名無しさん
垢版 |
2025/06/29(日) 18:43:03.87ID:MOD8edIy
マクロから直接印刷はさすがにしてないです
pdf出力するのをしています
ちなみにどうしても縮尺指定にこだわりたい人の為に、縮尺指定→印刷プレビュー→印刷プレビュー閉じる→左右のページ数確認→ループのコードを書きました。
306デフォルトの名無しさん
垢版 |
2025/06/30(月) 06:28:01.78ID:m9Iz5ero
Excelの知識がなさすぎるひと向けに作るのはやめた方がいい
307デフォルトの名無しさん
垢版 |
2025/06/30(月) 11:45:51.43ID:jH/JIj4s
つかExcelVBAは使うのやめた方がいい
トラブルの元
2025/06/30(月) 11:49:50.48ID:JQmVBSaF
このスレで言うことか?
309デフォルトの名無しさん
垢版 |
2025/06/30(月) 18:11:33.26ID:CUdrd9La
印刷やろうとしてる人に向けてだろ…
でも明らかにセンスも作り込みスキルもなさそうだから同意
310デフォルトの名無しさん
垢版 |
2025/06/30(月) 20:01:12.87ID:9Mnf4Vk7
>>309
センスも作り込みスキルも無さそうでしょうか?
311デフォルトの名無しさん
垢版 |
2025/06/30(月) 20:48:43.72ID:XO4EHMtF
>>310
ごめん、そんなことはないけど
印刷のVBA化に無理に固執するもんじゃない
マジで
昔経験したからわかる
312デフォルトの名無しさん
垢版 |
2025/06/30(月) 20:54:02.73ID:9Mnf4Vk7
>>311
ありがとうございます
vbaで直接プリンターに飛ばすわけではありません
とりあえず改ページの仕様はいくらか理解できたと思います
2025/07/01(火) 00:25:06.97ID:AnMu1HLz
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
2025/07/01(火) 00:32:33.67ID:AnMu1HLz
続き。こういうのも多分いるよね。

指定した行数が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
315デフォルトの名無しさん
垢版 |
2025/07/01(火) 07:51:53.41ID:hLMayhbM
>>313
このコードは何をしているかというと、
21行目の上 つまり20行目と21行目に改ページを設定して
上にヘッダー?を設定して
縮尺解除
全列を1ページに収める
行のページ数は自動
用紙サイズはA4
という設定をしています
しかし、改ページの設定は
改ページビューの青い点線(実はこれが自動改ページ)ではないから
1ページと2ページに余分な空白のページが挟まる
2025/07/01(火) 12:47:55.21ID:cyOlFSbV
インスパイアされて作ってみた
関西のコミュニケーションの多様性にはリスペクトしか無い
https://89.gigafile.nu/0706-cf0368763b1caf00c266d1efc563aea36
ネィティブでは無いので誤りが有ったら指摘もらえば改良もやぶさかではない
Captionだけじゃ物足りないので喋らせてみたが、これが結構ドツボ
ExcelでのSpeakは、まだまだ途上らしい
317デフォルトの名無しさん
垢版 |
2025/07/01(火) 21:04:55.51ID:hLMayhbM
>>316
何をお作りになられたのでしょうか?
318デフォルトの名無しさん
垢版 |
2025/07/01(火) 23:30:56.43ID:uDpPxP0Z
俺氏、VBAで去年社内最優秀賞30万
今年はちょびちょび改善で出して1万6500円
抜群のセンスだわさ
2025/07/02(水) 00:01:46.59ID:0vwAlXoU
そう思うならさっさと転職して本職のITエンジニアになった方が稼げるよ
2025/07/02(水) 02:51:17.71ID:g2KaZT8X
AI時代にここの質問スレは盛況なのは何故だ
2025/07/02(水) 03:40:33.29ID:fiQBdOaz
AIがイマイチだから
2025/07/02(水) 07:59:03.99ID:02hJ4H7c
AIに書かせることはできても、それの検証はどのみち必要だから
323デフォルトの名無しさん
垢版 |
2025/07/02(水) 08:13:15.57ID:h5Fr+SaE
ガイジだけど質問ある?
死にたいガイジ…空気読めないガイジ…死にたいガイジ…
2025/07/02(水) 08:19:12.11ID:q22wzhF/
AIはうそつきだし
適度に事実も混ぜてくるから一番やっかい
2025/07/02(水) 08:29:36.52ID:8Lvzc6gd
やっかいだと思うなら使わなけりゃ良いだけなのに、
他人にもそうさせようとするのはなんで?
2025/07/02(水) 08:36:59.95ID:QMHVqlVc
>>317
[はい][いいえ]を関西弁で、という話題にインスパイアされて
・一つのユーザーフォームを使い回しできる方法
・セルの文字をボタンやラベルのキャプションにしてしまう方法
・何ならしゃべらせる方法
関西弁に限らず、広島弁でも博多弁でもかごんま弁でもとーほぐ弁でもご随意に
リンク先の[ダウンロード開始]ボタンで落とせる
うかつに開くといきなりダイアログが出てきてしゃべりだすので音量注意

OSに入ってるナレーターは、Haruka、Ayumi、Sayaka、Ichiroと選べるはずが
Wordと違ってExcelだとデフォルトのHaruka限定にされて変えられないとのことで
そこがドツボだった まぁ幸い解決方法を指南してくれてるサイトに辿り着けた
喋ってる間は全リソース奪われて他の操作は一切出来なくなるのは、如何ともし難いのか
2025/07/02(水) 08:47:20.48ID:q22wzhF/
関西弁のyes/no
それはええ/それはええ
2025/07/02(水) 08:49:18.32ID:q22wzhF/
>>325
個人の中で完結ならいいけど、AIの嘘回答でドヤってくるのが迷惑
2025/07/02(水) 08:52:51.46ID:8Lvzc6gd
>>328
嘘回答でドヤってきた奴に言えよ
十把一絡げに迷惑って言い散らかすのも充分迷惑だと気付かないのか?
330デフォルトの名無しさん
垢版 |
2025/07/02(水) 09:23:01.60ID:IvKsZJU4
AIにも種類あるからなぁ
問い方にもよるし
2025/07/02(水) 09:28:17.31ID:sOTx1Ysw
AIにテストとバグ取りまでやらせろ
2025/07/02(水) 11:09:29.63ID:QMHVqlVc
>>327 ww
333デフォルトの名無しさん
垢版 |
2025/07/02(水) 12:42:29.90ID:PqQB+KG0
AIに作らせて出来てなかったら投げかけるだけだろ
こんなIT音痴な奴がVBA触ってる事にビビる大木
2025/07/02(水) 19:40:08.71ID:WTqAcEsV
AI使って嘘の回答だったら質問変えたりコード直せばいいだけでしょ。
実際自分で調べるよりもめちゃくちゃ早いし便利に使えてるよ。


人間は平気で嘘つくのにAIに嘘つくなって求めるのはおかしいでしょ。
2025/07/02(水) 20:01:38.68ID:0vwAlXoU
VBAの場合は他のメジャーなプログラミング言語と比べて平均的な人間とAIの差が大きすぎるから、いきなりゼロショットで指示すると期待通りの結果が得られにくい
もちろんAIの方が上だ
AIに対して予め既存のコードをサンプルとして与えてあげてレベル感を知ってもらうと、いい感じに合わせてくれるよ
2025/07/03(木) 10:04:12.85ID:q23h/8z8
「嘘の回答だったら」
そもそも嘘かどうか知ってるなら聴く必要が無い
結局嘘じゃないことを調べるのにそれ以上に時間がかかる
2025/07/03(木) 10:05:56.29ID:q23h/8z8
「人間は平気で嘘つくのに嘘つくなって求めるのはおかしい」
判らんのに平気で嘘回答するネラーも多い罠
338デフォルトの名無しさん
垢版 |
2025/07/03(木) 10:16:58.13ID:gVoGF6e7
政治家の財源がないは嘘
339デフォルトの名無しさん
垢版 |
2025/07/03(木) 10:28:29.92ID:q23h/8z8
學歴も嘘
2025/07/03(木) 10:37:23.12ID:cEJAYS/6
>>337
だから話半分に聞くだろ?
AIの回答もそういう姿勢で、参考にはするけど盲信しないことが大事
全部鵜呑みにするならそいつももはやAIと変わらん
2025/07/03(木) 10:44:24.00ID:q23h/8z8
340
どうみてもAI以下です
342デフォルトの名無しさん
垢版 |
2025/07/03(木) 20:41:52.66ID:1CjDULGZ
こんなAIの本質をわかってないような奴らが作るVBAなんてたまらんよ
2025/07/03(木) 20:45:28.43ID:NNwfFfCt
>>342
AIのプロフェッショナル様だ!
我らに叡智を与えたまえ!
2025/07/03(木) 21:14:39.37ID:zL884xZP
どこの誰がなにをどう作ろうとも、その成果物に実際に触る訳でも無いし
それに依って迷惑を被る訳でも無いだろ?
ナニを上から目線で大口叩いてんだか
偶々そのソースを目にすることがあろうとも、評価してくれと頼まれた訳でも無いし
VBA評議会の高位評議員という立場でも無いだろ 何がしたいん?
2025/07/03(木) 22:51:34.02ID:IBfGzwrB
>>336
AIに質問すればコードの1行ずつ丁寧に解説してくれるけどそれでも正しいかどうか調べるのに時間がかかるの?
2025/07/03(木) 22:55:11.76ID:x0A3mg3D
それをAIに1行ずつ丁寧に解説させて、その内容をさらにAIに解説させて.....以下略
347デフォルトの名無しさん
垢版 |
2025/07/03(木) 23:14:39.22ID:1CjDULGZ
どんだけAIに質問投げるの下手なんだよマジでよー
2025/07/03(木) 23:19:49.48ID:IBfGzwrB
人間と同じで相性なんですかね。
合わないものは合わないのかなぁ。
2025/07/04(金) 08:07:10.89ID:3EnEQ/Df
>>345
AIだろうと人だろうと成果物のテストするだろ
何のためにテストすると思ってるの?
350デフォルトの名無しさん
垢版 |
2025/07/04(金) 09:00:20.43ID:fF3rQ1JL
AIに投げる質問を造るのがうまいと言うことは既にAIに聴く必要が無いんだわ
2025/07/04(金) 13:21:56.31ID:3EnEQ/Df
それは違う
プロンプトエンジニアリング能力と他の能力は別物
2025/07/04(金) 15:02:13.77ID:pEhONqjq
だったらAIにでも話してろよ
353デフォルトの名無しさん
垢版 |
2025/07/04(金) 18:27:01.53ID:0E9WgSh7
一生懸命コードの基礎学んだのにセンスが無い奴は必死になるよなそりゃ
2025/07/04(金) 19:13:39.58ID:3EnEQ/Df
>>353
2025/07/04(金) 21:05:20.15ID:rizrt2ys
>>349
言いたいことがよくわからないです。

おっしゃってるようにAIでコードを書いても人で書いてもテストはします。
ただAIで書いたコードのテストは人のコードより時間がかかるというお話ですか?
丁寧にAIに教えてもらえても?
AIは関係ないと思うけど違うのかな。
2025/07/04(金) 21:22:07.36ID:JLFKZ1OE
>>355
どこの何をテストする必要があるのかを判断できる能力がある、
もしくはどこの何をテストする必要があるかを導くプロンプトを書ける、
もしくは必要な箇所なテストまで終えるプロンプトをかけるなら問題ない
2025/07/05(土) 06:16:26.93ID:+cv+JpUz
>>356
例えばCSVファイルを開くときのテストケースを教えてってAI聞いてみたけど答えてくれたよ。


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

主なテストケース一覧
・CSVファイルが存在し開ける 正常にファイルを開けることを確認
・ファイルが存在しない場合 指定されたCSVが見つからない場合の対処
・既に開かれているブックかどうかを確認
・読み取り専用のCSVを開けるかどうか のテスト
・空のCSVファイル 内容が空でもエラーにならないか確認
・文字コードに関わるデータが正しく読めるかのテスト
・CSVの列数・行数が極端に多い たくさんのデータがあるときの パフォーマンスの確認
・ダブルクォートやカンマを含むセル "東京,品川"のようなセルが正しく扱われるか セル確認
・ファイルロックされている場合のエラー回避の確認
2025/07/05(土) 06:51:38.76ID:pq8ewG8r
>>357
それだとハルシネーションが含まれていた場合のことを考慮できてない
2025/07/05(土) 08:48:09.96ID:rEK7AeQH
>>357
余計な型変換に関する確認が必要
0312345678 → 312345678
1-2 → 1月2日
2025/07/05(土) 08:57:41.98ID:rEK7AeQH
古いExcelでは先頭がIDだとSYLK扱いされる問題もあるな
361デフォルトの名無しさん
垢版 |
2025/07/05(土) 09:10:19.51ID:+boHNEOG
>>357
csvファイルへのショートカットだった場合のチェックがない
開くと読み込みを一緒にしているのが気になった
その前にもともと自力でできる作業なら初めからAIは使わないだろうし
AIが示さない項目を無視していいかの判断ができるのかな
主な項目だからそれ以外もあるよとか後になって言うのはどうかと思うし
362デフォルトの名無しさん
垢版 |
2025/07/05(土) 09:13:22.18ID:gPk7JHhb
ショートカット?これは馬鹿のふりしてるの?
363デフォルトの名無しさん
垢版 |
2025/07/05(土) 09:31:15.35ID:vyFcCxL+
ショートカットでもcsv開くことがあるがcsvでないことはしっている
2025/07/05(土) 09:35:20.09ID:eCCJvae8
既にAIの知能が人間を遥かに超えており、ボトルネックがバカな人間であることがよくわかるスレ
365デフォルトの名無しさん
垢版 |
2025/07/05(土) 09:46:16.30ID:vyFcCxL+
うちの環境が普通でないなら無視してくれて構わんよ
366デフォルトの名無しさん
垢版 |
2025/07/05(土) 09:55:15.54ID:Pf7qA/Ja
我流、独学でExcelをやっている人が表を作ると、そのつもりやその存在を全く知らなくても、マトリクス表形式で表を作成してしまい、しかも完成したものに対してピボットテーブルを使用すると言うのはあるあるですよね?
2025/07/05(土) 10:34:06.26ID:+cv+JpUz
>>358
それを自分で確認したらダメなんです?

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

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

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

ただAI丸投げの流れは止められないでしょうね。
368デフォルトの名無しさん
垢版 |
2025/07/05(土) 11:46:24.77ID:dpOItoML
>>357
CSVカラムの途中で改行が入る場合
369デフォルトの名無しさん
垢版 |
2025/07/05(土) 15:15:49.95ID:y/LWjdC1
「俺が流れを止めるからお前は先に行け!」みたいなこと言ってみたいね
2025/07/05(土) 15:50:51.02ID:8jsOt+Pc
「その作業が本当に必要かどうか、もう一度考え直す」
2025/07/05(土) 19:53:47.88ID:AqSnrZiN
>>370
それはVBA職人的にはタブーでしょ
人力でやってた仕事というのは、自動でやるなら本質的にはそもそもやる必要のないものが多い
VBAはワークフローの改善に踏み込むことなくただ人力作業を単純に自動化するのが王道で、
仕事の意味を問うてしまうとVBAの仕事が減ることに繋がる
2025/07/05(土) 22:49:12.14ID:+cv+JpUz
>>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形式のファイル
2025/07/05(土) 23:41:01.05ID:8jsOt+Pc
>>372
・パスが長すぎる場合
・処理系による改行コードの違い
・ファイル全体でダブルクォートが奇数個(閉じられていない)
・巨大すぎる(項目のサイズ、項目の数、行数)
・ファイルの破損(バイナリデータ混入など)
・ファイルシステムの破損、不良セクタなど
2025/07/06(日) 02:30:01.30ID:N2XXWgcj
>>372
Workbooks.OpenでCSVを読むならテスト項目ほとんど要らなくね?
テキストファイルとして読んで、列と行の分割処理をするなら、
CSVのフォーマット定義を先にやらないとテスト項目作れなくね?
読み込みファイルの指定方法も先に決める必要がなくね?
2025/07/06(日) 06:55:32.42ID:hfT56Vvk
>>373-374
Claude様に聞いてやったぞ

373と374は的外れすぎる

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

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

372が一番まとも。実際の開発で遭遇する問題を的確に押さえてる​​​​​​​​​​​​​​​​
2025/07/06(日) 08:00:56.53ID:N2XXWgcj
>>375
外部仕様を先に決めるべきという意味だったんだけど、それも間違ってんの?
CSV=RFC4180というのは一般的じゃない気が・・・
Workbooks.Openを使うなら、「CSVフォーマットはExcelのAPIのそれ」で決定だからAPI動作の二重チェックは不要かな〜と。
2025/07/06(日) 12:05:21.27ID:Jlu3MuzZ
セマフォは?
別プロセスが同じファイルを開いてるから今は処理すべきでない、とか
378372
垢版 |
2025/07/06(日) 21:01:04.07ID:jU0PBm+8
すみません。
昨日テストケースをすべて載せるつもりだったのですが書き込み制限で書けず途中で諦めました。

テストケースは37項目まであります。
2025/07/07(月) 09:23:50.46ID:GhKlbyJu
だが、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
2025/07/07(月) 10:00:11.48ID:xGHCrZSN
>>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使え​​​​​​​​​​​​​​​​​
2025/07/07(月) 10:31:44.26ID:GhKlbyJu
>>380
変数宣言は行数の都合でカットしたのでCopilot君は悪くない
2025/07/07(月) 14:15:38.83ID:quoGln+a
>>379
ChatGPTだとこんな感じですね。
そのまま貼り付けたので全角も見てくれてる。


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

補足(改善点)
・CSVに カンマを含むセル がある場合、Splitだけでは不十分(→正確なCSV解析が必要)。
・ファイル存在チェック (Dir(FilePath) など) を入れるとより堅牢になります。
・Shift-JIS以外の文字コード(例:UTF-8 BOM付き)は Open では正しく読み込めないことがあります。
383デフォルトの名無しさん
垢版 |
2025/07/07(月) 22:35:59.87ID:CvRTuASj
バグも直してもらえばいいんじゃね
2025/07/08(火) 00:47:00.39ID:urjDQqc8
今日の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:=完全パス

直った
2025/07/08(火) 01:58:30.92ID:9X9f1TC3
Format:=6なんて絶対使わないのに、どこからコピペしてきたんだよ
386デフォルトの名無しさん
垢版 |
2025/07/08(火) 10:53:17.46ID:Lf/Jcjxk
馬鹿の上塗り
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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