Excel VBA 質問スレ Part83 (475レス)
上下前次1-新
1: 06/08(日)11:06 ID:j4jIPbHU(1) AAS
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part82
2chスレ:tech
349(1): 07/04(金)08:07 ID:3EnEQ/Df(1/3) AAS
>>345
AIだろうと人だろうと成果物のテストするだろ
何のためにテストすると思ってるの?
350: 07/04(金)09:00 ID:fF3rQ1JL(1) AAS
AIに投げる質問を造るのがうまいと言うことは既にAIに聴く必要が無いんだわ
351: 07/04(金)13:21 ID:3EnEQ/Df(2/3) AAS
それは違う
プロンプトエンジニアリング能力と他の能力は別物
352: 07/04(金)15:02 ID:pEhONqjq(1) AAS
だったらAIにでも話してろよ
353(1): 07/04(金)18:27 ID:0E9WgSh7(1) AAS
一生懸命コードの基礎学んだのにセンスが無い奴は必死になるよなそりゃ
354: 07/04(金)19:13 ID:3EnEQ/Df(3/3) AAS
>>353
?
355(1): 07/04(金)21:05 ID:rizrt2ys(1) AAS
>>349
言いたいことがよくわからないです。
おっしゃってるようにAIでコードを書いても人で書いてもテストはします。
ただAIで書いたコードのテストは人のコードより時間がかかるというお話ですか?
丁寧にAIに教えてもらえても?
AIは関係ないと思うけど違うのかな。
356(1): 07/04(金)21:22 ID:JLFKZ1OE(1) AAS
>>355
どこの何をテストする必要があるのかを判断できる能力がある、
もしくはどこの何をテストする必要があるかを導くプロンプトを書ける、
もしくは必要な箇所なテストまで終えるプロンプトをかけるなら問題ない
357(4): 07/05(土)06:16 ID:+cv+JpUz(1/3) AAS
>>356
例えばCSVファイルを開くときのテストケースを教えてってAI聞いてみたけど答えてくれたよ。
VBAでCSVファイルを開く処理に対して、以下のようなテストケースを行うと、動作の信頼性やエラー対策が強化できます。
主なテストケース一覧
・CSVファイルが存在し開ける 正常にファイルを開けることを確認
・ファイルが存在しない場合 指定されたCSVが見つからない場合の対処
・既に開かれているブックかどうかを確認
・読み取り専用のCSVを開けるかどうか のテスト
・空のCSVファイル 内容が空でもエラーにならないか確認
・文字コードに関わるデータが正しく読めるかのテスト
省3
358(1): 07/05(土)06:51 ID:pq8ewG8r(1) AAS
>>357
それだとハルシネーションが含まれていた場合のことを考慮できてない
359(1): 07/05(土)08:48 ID:rEK7AeQH(1/2) AAS
>>357
余計な型変換に関する確認が必要
0312345678 → 312345678
1-2 → 1月2日
360(1): 07/05(土)08:57 ID:rEK7AeQH(2/2) AAS
古いExcelでは先頭がIDだとSYLK扱いされる問題もあるな
361(1): 07/05(土)09:10 ID:+boHNEOG(1) AAS
>>357
csvファイルへのショートカットだった場合のチェックがない
開くと読み込みを一緒にしているのが気になった
その前にもともと自力でできる作業なら初めからAIは使わないだろうし
AIが示さない項目を無視していいかの判断ができるのかな
主な項目だからそれ以外もあるよとか後になって言うのはどうかと思うし
362: 07/05(土)09:13 ID:gPk7JHhb(1) AAS
ショートカット?これは馬鹿のふりしてるの?
363: 07/05(土)09:31 ID:vyFcCxL+(1/2) AAS
ショートカットでもcsv開くことがあるがcsvでないことはしっている
364: 07/05(土)09:35 ID:eCCJvae8(1) AAS
既にAIの知能が人間を遥かに超えており、ボトルネックがバカな人間であることがよくわかるスレ
365: 07/05(土)09:46 ID:vyFcCxL+(2/2) AAS
うちの環境が普通でないなら無視してくれて構わんよ
366: 07/05(土)09:55 ID:Pf7qA/Ja(1) AAS
我流、独学でExcelをやっている人が表を作ると、そのつもりやその存在を全く知らなくても、マトリクス表形式で表を作成してしまい、しかも完成したものに対してピボットテーブルを使用すると言うのはあるあるですよね?
367: 07/05(土)10:34 ID:+cv+JpUz(2/3) AAS
>>358
それを自分で確認したらダメなんです?
>>359
>>360
>361
指摘ありがとうございます。
主な一覧だったのでテスト例はさらに出てきたかもしれないです。
開くと読み込むは問い合わせ方が悪かったかもです。
AIで出てこなかった項目が無視できるかどうかの判断は難しいですね。
明らかにテストしなきゃいけない項目がAIで抜けててAI丸投げで作った製品を納品されると怖いものがありますね。
省1
368(1): 07/05(土)11:46 ID:dpOItoML(1) AAS
>>357
CSVカラムの途中で改行が入る場合
369: 07/05(土)15:15 ID:y/LWjdC1(1) AAS
「俺が流れを止めるからお前は先に行け!」みたいなこと言ってみたいね
370(1): 07/05(土)15:50 ID:8jsOt+Pc(1/2) AAS
「その作業が本当に必要かどうか、もう一度考え直す」
371: 07/05(土)19:53 ID:AqSnrZiN(1) AAS
>>370
それはVBA職人的にはタブーでしょ
人力でやってた仕事というのは、自動でやるなら本質的にはそもそもやる必要のないものが多い
VBAはワークフローの改善に踏み込むことなくただ人力作業を単純に自動化するのが王道で、
仕事の意味を問うてしまうとVBAの仕事が減ることに繋がる
372(3): 07/05(土)22:49 ID:+cv+JpUz(3/3) AAS
>>368
指摘ありがとうございます。
もう回答を全部出してみたよ。
これ以外でテストケースがあるなら負けです。。。
VBAでCSVファイルを開いて読み込む際には、さまざまなケースに対応する必要があります。考えうるテストケースをカテゴリ別に網羅的に洗い出します。
基本ケース
1 正常なCSVファイルを開いて正しく読み込めるか
2 ファイルが存在しない場合のエラー処理
3 空のCSVファイルを読み込んだときの動作
4 CSVファイルのパスに全角文字・日本語が含まれる場合
省11
373(1): 07/05(土)23:41 ID:8jsOt+Pc(2/2) AAS
>>372
・パスが長すぎる場合
・処理系による改行コードの違い
・ファイル全体でダブルクォートが奇数個(閉じられていない)
・巨大すぎる(項目のサイズ、項目の数、行数)
・ファイルの破損(バイナリデータ混入など)
・ファイルシステムの破損、不良セクタなど
374(1): 07/06(日)02:30 ID:N2XXWgcj(1/2) AAS
>>372
Workbooks.OpenでCSVを読むならテスト項目ほとんど要らなくね?
テキストファイルとして読んで、列と行の分割処理をするなら、
CSVのフォーマット定義を先にやらないとテスト項目作れなくね?
読み込みファイルの指定方法も先に決める必要がなくね?
375(1): 07/06(日)06:55 ID:hfT56Vvk(1) AAS
>>373-374
Claude様に聞いてやったぞ
373と374は的外れすぎる
373について
・「ファイルシステム破損、不良セクタ」→ システム障害テストの範疇、CSV処理テストじゃない
・「ファイル破損(バイナリ混入)」→ 同上、テスト範囲を混同してる
・「巨大すぎる」→ パフォーマンステスト、機能テストと分けろ
改行コードとダブルクォート奇数個は有効だが、他は論点ズレ
374について
完全に間違ってる
省4
376: 07/06(日)08:00 ID:N2XXWgcj(2/2) AAS
>>375
外部仕様を先に決めるべきという意味だったんだけど、それも間違ってんの?
CSV=RFC4180というのは一般的じゃない気が・・・
Workbooks.Openを使うなら、「CSVフォーマットはExcelのAPIのそれ」で決定だからAPI動作の二重チェックは不要かな〜と。
377: 07/06(日)12:05 ID:Jlu3MuzZ(1) AAS
セマフォは?
別プロセスが同じファイルを開いてるから今は処理すべきでない、とか
378: 372 07/06(日)21:01 ID:jU0PBm+8(1) AAS
すみません。
昨日テストケースをすべて載せるつもりだったのですが書き込み制限で書けず途中で諦めました。
テストケースは37項目まであります。
379(2): 07/07(月)09:23 ID:GhKlbyJu(1/2) AAS
だが、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, ",")
省7
380(1): 07/07(月)10:00 ID:xGHCrZSN(1) AAS
>>379
CopilotはVBAerほどじゃないにせよアホの子だからね
以下、Claude Opus 4 with extended thinkingの回答
主なバグ:
1. カンマを含む値(“Tokyo, Japan”等)が分割される
2. エラー処理なし。ファイルなかったら死ぬ
3. 変数宣言してない(Option Explicit使ってたらエラー)
4. UTF-8読めない。日本語文字化け
5. セル1個ずつ書き込みでクソ遅い
6. 前のデータ消さないから残る
省4
381: 07/07(月)10:31 ID:GhKlbyJu(2/2) AAS
>>380
変数宣言は行数の都合でカットしたのでCopilot君は悪くない
382: 07/07(月)14:15 ID:quoGln+a(1) AAS
>>379
ChatGPTだとこんな感じですね。
そのまま貼り付けたので全角も見てくれてる。
バグ・問題点
1 変数の未宣言
2 インデントに全角スペースが混在
3 変数 i の Dim がループ内にある
補足(改善点)
・CSVに カンマを含むセル がある場合、Splitだけでは不十分(→正確なCSV解析が必要)。
・ファイル存在チェック (Dir(FilePath) など) を入れるとより堅牢になります。
省1
383: 07/07(月)22:35 ID:CvRTuASj(1) AAS
バグも直してもらえばいいんじゃね
384: 07/08(火)00:47 ID:urjDQqc8(1/2) AAS
今日の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ファイル名に変更
完全パス = ファイルパス & ファイル名
省2
385(1): 07/08(火)01:58 ID:9X9f1TC3(1) AAS
Format:=6なんて絶対使わないのに、どこからコピペしてきたんだよ
386: 07/08(火)10:53 ID:Lf/Jcjxk(1) AAS
馬鹿の上塗り
387(1): 07/08(火)16:04 ID:J6qvAQ9A(1) AAS
このスレ沼しか居ねぇな…google ai studioの方がまだ良い解答してくれんぞ…
388: 07/08(火)17:01 ID:G3ulfBZW(1/2) AAS
>>387
とても鋭い視点です。さすがですね!
389(1): 07/08(火)17:33 ID:BCBq8ImS(1) AAS
studio と名付けられてる意味わかってんのかな?
中の人はGeminiそのものらしいじゃんか
390: 07/08(火)17:42 ID:yBGpSZNW(1) AAS
>>389
その論理だとChromeとChrome OSも比較できないことになるが?
同じモデル使ってても実装・UI・機能が違えば体験は全然違うぞ
StudioはAPI統合やパラメータ調整できる開発者向けツール、コンシューマー版Geminiとは設計思想が違う
「中の人が同じ」で比較無意味論は技術理解が浅すぎる
387の解答品質指摘は妥当な比較対象だし、実際のユーザー体験差を無視してる時点で的外れ
とAI様が仰せになっている
391: 07/08(火)18:21 ID:urjDQqc8(2/2) AAS
>>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 を使うのが正解です。
省1
392: 07/08(火)18:33 ID:G3ulfBZW(2/2) AAS
うちでは2って教えてくれた
393: 07/09(水)08:08 ID:NYgpwKZ5(1) AAS
つまり、開発環境てことだろ? その中の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同士で比較して見せるとかならまだしも
省1
394: 07/09(水)08:48 ID:/UzV6WSq(1) AAS
スレ違いの長文とか救えない
395: 07/09(水)09:32 ID:EKMDM/sM(1) AAS
391
x 間違って記憶している
o 過學習でアホになった
396: 07/09(水)10:08 ID:MuvaPJLR(1) AAS
LLMで過学習…?
397: 07/09(水)10:36 ID:1h9feY7y(1) AAS
391
x 間違って記憶している
o 円形脱毛症でハゲになった
398: 07/14(月)13:04 ID:GLg5N4aG(1) AAS
外部リンク[html]:forest.watch.impress.co.jp
「JScript」に代わり「JScript9Legacy」が既定のスクリプトエンジンに ~Windows 11 24H2以降で
399: 07/15(火)10:46 ID:1v3q9PKm(1/2) AAS
Windows11の24H2にしたらJScriptが動かない
外部リンク:blog.macorin.net
400(2): 07/15(火)11:19 ID:IENqpxZQ(1/2) AAS
毎日夜中の定刻に、気象庁Webサイトの2つのページからcsv落として月次集計する、
マクロとPowerQuery使った2×2の4つのブックを
VBS(例:以下)とタスクスケジューラーを使ってやらせてるんだけど、
いい加減、VBS部分を乗り換えるとしたら、
何がとっつきやすいのかな?
PowerShell?
PowerAutomate?
Python?
---例:DLブックを実行させるVBS---
Const WB_PATH = "E:\集計\01_DLファイル\DLブック_地点A.xlsm"
省12
401(1): 07/15(火)11:31 ID:izh84eSC(1) AAS
>>400
**PowerShell**がおすすめです。
理由:
- VBSに最も近い書き方
- Excelの操作がそのまま使える
- Windowsに標準搭載
- 学習コストが低い
移行例:
```powershell
$excel = New-Object -ComObject Excel.Application
省7
402: 07/15(火)11:33 ID:l/eryieH(1) AAS
vbsに近いならjsだろう
403(1): 07/15(火)11:52 ID:1v3q9PKm(2/2) AAS
PowerShellは遅くてびっくりするのと
COM(IDispatch)経由の操作なので基本的に書き方はvba/vbsを踏襲する
普通に使うと割とつまらない
404: 07/15(火)11:53 ID:SjeLYLBh(1) AAS
>>400
スレ違い
405(1): 07/15(火)13:45 ID:IENqpxZQ(2/2) AAS
>>401,403
ありがとう。やってみる。
406: 07/15(火)18:57 ID:F7nJfSiA(1) AAS
やっぱり馬鹿かよ
407(2): 07/16(水)22:35 ID:6RqIkTEU(1) AAS
目的のフォルダを取得する効率的なコードを教えてください
1番効率的なのはフォルダのフルパスそのものを取得する事ですが、それも難しいので各階層の部分一致でお願い致します
408: 07/16(水)22:45 ID:NiCGeJue(1) AAS
パスが流動的ってこと?
指定する以外にやったことないわ
409: 07/16(水)23:01 ID:IRXrFh0B(1) AAS
部分一致が複数あるとして、その順番が入れ替わる可能性があるかどうかでコードが変わるね
410(1): 07/17(木)00:19 ID:zBpNwhAR(1/4) AAS
コード\分類\フォルダ\期間別フォルダ\探したいファイル
みたいな感じですね
411: 07/17(木)00:24 ID:Nf2HlQRn(1) AAS
>>405
Powershellからcom呼ぶときはしっかりお片付けしてね
適当にやるとC#と一緒でゴミが残る(かも)だから
412: 07/17(木)01:52 ID:gLLqR9ZX(1) AAS
>>407
馬鹿は「効率的」は何が効率的なのかとかすら説明できない
413: 07/17(木)05:21 ID:tC2PFukj(1) AAS
馬鹿じゃなきゃこんなところで聞かない
414: 07/17(木)07:17 ID:wYenyBlK(1) AAS
こう言うことなんじゃないの? ディレクトリ(フォルダ)名が曖昧な記憶だから
漠然とした検索してファイル見付けたい とかなんじゃ
外部リンク:www.limecode.jp
3パターン提示してくれてるから、どれでもお好きなもので・若しくは全部使ってもいいし
一年365日ばかしか書けない誰かさんは無視しとけばいいよ
彼は馬鹿と書き込むのがじぶんのDutyだと思い込んでる節があるし 認知の病なんだろうきっと
415: 07/17(木)07:36 ID:rYvcj5zc(1) AAS
彼はこんなとこでしかマウントとれないかわいそうなやつなんだ
そっとしといてあげよう
416(1): 07/17(木)07:41 ID:aYpECmLq(1) AAS
>>407
目的のフォルダはどうやって示されてるの?
効率的っていうのは、何に対するパフォーマンスを指してる?
417(3): 07/17(木)08:47 ID:sGHKyXGW(1) AAS
>>410
Dirでワイルドカードが使えるので、こんな感じに仕上げてみた
※ヒットするパスの例 → C:\Documents\A001\B000X1\Excel\20250717\FileABC001.xlsx
HomePath = "C:\Documents"
SearchPath = "A???\B*\Excel\2025????\File*.xlsx"
ResultPath = HomePath
SearchPathList = Split(SearchPath, "\")
For I = 0 To UBound(SearchPathList)
If Dir(ResultPath) <> "" Then
ResultPath = "ファイルの下は何もないよ!"
省10
418: 07/17(木)09:28 ID:TqONBLPd(1) AAS
あたしゃ、ディレクトリ関係は「見える」の重視で、このあたり参考にしてワークシート関数でやっちゃうけど
外部リンク[php]:qwerty.work
419: 07/17(木)20:37 ID:zBpNwhAR(2/4) AAS
>>417
正規表現の様な事ができたのでしょうか?
420: 07/17(木)20:38 ID:zBpNwhAR(3/4) AAS
>>416
例えばファイルシステムオブジェクトの再帰処理で全フォルダをループしてしまうのは非効率だなぁという事です
421: 07/17(木)21:05 ID:zBpNwhAR(4/4) AAS
>>417
本当に複数の階層で部分一致できますでしょうか?
422: 07/17(木)23:17 ID:mypLb9KX(1) AAS
釣りでなければ真正馬鹿で確定
423: 07/17(木)23:26 ID:DMF1qliv(1) AAS
Chatさん。未検証
再帰使わずキュー処理
Sub FastSearchMinimal()
Dim fso As Object, q As Collection, f As Object, i As Object
Dim r As Long: r = 2
Dim k As String: k = "sample"
Set fso = CreateObject("Scripting.FileSystemObject")
Set q = New Collection: q.Add fso.GetFolder("C:\TestFolder")
With Sheets(1): .Cells.Clear: .Range("A1:C1").Value = Array("種類", "名前", "パス"): End With
Do While q.Count > 0
省11
424: 07/18(金)03:56 ID:kCxulfmG(1) AAS
若い子はChatGPTのことチャッピーと呼んでる
425: 07/18(金)08:09 ID:JhLn+KYd(1) AAS
Sub 探す()
Dim fso As Object,root As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' ルートフォルダを取得して再帰処理スタート
Set root = fso.GetFolder("パス")
再帰処理 root
End Sub
'―――――――――――――――――――――――――――――――
Private Sub 再帰処理( ByVal f As Object)
Dim file as Object,fpath as string
省12
426: 07/18(金)08:22 ID:avd6O0J8(1) AAS
AA省
427(1): 07/18(金)09:23 ID:J+L+9run(1) AAS
要件定義せず走り出すとこうなるという見本
428: 07/18(金)10:47 ID:kfpMJi4P(1/3) AAS
ま、それぞれがこれに取り組むことで、それなり成長する(こともある)んだから、いいじゃん
外野から思索も模索もせずにつべこべ小言書くことしかできないご老体には言わせときゃいいだけ
相談者、夜中にしか出張って来ないから、日中に迷走するのはやむを得ない
やりたいことは何となく見えてきたけど、それをどう実装したいのか?誰に使わせたいのか?何のために作るのか?
とかがイマイチ漠然としてて、方向ぐらいは提示して欲しいのはある
エクスプローラー開いて検索じゃあダメな理由とか、ファイルじゃ無くてフォルダ(名)に拘ってるように読めて
例えば、各々が勝手にフォルダ作ってファイル放り込んでるのを是正したいんだ、とかなのか
もう一歩踏み込んだ相談が出て来るまで待機、も有り得る
429(1): 07/18(金)16:30 ID:aPZeO8n7(1) AAS
VBAの作り方が上手すぎて情シスに異動させられそうになったセンスの塊こと俺だけどよく構文を知ってるとかテキスト通りにとか気にしてる奴は3流よ
使用者の使いやすさにまず全振り
次に拡張性を気にすりゃメンテナンスもしやすくなる
エラー回避しない奴は論外
でも結局はどう動かすかなんよ
430: 07/18(金)16:43 ID:AbgnUBWx(1) AAS
Aという処理をVBAでさせようってお手本みたいなコードを書いてもそのA自体にセンスが無い奴が多いんだよな
それが役職も評価も年収も上がらないVBAを勉強しただけのおぢさん
431(2): 07/18(金)17:25 ID:kfpMJi4P(2/3) AAS
>>427 読み直したら、ID末尾runだけに?
432: 07/18(金)18:03 ID:tx5irUc8(1) AAS
>>431
みんながみんなエスパーしながら好きに書いてる何を読み直すの?
433(2): 07/18(金)20:55 ID:kfpMJi4P(3/3) AAS
わかんなきゃいいよw カリカリすんなよ
フォルダ名を取得する記事見付けた 検索文字で絞る事もできる *とか?とかも要らん
外部リンク[html]:tmkr7788.livedoor.blog
で、一番上のフォルダ指定するのが手入力っぽいから、それも自動取得するなら
Sub Sample()
Dim FPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\ほにゃらら"
.Title = "フォルダを選択してください"
If .Show = -1 Then
省7
434: 07/18(金)21:22 ID:VbDqcBb9(1) AAS
>>431
これ何言ってるのか理解できない
なにがrunだけに、なのか
435(1): 07/19(土)04:46 ID:s8PmOx3D(1) AAS
>>45
え、Accessは2027年で使えなくなるの!?
436: 07/19(土)06:29 ID:QjhfSjEw(1) AAS
>>433
馬鹿
437(1): 07/19(土)07:33 ID:xtuIEHIA(1) AAS
>>435
Access2027が最後のAccessになるって、
Windows10が最後のWindowsになるって言ったMicrosoftが言ってた
438: 07/19(土)08:03 ID:hkkuRgMQ(1) AAS
昨日初めてwin12て使ってる記事見たわ
439(1): 07/19(土)09:32 ID:S5W6kZB3(1/2) AAS
指定したフォルダ以下の、サブフォルダとファイルを取得する記事も見付けた
>>433 のは、フォルダのみだけど、その中身もそのファイル情報も見れるのはいい
何よりシンプル 開きたい場合は上のを参考にすればいいと思う
外部リンク:akira55.com
ExcelにTreeViewって無かったっけ?とか思い直してググってて辿り着いた
TreeViewを実装しようと試みて、みんな大好きTANAKAさんのサイト参考にしようとしたら
Form上に配置するのに、その他のコントロールから選ばなきゃならなく成ってて
ImageListに至っては追加はできてもプロパティ変更しようとするとエラー 64bitのせい?
TANAKAの例はExcel2003で説明してるからなのか もはやオワコンなのか なぞ
まぁ、後日のメンテとかも面倒そうだから、Sheet上に書き出すのがいちばん楽なんだろうな
440: 07/19(土)10:05 ID:TEpbrrsS(1) AAS
>>437
きっとwin11はwindowsではない新種のOSなんだろう
441(1): 07/19(土)15:57 ID:ZTd2BQVd(1) AAS
>>439
実行結果のファイルうpしてみて
442: 07/19(土)16:20 ID:A8cbKdEJ(1) AAS
パス長いとかいい加減にしろとな
443: 07/19(土)16:52 ID:S5W6kZB3(2/2) AAS
>>441 ? リンク先に実行結果の画像出てるけど?
他に何を出せと? おれが実行した後のファイルなんて
中身まるごと見られたら困るものだらけだから、嫌なんだけど?
444(1): 07/20(日)12:26 ID:UYPMBFMH(1) AAS
見られて困るものだらけのPCって犯罪的な?
445(1): 07/23(水)07:42 ID:jnXMDL+k(1/2) AAS
>>429
その様にコードを書いてマクロを作成するのに何日くらいかかりますか?
446(1): 07/23(水)08:46 ID:Rz/tc4F0(1) AAS
回避ルートが無い場合はエラーで止まる分は放置だな
下手なメッセージ出して止まるより分かりやすい
447(1): 07/23(水)10:53 ID:S2JD2z+w(1) AAS
>>444
C:\ドキュメント\重要機密\A~E(1)\新しいフォルダ\巨乳物
>>445
俺はこの道30年、最近やっとコメントをしっかり書く習慣が身についてきた感じがしてる
昔も一応は書いてたけど、今見ると言葉が足りてなさすぎて解読に苦労する
>>446
自分だけが使うんならいいけど、他人はエラーメッセージとかさっさと消しちゃったり自力で解決しようとして何が起きたかわからなくされちゃうからなあ
448: 07/23(水)19:11 ID:jnXMDL+k(2/2) AAS
>>447
コメントですか
AIに書かせると楽かもしれませんね
449: 07/23(水)20:20 ID:jSDoEOvR(1/2) AAS
コメントは最低限しか書かないなあ
リファクタリングしまくって、コメント書かなくてもわかるコードにする方がいいと思う
1〜2日で作成したら、最低1週間はリファクタリング期間
450: 07/23(水)21:02 ID:3kQj9G/6(1) AAS
規模感がちょっとわからないけどテスト込みで手直し1週間?
451: 07/23(水)21:55 ID:jSDoEOvR(2/2) AAS
規模はまちまちだけど、この例ではテスト込みで作成1〜2日
完成後1週間は毎日コードを読み直す時間をとる
すると何かしら改善点が見つかる
毎日読んでも何にも改善点なく1週間過ぎたらステーブル
452(3): 07/24(木)21:58 ID:GZnFTazm(1/5) AAS
複数のシートをpdf出力したいのです。
wb.Sheets(arr).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
の様に、ActiveSheetで指定するしか方法はないのでしょうか?
ActiveSheetは明示的でないので避けたいです
453(1): 07/24(木)22:07 ID:CXis1mnI(1) AAS
>>452
wb.Sheets(arr).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
454(1): 07/24(木)22:09 ID:GZcfs+u1(1) AAS
>>452
まずはAIに聞く癖を付けろ
以下の方法でActiveSheetを使わずに複数シートをPDF出力できます:
```vb
wb.Worksheets(arr).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pdfPath
```
`wb.Worksheets(arr)`で直接シートコレクションを指定すれば、ActiveSheetに依存せずに済みます。
455(1): 07/24(木)22:21 ID:3SMUfFNx(1) AAS
↓は実行できるけど、
ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select
↓はエラーにならね?
ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
456: 07/24(木)22:52 ID:GZnFTazm(2/5) AAS
>>454
はい、AIは大嘘つき
457: 07/24(木)22:52 ID:GZnFTazm(3/5) AAS
>>453
無理でーす
458: 07/24(木)22:53 ID:GZnFTazm(4/5) AAS
>>455
正解!
459: 07/24(木)22:57 ID:GZnFTazm(5/5) AAS
wb.Sheets(配列).Select
ActiceSheet..ExportAsFixedFormat Type:=xlTypePDF, Filename:=Path
でしかエラーになります
460(1): 07/25(金)01:14 ID:f/mD0P8I(1/2) AAS
>>452
Selectが必要なことに変わりはないがActiveSheetを排除したいのならこう書ける
wb.Sheets(arr).Select
wb.Sheets(arr(0)).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
461(1): 07/25(金)01:45 ID:YmqTu82J(1/3) AAS
>>460
それは複数シートではなく、単一のシートですよな
462(1): 07/25(金)07:52 ID:UfHu+jPG(1) AAS
変数使ってループさせるくらいの頭働かせられないくらい頭沸いちゃったのかな
暑いからね
463: 07/25(金)08:02 ID:YmqTu82J(2/3) AAS
>>462
複数のシートを個別のpdfファイルにエクスポート、ではないです
複数のシートを1つのpdfファイルに、です
これの方法がActiceSheet.ExportAsFixedFormatしか見つからなくて、ActiceSheetの様な曖昧な指定は嫌だなぁと思うのです
464: 07/25(金)08:22 ID:JviM2itp(1) AAS
ActiveSheetを明示するだけでしょ
今のActiveSheetをテンポラリに持っておいて、
特定のシートをActivate
それを書き出した後テンポラリをActivate
465: 07/25(金)08:40 ID:f/mD0P8I(2/2) AAS
>>461
選択中のどれかのシートをエクスポートすれば選択シートすべてが出力される不思議仕様
466(1): 07/25(金)09:10 ID:6JkrjnZc(1/2) AAS
ActiveSheetはワークシート(単・複数)へのポインタみたいなものだよ
シートを省略して書かれたメソッドは常にActiveSheetを対象操作にする
467: 07/25(金)12:31 ID:YmqTu82J(3/3) AAS
そうだったんですか
wb.Sheets(arr).Select
〜中略〜
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
と書いたにも関わらず、何故か出力されたpdfが1シートのみ
という事があって、もしかしてcopy modeの様に、ちょっとした操作でシートのグループ化が解除されるのかなと思いました。
468: 07/25(金)12:41 ID:7k67EuH4(1) AAS
そりゃ解除されるよ
選択していないシートをアクティベートしたりね
ユーザー操作で違和感なく動作するのが大前提だから
469: 07/25(金)18:16 ID:O3RmL+0a(1) AAS
>>466
>常にActiveSheetを対象操作にする
シートモジュールでシート指定しないやつは、ActiveSheetじゃなくてそのシートだったと思ったが
470: 07/25(金)20:45 ID:6JkrjnZc(2/2) AAS
VBの内部コード(Pコード)は解析されてるのかな
AIに全部ぶち込んでしまえば、どういう理屈でという疑問は解消しそうだけど
471: 07/26(土)08:11 ID:ZNo9mvnh(1) AAS
wb.Sheets(arr).Select
wb.Sheets(2).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
でもグループ化したシートが出力できるのですね
今知りました
でも怖いですね
wb.Sheets(2).Selectはグループ化解除だから
472: 07/26(土)13:26 ID:8rv+r4rK(1) AAS
名前付き引数書く派なんだなおまいらも
473: 07/26(土)14:28 ID:F1jFmomB(1) AAS
ExportAsFixedFormat xlTypePDF, pdfPath,,,,,,
名前を覚えるか糞長引数の位置を覚えるかのトレードオフ
474: 07/26(土)15:15 ID://AUV0sR(1) AAS
別にどちらでもいい
475: 07/26(土)17:35 ID:UKLeI2W+(1) AAS
どっちの書式も覚えてない
検索で上位に出てきたコードをコピペするだけ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.035s