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] パスが流動的ってこと? 指定する以外にやったことないわ