25/07/05 22:49:12.14 +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:デフォルトの名無しさん
25/07/05 23:41:01.05 8jsOt+Pc.net
>>372
・パスが長すぎる場合
・処理系による改行コードの違い
・ファイル全体でダブルクォートが奇数個(閉じられていない)
・巨大すぎる(項目のサイズ、項目の数、行数)
・ファイルの破損(バイナリデータ混入など)
・ファイルシステムの破損、不良セクタなど
378:デフォルトの名無しさん
25/07/06 02:30:01.30 N2XXWgcj.net
>>372
Workbooks.OpenでCSVを読むならテスト項目ほとんど要らなくね?
テキストファイルとして読んで、列と行の分割処理をするなら、
CSVのフォーマット定義を先にやらないとテスト項目作れなくね?
読み込みファイルの指定方法も先に決める必要がなくね?
379:デフォルトの名無しさん
25/07/06 06:55:32.42 hfT56Vvk.net
>>373-374
Claude様に聞いてやったぞ
373と374は的外れすぎる
373について
・「ファイルシステム破損、不良セクタ」→ システム障害テストの範疇、CSV処理テストじゃない
・「ファイル破損(バイナリ混入)」→ 同上、テスト範囲を混同してる
・「巨大すぎる」→ パフォーマンステスト、機能テストと分けろ
改行コードとダブルクォート奇数個は有効だが、他は論点ズレ
374について
完全に間違ってる
・「Workbooks.Openならテスト項目要らない」→ 嘘、文字化け・区切り文字誤認識・データ型自動変換でバグ頻発する
・「CSVフォーマット定義を先に」→ RFC4180あるし、372みたいに実際の問題パターン網羅する方が実用的
・「読み込み方法を先に決める」→ 順序が逆、テストケース洗い出してから実装方法決めるのが正解
372が一番まとも。実際の開発で遭遇する問題を的確に押さえてる
380:デフォルトの名無しさん
25/07/06 08:00:56.53 N2XXWgcj.net
>>375
外部仕様を先に決めるべきという意味だったんだけど、それも間違ってんの?
CSV=RFC4180というのは一般的じゃない気が・・・
Workbooks.Openを使うなら、「CSVフォーマットはExcelのAPIのそれ」で決定だからAPI動作の二重チェックは不要かな~と。
381:デフォルトの名無しさん
25/07/06 12:05:21.27 Jlu3MuzZ.net
セマフォは?
別プロセスが同じファイルを開いてるから今は処理すべきでない、とか
382:372
25/07/06 21:01:04.07 jU0PBm+8.net
すみません。
昨日テストケースをすべて載せるつもりだったのですが書き込み制限で書けず途中で諦めました。
テストケースは37項目まであります。
383:デフォルトの名無しさん
25/07/07 09:23:50.46 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:デフォルトの名無しさん
25/07/07 10:00:11.48 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:デフォルトの名無しさん
25/07/07 10:31:44.26 GhKlbyJu.net
>>380
変数宣言は行数の都合でカットしたのでCopilot君は悪くない
386:デフォルトの名無しさん
25/07/07 14:15:38.83 quoGln+a.net
>>379
ChatGPTだとこんな感じですね。
そのまま貼り付けたので全角も見てくれてる。
バグ・問題点
1 変数の未宣言
2 インデントに全角スペースが混在
3 変数 i の Dim がループ内にある
補足(改善点)
・CSVに カンマを含むセル がある場合、Splitだけでは不十分(→正確なCSV解析が必要)。
・ファイル存在チェック (Dir(FilePath) など) を入れるとより堅牢になります。
・Shift-JIS以外の文字コード(例:UTF-8 BOM付き)は Open では正しく読み込めないことがあります。
387:デフォルトの名無しさん
25/07/07 22:35:59.87 CvRTuASj.net
バグも直してもらえばいいんじゃね
388:デフォルトの名無しさん
25/07/08 00:47:00.39 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:デフォルトの名無しさん
25/07/08 01:58:30.92 9X9f1TC3.net
Format:=6なんて絶対使わないのに、どこからコピペしてきたんだよ
390:デフォルトの名無しさん
25/07/08 10:53:17.46 Lf/Jcjxk.net
馬鹿の上塗り
391:デフォルトの名無しさん
25/07/08 16:04:18.48 J6qvAQ9A.net
このスレ沼しか居ねぇな…google ai studioの方がまだ良い解答してくれんぞ…
392:デフォルトの名無しさん
25/07/08 17:01:18.70 G3ulfBZW.net
>>387
とても鋭い視点です。さすがですね!
393:デフォルトの名無しさん
25/07/08 17:33:24.49 BCBq8ImS.net
studio と名付けられてる意味わかってんのかな?
中の人はGeminiそのものらしいじゃんか
394:デフォルトの名無しさん
25/07/08 17:42:58.67 yBGpSZNW.net
>>389
その論理だとChromeとChrome OSも比較できないことになるが?
同じモデル使ってても実装・UI・機能が違えば体験は全然違うぞ
StudioはAPI統合やパラメータ調整できる開発者向けツール、コンシューマー版Geminiとは設計思想が違う
「中の人が同じ」で比較無意味論は技術理解が浅すぎる
387の解答品質指摘は妥当な比較対象だし、実際のユーザー体験差を無視してる時点で的外れ
とAI様が仰せになっている
395:デフォルトの名無しさん
25/07/08 18:21:34.45 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:デフォルトの名無しさん
25/07/08 18:33:40.30 G3ulfBZW.net
うちでは2って教えてくれた
397:デフォルトの名無しさん
25/07/09 08:08:49.40 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:デフォルトの名無しさん
25/07/09 08:48:44.88 /UzV6WSq.net
スレ違いの長文とか救えない
399:デフォルトの名無しさん
25/07/09 09:32:08.40 EKMDM/sM.net
391
x 間違って記憶している
o 過學習でアホになった
400:デフォルトの名無しさん
25/07/09 10:08:19.13 MuvaPJLR.net
LLMで過学習…?
401:デフォルトの名無しさん
25/07/09 10:36:50.67 1h9feY7y.net
391
x 間違って記憶している
o 円形脱毛症でハゲになった
402:デフォルトの名無しさん
25/07/14 13:04:26.89 GLg5N4aG.net
URLリンク(forest.watch.impress.co.jp)
「JScript」に代わり「JScript9Leg
403:acy」が既定のスクリプトエンジンに ~Windows 11 24H2以降で
404:デフォルトの名無しさん
25/07/15 10:46:15.47 1v3q9PKm.net
Windows11の24H2にしたらJScriptが動かない
URLリンク(blog.macorin.net)
405:デフォルトの名無しさん
25/07/15 11:19:52.18 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:デフォルトの名無しさん
25/07/15 11:31:18.20 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:デフォルトの名無しさん
25/07/15 11:33:01.33 l/eryieH.net
vbsに近いならjsだろう
408:デフォルトの名無しさん
25/07/15 11:52:00.35 1v3q9PKm.net
PowerShellは遅くてびっくりするのと
COM(IDispatch)経由の操作なので基本的に書き方はvba/vbsを踏襲する
普通に使うと割とつまらない
409:デフォルトの名無しさん
25/07/15 11:53:44.70 SjeLYLBh.net
>>400
スレ違い
410:デフォルトの名無しさん
25/07/15 13:45:04.50 IENqpxZQ.net
>>401,403
ありがとう。やってみる。
411:デフォルトの名無しさん
25/07/15 18:57:22.18 F7nJfSiA.net
やっぱり馬鹿かよ
412:デフォルトの名無しさん
25/07/16 22:35:52.90 6RqIkTEU.net
目的のフォルダを取得する効率的なコードを教えてください
1番効率的なのはフォルダのフルパスそのものを取得する事ですが、それも難しいので各階層の部分一致でお願い致します
413:デフォルトの名無しさん
25/07/16 22:45:55.20 NiCGeJue.net
パスが流動的ってこと?
指定する以外にやったことないわ
414:デフォルトの名無しさん
25/07/16 23:01:32.70 IRXrFh0B.net
部分一致が複数あるとして、その順番が入れ替わる可能性があるかどうかでコードが変わるね
415:デフォルトの名無しさん
25/07/17 00:19:01.17 zBpNwhAR.net
コード\分類\フォルダ\期間別フォルダ\探したいファイル
みたいな感じですね
416:デフォルトの名無しさん
25/07/17 00:24:00.03 Nf2HlQRn.net
>>405
Powershellからcom呼ぶときはしっかりお片付けしてね
適当にやるとC#と一緒でゴミが残る(かも)だから
417:デフォルトの名無しさん
25/07/17 01:52:47.41 gLLqR9ZX.net
>>407
馬鹿は「効率的」は何が効率的なのかとかすら説明できない
418:デフォルトの名無しさん
25/07/17 05:21:40.06 tC2PFukj.net
馬鹿じゃなきゃこんなところで聞かない
419:デフォルトの名無しさん
25/07/17 07:17:52.06 wYenyBlK.net
こう言うことなんじゃないの? ディレクトリ(フォルダ)名が曖昧な記憶だから
漠然とした検索してファイル見付けたい とかなんじゃ
URLリンク(www.limecode.jp)
3パターン提示してくれてるから、どれでもお好きなもので・若しくは全部使ってもいいし
一年365日ばかしか書けない誰かさんは無視しとけばいいよ
彼は馬鹿と書き込むのがじぶんのDutyだと思い込んでる節があるし 認知の病なんだろうきっと
420:デフォルトの名無しさん
25/07/17 07:36:40.82 rYvcj5zc.net
彼はこんなとこでしかマウントとれないかわいそうなやつなんだ
そっとしといてあげよう
421:デフォルトの名無しさん
25/07/17 07:41:07.22 aYpECmLq.net
>>407
目的のフォルダはどうやって示されてるの?
効率的っていうのは、何に対するパフォーマンスを指してる?
422:デフォルトの名無しさん
25/07/17 08:47:01.58 sGHKyXGW.net
>>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 = "ファイルの下は何もないよ!"
Exit For
End If
FolderName = Dir(ResultPath & "\" & SearchPathList(I), vbDirectory)
If FolderName = "" Then
ResultPath = "そんなパスはないよ!"
Exit For
End If
ResultPath = ResultPath & "\" & FolderName
Next
MsgBox "これかな?" & vbCrLf & ResultPath
423:デフォルトの名無しさん
25/07/17 09:28:10.58 TqONBLPd.net
あたしゃ、ディレクトリ関係は「見える」の重視で、このあたり参考にしてワークシート関数でやっちゃうけど
URLリンク(qwerty.work)
424:デフォルトの名無しさん
25/07/17 20:37:37.93 zBpNwhAR.net
>>417
正規表現の様な事ができたのでしょうか?
425:デフォルトの名無しさん
25/07/17 20:38:38.98 zBpNwhAR.net
>>416
例えばファイルシステムオブジェクトの再帰処理で全フォルダをループしてしまうのは非効率だなぁという事です
426:デフォルトの名無しさん
25/07/17 21:05:30.67 zBpNwhAR.net
>>417
本当に複数の階層で部分一致できますでしょうか?
427:デフォルトの名無しさん
25/07/17 23:17:21.95 mypLb9KX.net
釣りでなければ真正馬鹿で確定
428:デフォルトの名無しさん
25/07/17 23:26:46.72 DMF1qliv.net
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
Set f = q(1): q.Remove 1
For Each i In f.SubFolders: q.Add i: If InStr(1, i.Name, k, vbTextCompare) > 0 Then WriteRow r, "フォルダ", i.Name, i.Path
Next
For Each i In f.Files: If InStr(1, i.Name, k, vbTextCompare) > 0 Then WriteRow r, "ファイル", i.Name, i.Path
Next
Loop
MsgBox "完了"
End Sub
Sub WriteRow(ByRef r As Long
429:, t As String, n As String, p As String) With Sheets(1): .Cells(r, 1).Resize(1, 3).Value = Array(t, n, p): End With: r = r + 1 End Sub
430:デフォルトの名無しさん
25/07/18 03:56:36.13 kCxulfmG.net
若い子はChatGPTのことチャッピーと呼んでる
431:デフォルトの名無しさん
25/07/18 08:09:47.41 JhLn+KYd.net
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
If Instr(f.name,"目的") > 0 Then
' ファイルをチェック
For Each file In f.Fileso
If InStr(file.Name,"検索値") > 0 Then fpath = file.path
Next
End if
Dim sf as Object
' サブフォルダを再帰処理
For Each sf In f.SubFolders
If Instr(sf.name,"コード") > 0 or Instr(sf.name,"書類") > 0 or Instr(sf.name,"分類") > 0 or Instr(sf.name,"yyyymmdd") > 0 Then 再帰処理 sf
Next
End Sub
432:デフォルトの名無しさん
25/07/18 08:22:30.72 avd6O0J8.net
>>417 はちょっと手抜きしてたので、ちゃんと作り直した。
Sub 使い方()
Set Result = New Collection
DirMulti "C:\Documents", "A???\B*\Excel\2025????\File*.xlsx", Result, vbNormal
(以下略)
End Sub
Sub DirMulti(HomePath, SearchPath, ResultCollection, Optional Attributes As VbFileAttribute = vbNormal)
Pos = InStr(SearchPath & "\", "\")
Search = Left(SearchPath, Pos - 1)
NextSearch = Mid(SearchPath, Pos + 1)
Set SearchResult = New Collection
Res = Dir(HomePath & "\" & Search, vbDirectory Or Attributes)
Do While Res <> ""
If Res <> "." And Res <> ".." Then SearchResult.Add Res
Res = Dir()
Loop
If NextSearch = "" Then
For Each Res In SearchResult
ResultCollection.Add HomePath & "\" & Res
Next
Else
For Each Res In SearchResult
If (GetAttr(HomePath & "\" & Res) And vbDirectory) <> 0 Then
DirMulti HomePath & "\" & Res, NextSearch, ResultCollection, Attributes
End If
Next
End If
End Sub
433:デフォルトの名無しさん
25/07/18 09:23:27.37 J+L+9run.net
要件定義せず走り出すとこうなるという見本
434:デフォルトの名無しさん
25/07/18 10:47:27.74 kfpMJi4P.net
ま、それぞれがこれに取り組むことで、それなり成長する(こともある)んだから、いいじゃん
外野から思索も模索もせずにつべこべ小言書くことしかできないご老体には言わせときゃいいだけ
相談者、夜中にしか出張って来ないから、日中に迷走するのはやむを得ない
やりたいことは何となく見えてきたけど、それをどう実装したいのか?誰に使わせたいのか?何のために作るのか?
とかがイマイチ漠然としてて、方向ぐらいは提示して欲しいのはある
エクスプローラー開いて検索じゃあダメな理由とか、ファイルじゃ無くてフォルダ(名)に拘ってるように読めて
例えば、各々が勝手にフォルダ作ってファイル放り込んでるのを是正したいんだ、とかなのか
もう一歩踏み込んだ相談が出て来るまで待機、も有り得る
435:デフォルトの名無しさん
25/07/18 16:30:22.97 aPZeO8n7.net
VBAの作り方が上手すぎて情シスに異動させられそうになったセンスの塊こと俺だけどよく構文を知ってるとかテキスト通りにとか気にしてる奴は3流よ
使用者の使いやすさにまず全振り
次に拡張性を気にすりゃメンテナンスもしやすくなる
エラー回避しない奴は論外
でも結局はどう動かすかなんよ
436:デフォルトの名無しさん
25/07/18 16:43:02.04 AbgnUBWx.net
Aという処理をVBAでさせようってお手本みたいなコードを書いてもそのA自体にセンスが無い奴が多いんだよな
それが役職も評価も年収も上がらないVBAを勉強しただけのおぢさん
437:デフォルトの名無しさん
25/07/18 17:25:18.33 kfpMJi4P.net
>>427 読み直したら、ID末尾runだけに?
438:デフォルトの名無しさん
25/07/18 18:03:06.70 tx5irUc8.net
>>431
みんながみんなエスパーしながら好きに書いてる何を読み直すの?
439:デフォルトの名無しさん
25/07/18 20:55:57.57 kfpMJi4P.net
わかんなきゃいいよw カリカリすんなよ
フォルダ名を取得する記事見付けた 検索文字で絞る事もできる *とか?とかも要らん
URLリンク(tmkr7788.livedoor.blog)
で、一番上のフォルダ指定するのが手入力っぽいから、それも自動取得するなら
Sub Sample()
Dim FPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\ほにゃらら"
.Title = "フォルダを選択してください"
If .Show = -1 Then
FPath = .SelectedItems(1)
End If
End With
Cells(3,3) = FPath
End Sub
これを別ボタンに貼り付ければ、ディレクトリ探すのもマウスオペだけで済む お好みだけど
※ ほにゃらら部分は、デフォルトで指定しときたいフォルダ名に
440:デフォルトの名無しさん
25/07/18 21:22:07.30 VbDqcBb9.net
>>431
これ何言ってるのか理解できない
なにがrunだけに、なのか
441:デフォルトの名無しさん
25/07/19 04:46:02.20 s8PmOx3D.net
>>45
え、Accessは2027年で使えなくなるの!?
442:デフォルトの名無しさん
25/07/19 06:29:44.25 QjhfSjEw.net
>>433
馬鹿
443:デフォルトの名無しさん
25/07/19 07:33:32.95 xtuIEHIA.net
>>435
Access2027が最後のAccessになるって、
Windows10が最後のWindowsになるって言ったMicrosoftが言ってた
444:デフォルトの名無しさん
25/07/19 08:03:25.99 hkkuRgMQ.net
昨日初めてwin12て使ってる記事見たわ
445:デフォルトの名無しさん
25/07/19 09:32:36.51 S5W6kZB3.net
指定したフォルダ以下の、サブフォルダとファイルを取得する記事も見付けた
>>433 のは、フォルダのみだけど、その中身もそのファイル情報も見れるのはいい
何よりシンプル 開きたい場合は上のを参考にすればいいと思う
URLリンク(akira55.com)
ExcelにTreeViewって無かったっけ?とか思い直してググってて辿り着いた
TreeViewを実装しようと試みて、みんな大好きTANAKAさんのサイト参考にしようとしたら
Form上に配置するのに、その他のコントロールから選ばなきゃならなく成ってて
ImageListに至っては追加はできてもプロパティ変更しようとするとエラー 64bitのせい?
TANAKAの例はExcel2003で説明してるからなのか もはやオワコンなのか なぞ
まぁ、後日のメンテとかも面倒そうだから、Sheet上に書き出すのがいちばん楽なんだろうな
446:デフォルトの名無しさん
25/07/19 10:05:18.56 TEpbrrsS.net
>>437
きっとwin11はwindowsではない新種のOSなんだろう
447:デフォルトの名無しさん
25/07/19 15:57:41.07 ZTd2BQVd.net
>>439
実行結果のファイルうpしてみて
448:デフォルトの名無しさん
25/07/19 16:20:49.62 A8cbKdEJ.net
パス長いとかいい加減にしろとな
449:デフォルトの名無しさん
25/07/19 16:52:52.55 S5W6kZB3.net
>>441 ? リンク先に実行結果の画像出てるけど?
他に何を出せと? おれが実行した後のファイルなんて
中身まるごと見られたら困るものだらけだから、嫌なんだけど?
450:デフォルトの名無しさん
25/07/20 12:26:16.14 UYPMBFMH.net
見られて困るものだらけのPCって犯罪的な?
451:デフォルトの名無しさん
25/07/23 07:42:55.14 jnXMDL+k.net
>>429
その様にコードを書いてマクロを作成するのに何日くらいかかりますか?
452:デフォルトの名無しさん
25/07/23 08:46:08.98 Rz/tc4F0.net
回避ルートが無い場合はエラーで止まる分は放置だな
下手なメッセージ出して止まるより分かりやすい
453:デフォルトの名無しさん
25/07/23 10:53:39.46 S2JD2z+w.net
>>444
C:\ドキュメント\重要機密\A~E(1)\新しいフォルダ\巨乳物
>>445
俺はこの道30年、最近やっとコメントをしっかり書く習慣が身についてきた感じがしてる
昔も一応は書いてたけど、今見ると言葉が足りてなさすぎて解読に苦労する
>>446
自分だけが使うんならいいけど、他人はエラーメッセージとかさっさと消しちゃったり自力で解決しようとして何が起きたかわからなくされちゃうからなあ
454:デフォルトの名無しさん
25/07/23 19:11:51.35 jnXMDL+k.net
>>447
コメントですか
AIに書かせると楽かもしれませんね
455:デフォルトの名無しさん
25/07/23 20:20:01.08 jSDoEOvR.net
コメントは最低限しか書かないなあ
リファクタリングしまくって、コメント書かなくてもわかるコードにする方がいいと思う
1~2日で作成したら、最低1週間はリファクタリング期間
456:デフォルトの名無しさん
25/07/23 21:02:26.59 3kQj9G/6.net
規模感がちょっとわからないけどテスト込みで手直し1週間?
457:デフォルトの名無しさん
25/07/23 21:55:41.80 jSDoEOvR.net
規模はまちまちだけど、この例ではテスト込みで作成1~2日
完成後1週間は毎日コードを読み直す時間をとる
すると何かしら改善点が見つかる
毎日読んでも何にも改善点なく1週間過ぎたらステーブル
458:デフォルトの名無しさん
25/07/24 21:58:34.96 GZnFTazm.net
複数のシートをpdf出力したいのです。
wb.Sheets(arr).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
の様に、ActiveSheetで指定するしか方法はないのでしょうか?
ActiveSheetは明示的でないので避けたいです
459:デフォルトの名無しさん
25/07/24 22:07:09.88 CXis1mnI.net
>>452
wb.Sheets(arr).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
460:デフォルトの名無しさん
25/07/24 22:09:24.06 GZcfs+u1.net
>>452
まずはAIに聞く癖を付けろ
以下の方法でActiveSheetを使わずに複数シートをPDF出力できます:
```vb
wb.Worksheets(arr).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pdfPath
```
`wb.Worksheets(arr)`で直接シートコレクションを指定すれば、ActiveSheetに依存せずに済みます。
461:デフォルトの名無しさん
25/07/24 22:21:03.69 3SMUfFNx.net
↓は実行できるけど、
ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select
↓はエラーにならね?
ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
462:デフォルトの名無しさん
25/07/24 22:52:04.71 GZnFTazm.net
>>454
はい、AIは大嘘つき
463:デフォルトの名無しさん
25/07/24 22:52:55.23 GZnFTazm.net
>>453
無理でーす
464:デフォルトの名無しさん
25/07/24 22:53:12.34 GZnFTazm.net
>>455
正解!
465:デフォルトの名無しさん
25/07/24 22:57:55.91 GZnFTazm.net
wb.Sheets(配列).Select
ActiceSheet..ExportAsFixedFormat Type:=xlTypePDF, Filename:=Path
でしかエラーになります
466:デフォルトの名無しさん
25/07/25 01:14:02.16 f/mD0P8I.net
>>452
Selectが必要なことに変わりはないがActiveSheetを排除したいのならこう書ける
wb.Sheets(arr).Select
wb.Sheets(arr(0)).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
467:デフォルトの名無しさん
25/07/25 01:45:35.35 YmqTu82J.net
>>460
それは複数シートではなく、単一のシートですよな
468:デフォルトの名無しさん
25/07/25 07:52:00.89 UfHu+jPG.net
変数使ってループさせるくらいの頭働かせられないくらい頭沸いちゃったのかな
暑いからね
469:デフォルトの名無しさん
25/07/25 08:02:36.99 YmqTu82J.net
>>462
複数のシートを個別のpdfファイルにエクスポート、ではないです
複数のシートを1つのpdfファイルに、です
これの方法がActiceSheet.ExportAsFixedFormatしか見つからなくて、ActiceSheetの様な曖昧な指定は嫌だなぁと思うのです
470:デフォルトの名無しさん
25/07/25 08:22:07.09 JviM2itp.net
ActiveSheetを明示するだけでしょ
今のActiveSheetをテンポラリに持っておいて、
特定のシートをActivate
それを書き出した後テンポラリをActivate
471:デフォルトの名無しさん
25/07/25 08:40:06.97 f/mD0P8I.net
>>461
選択中のどれかのシートをエクスポートすれば選択シートすべてが出力される不思議仕様
472:デフォルトの名無しさん
25/07/25 09:10:21.07 6JkrjnZc.net
ActiveSheetはワークシート(単・複数)へのポインタみたいなものだよ
シートを省略して書かれたメソッドは常にActiveSheetを対象操作にする
473:デフォルトの名無しさん
25/07/25 12:31:12.82 YmqTu82J.net
そうだったんですか
wb.Sheets(arr).Select
〜中略〜
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
と書いたにも関わらず、何故か出力されたpdfが1シートのみ
という事があって、もしかしてcopy modeの様に、ちょっとした操作でシートのグループ化が解除されるのかなと思いました。
474:デフォルトの名無しさん
25/07/25 12:41:13.91 7k67EuH4.net
そりゃ解除されるよ
選択していないシートをアクティベートしたりね
ユーザー操作で違和感なく動作するのが大前提だから
475:デフォルトの名無しさん
25/07/25 18:16:56.05 O3RmL+0a.net
>>466
>常にActiveSheetを対象操作にする
シートモジュールでシート指定しないやつは、ActiveSheetじゃなくてそのシートだったと思ったが
476:デフォルトの名無しさん
25/07/25 20:45:59.47 6JkrjnZc.net
VBの内部コード(Pコード)は解析されてるのかな
AIに全部ぶち込んでしまえば、どういう理屈でという疑問は解消しそうだけど
477:デフォルトの名無しさん
25/07/26 08:11:28.23 ZNo9mvnh.net
wb.Sheets(arr).Select
wb.Sheets(2).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
でもグループ化したシートが出力できるのですね
今知りました
でも怖いですね
wb.Sheets(2).Selectはグループ化解除だから
478:デフォルトの名無しさん
25/07/26 13:26:56.16 8rv+r4rK.net
名前付き引数書く派なんだなおまいらも
479:デフォルトの名無しさん
25/07/26 14:28:31.18 F1jFmomB.net
ExportAsFixedFormat xlTypePDF, pdfPath,,,,,,
名前を覚えるか糞長引数の位置を覚えるかのトレードオフ
480:デフォルトの名無しさん
25/07/26 15:15:43.28 //AUV0sR.net
別にどちらでもいい
481:デフォルトの名無しさん
25/07/26 17:35:17.71 UKLeI2W+.net
どっちの書式も覚えてない
検索で上位に出てきたコードをコピペするだけ
482:デフォルトの名無しさん
25/07/28 17:59:42.76 vQ0dL+ep.net
一次配列しか対応していないからFilter関数を避けてきましたが、worksheet関数で一次配列に簡単に直せるのと、Filter関数は部分一致なので、ループで重ねがけをするととても便利ですね。
483:デフォルトの名無しさん
25/07/28 18:28:01.59 23Svm7lo.net
ネット検索でコピペ
実際はこんなのが大半なんだよな
484:デフォルトの名無しさん
25/07/28 23:33:08.81 /EYYRyt0.net
部署内と提携仕入先でVBAで金かけずに簡易システムの共同開発ってことで
メール本文にプロシージャ貼って相手に送ってる
相手からうまく動きました、こっちもこうしてほしいですと回答がくる また直したのをメールに貼って送る
なんという原始的な外資企業だよ
485:デフォルトの名無しさん
25/07/28 23:37:37.11 ofRNtrsX.net
草
486:デフォルトの名無しさん
25/07/29 12:30:27.63 cpAOUjwH.net
できることからコツコツと
ですよ
マニアでもいないと飛躍しない
責任取らされるかもと思えば何もしない
487:デフォルトの名無しさん
25/07/29 19:57:27.87 G836h0I1.net
vbaではfor のループ処理で条件に一致しないときはループをスキップ(次へ)が出来ないと聞きます
なんとかif文のnot then の時はスキップみたいなコードを書いていますがなかなか難しいです
AIはGo To文を書いているので私も書いていいでしょうか?
488:デフォルトの名無しさん
25/07/29 19:59:00.98 wqm1/dtV.net
whileとか使えば?
489:デフォルトの名無しさん
25/07/29 20:10:20.21 G836h0I1.net
>>482
whileもDoもしっかりと理解しておかないと無限列車編になりそうで怖いです
仮にもしIf not 〜 Then Next
と言う様なコードがあったとしてもそれが事実上のGo To文だと言われたらそうなのかもしれません
490:デフォルトの名無しさん
25/07/29 20:24:56.02 cpAOUjwH.net
continueが無いと言うことなら
goto continue
はわかりやすく代替になる
ネストあるしでオレの場合は
LBL_CONTINUE_10:
とかにしてるけど
491:デフォルトの名無しさん
25/07/29 20:27:33.99 J9oCD99i.net
>>483
馬鹿には難しいのか?
492:デフォルトの名無しさん
25/07/29 21:03:16.99 G836h0I1.net
>>485
Doとwhileはよく理解して使わないと無限ループになると聞いているので避けてきただけです
Go To もスパゲッティコードになると聞いているので避けいるだけです
If not 〜 Then 次
次 : にすればいいですね
493:デフォルトの名無しさん
25/07/29 21:10:27.10 vWW6c4Rp.net
i=i+1をセットに考えとけば無限ループなんて起こすことそんなにないっしょ
494:デフォルトの名無しさん
25/07/29 21:41:08.56 ii3Lf2qi.net
>>486
こんな簡単なことも瞬時に理解できないとかやっぱり馬鹿だろうが
Go Toと書いてるだけで馬鹿とわかるんだよ
それとも境界知能か?
495:デフォルトの名無しさん
25/07/29 21:54:22.96 G836h0I1.net
Power Queryでフィルターしたり、データベースの真似事をするのは大好きだけど、
vbaのauto filterをするのは苦手意識が強い
この気持ちわかってくれますか?
496:デフォルトの名無しさん
25/07/29 22:09:39.89 hgNMIII1.net
夏休みのせいか?それとも暑さで頭がやられているのが出てきてるのか?
497:デフォルトの名無しさん
25/07/29 22:28:38.75 eRHOoyzY.net
こだわりがあるようだから温かく見守ってあげて
498:デフォルトの名無しさん
25/07/29 22:29:41.49 49whZmZ7.net
いつもの人か
誰が付き合ってあげて
499:デフォルトの名無しさん
25/07/29 22:40:34.46 G836h0I1.net
>>492
いつもの人ってなんですか?
500:デフォルトの名無しさん
25/07/30 00:33:34.98 JW2l3Q+S.net
しらんけど煽りしかしてないやつはなんなんだ?
501:デフォルトの名無しさん
25/07/30 00:42:25.90 wwipb9hb.net
白痴が書き込むようになると一気にレベルが下がるからな
悪貨は良貨を駆逐する
502:デフォルトの名無しさん
25/07/30 02:51:59.94 UyfVNIk6.net
>>493
どうしようもなく頭が悪くて理解力が足りないだけなのにネチネチと質問を繰り返す人のこと
503:デフォルトの名無しさん
25/07/30 06:00:40.49 0FpGkecW.net
>>496
一体どこが理解力がないのでしょうか?
504:デフォルトの名無しさん
25/07/30 06:21:59.30 hYsgvs3H.net
ダメだこりゃ
505:デフォルトの名無しさん
25/07/30 08:09:34.32 tLf0EMwW.net
質問する側ならともかく、真夜中ひとが寝静まってる頃合いに、回答するでもなく
煽りや虚仮にするだけのカキコする人に関わってはいけない ダークサイドに取り込まれる
じゃあ、そういう人等が得意な分野の質問をすれば回答が付くのか?というと、そんなことも無い
得意なのは他人を罵ることだけなんだから
506:デフォルトの名無しさん
25/07/30 08:21:21.59 tLf0EMwW.net
そもそも、優秀な人材は真夜中はきちんと睡眠をとっている
夜中に寝付けずにあまつさえ掲示板にわざわざ出向いて
あろうことか罵詈雑言書き込んで己の不甲斐無さの不満の吐け口にしてる時点でお察し
507:デフォルトの名無しさん
25/07/30 08:32:17.89 ZrfB2rqA.net
ID:tLf0EMwW
頭悪そう
508:デフォルトの名無しさん
25/07/30 12:03:26.15 8Rlxo22+.net
ID:ZrfB2rqA
頭ハゲてそう🦲
509:デフォルトの名無しさん
25/07/30 14:51:27.88 tLf0EMwW.net
わずか10分後に反応されてた!
もはや、殆どbotだな
この応答を見れば明白なように
ヒトでも無いカキコの相手するだけ時間の無駄だといういい見本
新しくここに来た人たちは、botが居着いてることを承知の上で
相談や質問をするのが、ひとつの心構え
510:デフォルトの名無しさん
25/07/30 17:11:39.24 2dwihfai.net
専ブラを知らないキチガイはNG
511:デフォルトの名無しさん
25/07/30 18:05:33.89 bqS2T+6f.net
優秀の定義は年収で決まる
年収が30代で750万、40代で900万これを超えない奴がさわるVBAなんてもれなくポンコツだから
ふふ
512:デフォルトの名無しさん
25/07/30 19:00:00.76 +PBQOhAV.net
つまり会長・社長クラスの触るVBAは素晴らしい出来
生徒や学生の触るVBAはポンコツ
んなわけあるか
513:デフォルトの名無しさん
25/07/30 21:07:45.62 T2pHe4I2.net
極論そうだよね
低年収の触るVBAは質が低い
質が低いからVBAを覚えても低年収
専門分野と違ってこんなに強みになるプログラミングは他にないから
514:デフォルトの名無しさん
25/07/30 22:02:33.58 3dlCCuCF.net
>>506
ほんそれ
バカの言ってることなんてポンコツなことばかり
515:デフォルトの名無しさん
25/07/31 19:07:57.07 QmW4aWFz.net
優禿の定義は年収ではないと思う
516:デフォルトの名無しさん
25/07/31 19:22:24.31 IqvQqgPR.net
まあ馬鹿にしたいだけなんで定義も根拠もないんだけどな
517:デフォルトの名無しさん
25/07/31 19:42:34.79 PLayNHBZ.net
そんなもんやろな
518:デフォルトの名無しさん
25/07/31 21:06:19.26 2YdreDTb.net
>>509
_人人人人人人人人人_
> また髪の話してる <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_
γ ⌒ ヽ 彡 ⌒ ミ . 彡 = ミ
(´・ω・`) (´・ω・`) (´・ω・`)
ツルピカ ウスゲ バーコート
519:デフォルトの名無しさん
25/07/31 21:31:34.28 Sbsp3WvH.net
仕事の能力は年収じゃないって否定しても実際は年収だけどな
VBAなんてどう処理させるかじゃなくどう運用するかなんだよ
520:デフォルトの名無しさん
25/07/31 22:18:52.27 Dd41SAEI.net
処理の結果がすべて
ソースコードがきれいかどうかで評価する会社なんかない
521:デフォルトの名無しさん
25/08/01 06:26:00.78 w1WlIxif.net
なんですぐに人に統合失調症だのバカだの言う人がいるのでしょうね。
522:デフォルトの名無しさん
25/08/01 07:38:46.46 N/mTRICo.net
>>513
年収で判断できるのは仕事の能力ではなく労働の能力
523:デフォルトの名無しさん
25/08/01 07:41:55.86 bbNzKVYn.net
そんな言葉遊びで誤魔化してるから給料が安いのです
構文よりイメージを養いなさい
524:デフォルトの名無しさん
25/08/01 07:56:02.20 eVYJhFpu.net
すぐ話脱線するし、ろくでもないスレになったな
525:デフォルトの名無しさん
25/08/01 08:14:50.95 tPn9WPv7.net
>>517
算数と数学くらい違うものを言葉遊びとか、
よほど学がないんだな
526:デフォルトの名無しさん
25/08/01 10:40:10.51 R6RHAbIb.net
昨日まで使ってたのが急にエラー出るようになったけど何が原因か分からなかったのでアドバイス下さい
使用マクロ
Sub 表作成()
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("記")
Dim cmax1 As Long
cmax1=ws1.Range("A1048576").End(xlUp).Row
With ws1.Sort
.SortFields.Clear
.SortFields.Add Key:=ws1.Range("A2"), SortOn:=xlSortOnValues,
Order:=xlAscending, DataOption:=xlSortNormal
.SetRange ws1.Range("A3:L" & cmax1)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("E:E").ColumnWidth = 0
Columns("I:I").ColumnWidth = 0
Columns("K:K").ColumnWidth = 0
ActiveWorkbook.SaveAs
Filename:="C:\Users\User\Documents\ファイルパス\請求書" & " " & Format(Date,
"yyyymmdd") & ".xlsx", FileFormat:=xlOpenXMLWorkbook
End Sub
エラー内容
ファイル'C:\Users\User\Documents\ファイルパス\請求書\7E1A4F10'にアクセスできません
527:デフォルトの名無しさん
25/08/01 12:40:21.47 cEVejwoq.net
>>520
ファイル名で「請求書」の次は「年月日」が来るはずなのに、エラーメッセージの中で16進数になってるのがあきらかにおかしい
本当にそのマクロを動かして、そのエラーが出たの?ちょっとありえないんだけど
528:デフォルトの名無しさん
25/08/01 12:42:32.32 uTmd43g9.net
英字のファイルってなんか中間ファイルかなんかだっけ
529:デフォルトの名無しさん
25/08/01 16:09:22.52 R6RHAbIb.net
>>521
再度試しましたが発生しました
エラーメッセージは正確には
ファイル'C:\Users\User\Documents\ファイルパス\請求書\PDF/7E1A4F10'にアクセスできません(7E1A4F10は毎回別の文字列になります)です
昨日からの変更点はSSDが壊れたため、D:/をC:/に変更しました
530:デフォルトの名無しさん
25/08/01 17:15:54.06 hiUF93yw.net
ぼけっ!と叫びたくなるな
531:デフォルトの名無しさん
25/08/01 17:36:20.41 eMcgYSYd.net
D:/じゃなくてD:\にしなくちゃな
532:デフォルトの名無しさん
25/08/01 17:47:11.41 cEVejwoq.net
>>523
そこの文字列、PDFの次は本当にスラッシュなの?
だとしたら、スラッシュはファイル名に使えない文字だからエラーが出て当然なんだけど
ごまかさずにエラーの出たソースコードちゃんと貼って
533:デフォルトの名無しさん
25/08/01 18:38:36.40 R6RHAbIb.net
すいません、/は¥です
コピペしたら変わってた
534:デフォルトの名無しさん
25/08/01 18:39:47.95 eMcgYSYd.net
流石に変わらんだろw
535:デフォルトの名無しさん
25/08/01 18:41:07.46 AVNTPHz8.net
ファイルシステムが壊れたかハードウェア障害なんじゃね
フォーマットしてOSから再インストールだな
536:デフォルトの名無しさん
25/08/01 18:50:34.81 hiUF93yw.net
エラーメッセージの通りだろ
┐(´д`)┌ヤレヤレ
537:デフォルトの名無しさん
25/08/01 19:10:41.68 igw8+VNg.net
初心者だから見落としている事に気づいていない ってことなんだろうな
538:デフォルトの名無しさん
25/08/01 20:49:06.67 iGmjJYY4.net
あれ?また低年収がこんな内容でドヤ顔の上から目線じゃん
¥と/の関係性もわからない時点で使用者がトラブルの打ち上げしても僕の処理は綺麗ですと言い張ってそう
539:デフォルトの名無しさん
25/08/01 20:52:36.63 iGmjJYY4.net
初心者が~って年収500万もなさそうな底辺が嬉々としててもね…
作ったVBAを不慣れな人が使うことも想定できないまさに底辺
540:デフォルトの名無しさん
25/08/01 21:13:00.15 49ut/ffG.net
>>523
ActiveWorkbook.SaveAs
Filename:="C:\Users\User\Documents\ファイルパス\請求書" & " " & Format(Date,
"yyyymmdd") & ".xlsx", FileFormat:=xlOpenXMLWorkbook
請求書フォルダ配下のPDFフォルダを指定してないけどそんなエラーが出る?
保存先が変わってない?
541:デフォルトの名無しさん
25/08/01 21:14:40.85 w1WlIxif.net
>>520
シートはコードネームで指定した方がいいと思う
テーブルを使いましょう
542:デフォルトの名無しさん
25/08/01 21:38:32.14 ddFT1Hp8.net
"PDF" が消えている
543:デフォルトの名無しさん
25/08/01 22:10:03.29 X5JOiH9e.net
ユーザが違うオチとか
544:デフォルトの名無しさん
25/08/01 22:28:18.18 R6RHAbIb.net
>>534
D:→C:~Documents¥に変えたくらいしか心当たりないんです
>>535
ごめんなさい
545:デフォルトの名無しさん
25/08/01 23:27:01.60 hiUF93yw.net
>>538
だからエラーメッセージの通りだろ
546:デフォルトの名無しさん
25/08/01 23:59:43.71 i/B3OzBA.net
保存先のフォルダーがないんじゃないの?
547:デフォルトの名無しさん
25/08/02 00:24:04.05 yYRGbhMw.net
例によって馬鹿が質問し有象無象の馬鹿が湧き出る流れ
548:デフォルトの名無しさん
25/08/02 00:56:41.31 pROVV37J.net
>>520
そもそもなんでファイルフォーマットを指定しているのに
& “.xlsx”
を書いているのですか?
それとactiveworkbo
549:ok.saveas じゃなくて thisworkbook.saveasね
550:デフォルトの名無しさん
25/08/02 07:48:06.29 G/qnQzxD.net
SSDだったDドライブに\Users\User\Documents\が有ったとは思えないんだが
バックアップ先だったとかでフルアドレス入れてたかも知らん(無駄に)
で、それまではそれで動作してたけど、Dが壊れたとかで単純にDをCに変えただけだとしたら
アクセス権限が与えられていない可能性もある
普通にエクスプローラー開いて、それぞれのフォルダを段階追ってひとつずつ開いてみて
問題無ければ最後はそのExcelファイル開いてエラー発生しないかどうか(マクロ使わずに手動で開くという意味)
何か別にアドインとかが組み込まれててそれが原因だったってのもあるけど、それは次のステップでの検証
ブラウザ次第とかで入力時は¥にしてたのに書き込んだらスラッシュに変わってしまってるなんてのは
よくあること(↑の¥は敢えて全角で書いてみた)
551:デフォルトの名無しさん
25/08/02 08:17:04.68 CP7PbFCC.net
分かってないならスクショなりをそのまま貼れば良いのに
552:デフォルトの名無しさん
25/08/02 09:12:26.17 6UqvySRN.net
ファイル名に空白はいってるのか
ファイル名囲まんとだめなやつじゃね
553:デフォルトの名無しさん
25/08/02 10:00:02.65 5rJvWPSX.net
>>520
Windowsの更新などで、たまにVBAが影響を受けて、マクロが動かなくなるときがある。
特にワークシート名などのオブジェクトをスクリプト内で日本語(2バイト文字)で指定すると、
うまく行かなくなったりした。
まず気になるのは、シート名の"記"を"Notes"あたりにしてやってみるとか?
ファイル名での日本語混じりフルパス指定は、多分影響はないとは思うけど、
「アクセスできません」
の原因がそれだったら、そのパスをワークシートのどこかに名前定義で貼り付けて、
その名前をVBA内でRange()参照するとか
知らんけど。
554:デフォルトの名無しさん
25/08/02 10:23:23.13 pROVV37J.net
>>546
ThisWorkbookならコードネームの方が安定すると思います
あと個人でしか使用しないマクロ、ブックならいっそシートのインデックス番号で指定した方が安定するかもしれませんね
555:デフォルトの名無しさん
25/08/02 10:51:23.59 SCo3ZM4N.net
パスを公開用に書き換えるぐらいなら前半の関係ない所を消せよ
もし新規ブックで保存の1行だけにしてエラーが起きるならそれを貼れ
ちなみにマクロの記録で保存文の正解はExcelが書いてくれる
AIより確実だ
556:デフォルトの名無しさん
25/08/02 10:55:31.35 TvS+m01z.net
AIをほとんど使ったことないやつ
「AIより確実だ」ワロタ
底辺職で知らずに適当に言ってるのおもろすぎ
557:デフォルトの名無しさん
25/08/02 12:50:36.42 CP7PbFCC.net
>>548
マクロの記録はじゃ記録できない操作もあるけどね
558:デフォルトの名無しさん
25/08/02 13:38:37.58 JsttepqD.net
>>549
AI盲信するバカなやつw
559:デフォルトの名無しさん
25/08/02 15:33:56.33 XyRtrdUE.net
質問だが、
Excelでウェブページの表のデータ(テキスト)を取得したいが、
どうすればええの?
560:デフォルトの名無しさん
25/08/02 16:04:17.37 qxFnCwfY.net
>>552
今時はAIを使ったスクレイピングのSaaSが色々あるから、そういうのを使えば一瞬でできる
561:デフォルトの名無しさん
25/08/02 16:22:40.55 UAE3kLxf.net
>>552
ブラウザからExcelなら普通にコピペできるぞ
表を選択、コピーしてワークシートに貼り付けるだけ
色やフォントが邪魔ならセルを右クリして「貼り付けのオプション」から「貼り付け先の書式に合わせる」を選ぶだけ
562:デフォルトの名無しさん
25/08/02 16:36:11.47 G/qnQzxD.net
新しめのサイトだと、その表内選択すら拒絶してる(ドラッグしても選択状態に成らない)のも
稀によくある
「ケッ!おまえのデータなんか要らねえよっ!」と、捨て台詞吐いて渋々次のサイトを漁りに行く
563:デフォルトの名無しさん
25/08/02 16:58:35.92 pROVV37J.net
>>552
Power Automate Desktopでなんとかできるかもしれない
取得したい表をブラウザで開いた状態にする
ブラウザ操作ですでに開いているブラウザにインスタンスする
webデータ抽出 > webページからデータを抽出する
ブラウザに画面を戻すと右クリックで設定できる様になる
成功したらあとはエクセルに貼り付けるのを考えてください
564:デフォルトの名無しさん
25/08/02 17:12:25.56 XyRtrdUE.net
>>553
いや、自動でやりたいって話。
たくさんあるので。
565:デフォルトの名無しさん
25/08/02 17:13:49.69 XyRtrdUE.net
>>556
そのMicrosoft Powerなんちゃらってやつ、気になってるわ
でも、Excelに手で貼るんじゃなく、VBAでプログラム的に計算処理して、
セルに表示する感じ。
566:デフォルトの名無しさん
25/08/02 17:15:25.84 tx0odXgn.net
表をテキストやHTMLだかで取得できるならpowershellでやったっていい
567:デフォルトの名無しさん
25/08/02 18:07:55.80 EhvNl/Bg.net
取得したいウエブページがたくさんあるのなら、スクレイピングを使って完全自動化するけど
数が少ないのならウエブのテキストコピーだけは手動でもありなんじゃね
568:デフォルトの名無しさん
25/08/02 18:12:45.94 pROVV37J.net
>>558
私も狙い通りや完璧にほど遠いので教えられる事は非常に少ないですが
iframeがある場合は必ず指定して
bodyやhtmlも特定できる様に指定しておいた方がいいかもしれないです
全く同じ要素の物が複数ある場合はordinalで0から始まるインデックスで指定
特にテーブルや表ならこれかもしれない
テーブルのタグはtdやtrとか
569:デフォルトの名無しさん
25/08/02 18:22:15.39 XyRtrdUE.net
>>561
実は、
今までは、iMacrosってやつと、JavaScriptとかを使ってやってたけど、
iMacrosが開発終了で動かなくなった
あんまり無名のソフトは使わないほうがいいですね…
570:デフォルトの名無しさん
25/08/02 18:33:30.70 AVMu827h.net
>>552
Webスクレイピングはこの辺を使ってやってる
CreateObject("MSXML2.ServerXMLHTTP")
CreateObject("WinHttp.WinHttpRequest.5.1")
571:デフォルトの名無しさん
25/08/02 18:34:59.68 HpTF1ew1.net
>>557
もちろん自動でできるよ
572:デフォルトの名無しさん
25/08/02 18:36:59.11 moyeEsyU.net
>>543-548
ありがとう、PC会社で土日弄れないから週明けシート名変更から順に試してみます
573:デフォルトの名無しさん
25/08/02 18:37:41.95 tx0odXgn.net
Manifest V3問題かな
昔のブラウザを使えばいい
574:デフォルトの名無しさん
25/08/02 18:45:33.16 lDYz6lmB.net
>>565
二度と来るな
575:デフォルトの名無しさん
25/08/02 18:46:38.24 XyRtrdUE.net
>>563
ほう
それ使って、なんとかできそうだね
576:デフォルトの名無しさん
25/08/02 18:50:26.55 VT4vRkUR.net
powerqueryもwebページからでーた取得できるよ
577:デフォルトの名無しさん
25/08/02 19:11:58.74 XyRtrdUE.net
>>569
そう、それ
Microsoft Powe Queryってやつ
それでできそうだね
578:デフォルトの名無しさん
25/08/02 19:12:47.04 XyRtrdUE.net
>>570
あとはSeleniumBasicだか?
Copilotが教えてくれたわ
579:デフォルトの名無しさん
25/08/02 20:04:32.06 CP7PbFCC.net
>>551
コードは人が検証できるんだから盲信もクソもないだろ
あってるかどうか追ってから使うだけ
580:デフォルトの名無しさん
25/08/02 20:33:46.91 UAE3kLxf.net
>>571
SeleniumBasicは業務での使用だと導入のハードルが高いから、まず最初は使わない方向で検討した方がいい
JavascriptとかCSSとか使って動的に生成されたページだとWinHttpやXMLHttpじゃ取得できないから、その時になってから考えればいい
581:デフォルトの名無しさん
25/08/02 23:03:47.38 TpfKdlSr.net
VBA関係ないんだけど便乗質問
テキストじゃなくて画像になってる表を取り込む方法ない?
フリーのOCRサービスをいくつか試してみたけど、認識率が低すぎてまったく使い物にならなかった
たとえば、こんなやつ
URLリンク(i.imgur.com)
582:デフォルトの名無しさん
25/08/02 23:20:31.57 6k2UexVh.net
>>574
死ね
583:デフォルトの名無しさん
25/08/02 23:21:26.24 AVMu827h.net
>>574
ChatGPTはパーフェクトに認識してくれた
584:デフォルトの名無しさん
25/08/03 00:20:48.61 voGz0LGc.net
画像のテキスト化はChatGPTにその画像を貼って「csvに変換」て命令するだけ
585:デフォルトの名無しさん
25/08/03 01:46:04.43 tG7R5evI.net
>>572
日本語読めないバカなやつw
586:デフォルトの名無しさん
25/08/03 07:22:39.43 u21A2qJf.net
将棋の9x9の盤面を
Excelの9x9のセルに取り込む方法はありませんか?
4-5年前の段階ではそういうフリーのOCRアプリを試してみたけど、認識率が低すぎてまったく使い物にならなかった。
たとえば、こんなやつ
URLリンク(kifulog.shogi.or.jp)
587:デフォルトの名無しさん
25/08/03 08:12:05.36 jStM3M9q.net
>>579
スレタイ読んで出直せ
>>574みたいなクズに答えると次から次へとこういうクズが出てくる
588:デフォルトの名無しさん
25/08/03 08:19:57.47 SguiDfgn.net
>>579
そんなことをする必要がない
棋譜DBで探せ
589:デフォルトの名無しさん
25/08/03 10:08:34.77 VGZenSDR.net
>>580
アホ
人生においてどんなことでもなんらかのことは関係している
本件ならなおさら
590:デフォルトの名無しさん
25/08/03 10:09:27.93 VGZenSDR.net
>>581
ハゲ
わたしのしたいのは詰将棋本からデータを取りだし自分だけのアプリを作りそれで利用することだ
591:デフォルトの名無しさん
25/08/03 10:48:12.93 tQ6H2O71.net
ム板は変なのがいついたな
592:デフォルトの名無しさん
25/08/03 10:49:30.72 46rmLnF/.net
4~5年も出来ない出来ないって愚痴ってる時間で手動で取り込んだら終わってたのにな
593:デフォルトの名無しさん
25/08/03 13:02:27.38 f/3y9QG3.net
>>582
ならもっも関係の深いスレ探してそっちで書け
594:デフォルトの名無しさん
25/08/03 13:12:07.92 q1hsOkHS.net
>>573
なんとか、
VBAからSeleniumで、chromeでページを開くまでできたわ
組み込みに苦戦した
あとは、表のデータを取得できるか…?
595:デフォルトの名無しさん
25/08/03 13:31:22.64 yGXudbOO.net
>>587
ページのソースが取得出来たら、そのままワークシートにコピペするだけで自動的にhtmlタグを解釈して各セルにデータを入れてくれる
596:デフォルトの名無しさん
25/08/03 14:35:22.29 BVoc9QF/.net
>>586
ここのスレが関係あるじゃないか
Excelはセルだし将棋盤の升目もセルだ
597:デフォルトの名無しさん
25/08/03 15:10:58.77 LgAcf5U1.net
>>589
関係の有無じゃなく関連の強さの話をしている
598:デフォルトの名無しさん
25/08/03 15:30:28.08 hueQzkGD.net
>>590
ここのスレが関連あるじゃないか糞
Excelはセルだし将棋盤の升目もセルだ
599:デフォルトの名無しさん
25/08/03 15:56:24.14 LgAcf5U1.net
>>591
なら将棋スレで訊け
600:デフォルトの名無しさん
25/08/03 16:49:55.24 ggxTCWx/.net
将棋は文系なんだろうか
sfenとか局面の棋譜データはあるのに盤面とのやり取りは>>>579みたいな画像をいまだに使ってるっぽい
その辺ごにょごにょすれば莫大なお金になりそうだがはて
601:デフォルトの名無しさん
25/08/03 17:18:18.76 YZtGqrQ/.net
>>592
だが断ります
>>593
そりゃ99.99%の一般人は579みたいな画像しか理解できないからでしょ
ところでごにょごにょとはなんですか?
602:デフォルトの名無しさん
25/08/03 17:20:11.60 YZtGqrQ/.net
わたしがたくらんでる莫大なお金は
詰め将棋をAI的に生成させて
「詰将棋・問題数無限問!アプリ」を適正価格で大量に売り出すことだ
603:デフォルトの名無しさん
25/08/03 17:40:57.05 2B5I/jfB.net
詰将棋を自動生成するだけのプログラムならたしかもうあるんじゃなかったっけ。
手順の芸術性、棋力向上への有用性、解き味の良さなど、何らかの特徴でフィルタリングできる技術があるなら売れるかもしれないが、そうでないとあまりニーズがないんじゃない?
604:デフォルトの名無しさん
25/08/03 19:55:58.55 V/GjesGC.net
.AutoFilterで指定の日付に一致で挑戦していますがdate型で一致を試みても一致しないのですね
DateSerial(指定の日付)ではダメで、
Format(DateSerial(指定の日付), "セル.Text") でないとダメなんですね
こうなるとセルの表示形式をvbaで指定して表示形式を完全一致させるしかなさそうですね。
605:デフォルトの名無しさん
25/08/03 20:05:09.92 uky3ZHQc.net
やっと会社のOfficeが365版になったけどすごいね、追加された関数
配列系の関数がかなり強化されたから普通にワークシート関数でpandasっぽい操作が色々できて快適
606:デフォルトの名無しさん
25/08/03 20:10:32.84 V/GjesGC.net
>>598
パンダ🐼ズってなんですか?🤔
Power Queryでよくないでしょうか?
607:デフォルトの名無しさん
25/08/03 20:25:55.74 N8dBwnie.net
>>597
できた
Range("A1:A32").AutoFilter field:=1, Criteria1:=">=" & DateSerial(2025, 8, 3), Criteria2:="<=" & DateSerial(2025, 8, 3)
※A2~A32:2025/8/1~2025/8/31
608:デフォルトの名無しさん
25/08/03 20:34:53.53 q1hsOkHS.net
>>598
てか、
普通にVBAでPython使えればいいのに…
609:デフォルトの名無しさん
25/08/03 20:46:44.86 V/GjesGC.net
>>600
そうなんです
指定日に一致は.Text(画面上の表示)に合わせないといけないのに、
以上以下、
より大きいより小さいはできるんです
だからどうしてもdate型でやろうと思うなら、
DateSerial(2025, 8, 3) "=<" “>=”DateSerial(2025, 8, 3)
みたいにCriteria1とCriteria2を駆使しなければならない
だったらセルの表示形式も一時的でいいから一意に固定してそれでformat(date型,”指定した書式”)でCriteria1だけにフィルターした方が確実だと思うのです
610:デフォルトの名無しさん
25/08/03 21:11:15.05 tG7R5evI.net
>>598
ACCESS使えるならお勧�
611:゚ まあ何をDBでやると都合いいのか、からだが
612:デフォルトの名無しさん
25/08/03 22:36:46.93 V/GjesGC.net
フィルターをするのもわソートをする事も一苦労な上に不正確というのがVBAの致命的な欠陥であり、ExcelがExcelたる由縁ではないでしょうか
613:デフォルトの名無しさん
25/08/03 22:59:57.32 FAt4VsX5.net
>>604
Execlは表計算ソフトだからソートという機能は重要ではなかった
フィルタも仕様を大きく変えたので、VBAがついてこれないだけ。
614:デフォルトの名無しさん
25/08/03 23:00:50.98 FAt4VsX5.net
>>604
Excelシートをテーブルに見立ててSQLで操作できるんだよ?
615:デフォルトの名無しさん
25/08/03 23:30:27.42 V/GjesGC.net
VPageBreaks(1).Dragoff xlToRight,1
616:デフォルトの名無しさん
25/08/04 06:52:45.16 se5vJG1P.net
テーブルのAutoFilterの絞り込みを解除するにはws.ShowAllDataではなくてtbl.AutoFilter.ShowAllDataだったのね
617:デフォルトの名無しさん
25/08/04 07:58:56.26 s0XyzxW3.net
>>603
Accessは次の2027でディスコン、後継はExcelのモダン機能使えって話だからな
今からAccess使い始めるメリットは僅少
618:デフォルトの名無しさん
25/08/04 12:16:02.82 ID6mjO5y.net
>>609
情弱w
619:デフォルトの名無しさん
25/08/04 13:02:17.40 s0XyzxW3.net
>>610
?
620:デフォルトの名無しさん
25/08/06 12:21:48.06 ALrU+FVg.net
そして時は動き出す
621:デフォルトの名無しさん
25/08/06 19:01:16.26 x4zMZ0Dh.net
と思ったがやっぱり止める
622:デフォルトの名無しさん
25/08/06 19:03:13.54 Cijl6HjH.net
普通にExcelを使用するならまず使わないAddress関数も、VBAならセルの指定やセルの範囲指定に使えるとやっと気づいて感動を覚えた。
623:デフォルトの名無しさん
25/08/06 19:28:37.58 YepNzGI4.net
馬鹿自慢ですか?
624:デフォルトの名無しさん
25/08/06 19:51:44.79 mVrVWGPw.net
>>587
なんとか、Seleniumでテーブルのデータ取れた
うれしい
625:デフォルトの名無しさん
25/08/06 19:57:00.96 Cijl6HjH.net
>>616
Power Automate Desctop使おう泣
626:デフォルトの名無しさん
25/08/06 20:54:00.65 Cijl6HjH.net
VBAのRangeと関数のINDIRECTはほぼ似た様なものだったんだ
627:デフォルトの名無しさん
25/08/06 20:55:15.43 tEmBbRM5.net
>>614
ADDRESS関数はワークシートで使うならINDIRECT関数と組み合わせると便利だよ
628:デフォルトの名無しさん
25/08/06 21:22:56.67 Cijl6HjH.net
ワークシートのセルに=D1:F10を入力します。
=を消します
あ〜ら不思議
Range()に使える文字列になります震え声
知らなかった
629:デフォルトの名無しさん
25/08/06 22:10:53.86 gxWTXL5D.net
>>619
以前は揮発性関数を使っていると、クローズする時
変更してなくても「変更を保存しますか?」と聞かれてウザかったけど、最近はそうならなくなったね
630:デフォルトの名無しさん
25/08/06 23:12:12.97 ykWow3x9.net
>>621
あれ糞うざいよな
もう地球に隕石落ちて滅びれば?って思うほどイラつくよ
631:デフォルトの名無しさん
25/08/06 23:32:51.54 GR+FQsr7.net
>>621
よくそんなことに気づきましたね…
そんなことばかりで、最近はもう、ちょっとした違和感は無視する習慣がついてしまって
いけないことですが
632:デフォルトの名無しさん
25/08/06 23:45:43.54 Cijl6HjH.net
Range(“A1”,”B10”).Selectでも良かったんや
知らなかった
Range(Cells,Cells)で指定すると言えばそうだけど
633:デフォルトの名無しさん
25/08/07 07:28:20.30 NU4k5NRA.net
>>624
馬鹿であることを告白して楽しいの?
634:デフォルトの名無しさん
25/08/07 10:21:30.31 70AFeDyz.net
馬鹿なことすら書けない人が、誰よりもいちばんみじめ
みじめに目鼻口を描いたら>>625の似顔絵のできあがり
635:デフォルトの名無しさん
25/08/07 10:48:34.98 F33eI4p6.net
>>626
んなこたーない
馬鹿なことでも有意義な発言はあるけど、
ID:Cijl6HjHは馬鹿な上に日記でしかなくここに書くべき内容ではない
スレタイすら読めない馬鹿は惨めというよりもはや可哀想
636:デフォルトの名無しさん
25/08/07 10:51:06.38 O9lf3thN.net
でも年収400万とかなんだろ?
誰々が馬鹿とか以前に底辺はね…
637:デフォルトの名無しさん
25/08/07 12:50:03.07 T5vmth6D.net
年収1億だろうが1,000億だろうが、バカはバカ
アカンよ?
二宮尊徳の通俗道徳洗脳にまんまと嵌まって、「金持ち=エラい」とか思い込むのは
638:デフォルトの名無しさん
25/08/07 14:41:21.36 70AFeDyz.net
じぶんのカキコは書き込むべき内容なん?
べき内容ってどんな基準なん? だれが決めてるん? 勝手な思い込みだろ?
みじめな上に憐れで恥ずべき人間なのはどっち
639:デフォルトの名無しさん
25/08/07 16:05:30.00 F33eI4p6.net
>>630
スレタイもテンプレも読めない人間ですって自己紹介する人間は当然ローカルルールも読めないもんな
日本語を意味でなく文字で理解するとこういうバカになるんだな
640:デフォルトの名無しさん
25/08/07 17:41:57.70 3W14qCxv.net
>>630
馬鹿は消えろ
641:デフォルトの名無しさん
25/08/08 16:23:54.91 Uv90EY2Z.net
でも、先輩のクレバーな回答とか作品とか、このスレで一度もお目に掛かったこと無いですよね?
それはどうしてなんですか?
642:デフォルトの名無しさん
25/08/08 18:29:28.89 2mOO3f8y.net
そりゃセンスも無い年収も低い参考書で覚えただけの奴がドヤってたからだよ
643:デフォルトの名無しさん
25/08/08 18:40:58.74 adZh48Rg.net
>>633
お前の馬鹿な日記よりましだろ
644:デフォルトの名無しさん
25/08/08 19:39:10.06 WJNqBNDH.net
目くそ鼻くそ
645:デフォルトの名無しさん
25/08/08 20:25:56.31 LzRW7Y1G.net
アホな質問にこたえるとなるとどうしてもアホな回答になるから仕方ない
646:デフォルトの名無しさん
25/08/08 20:54:05.55 xPBNC7DI.net
アホな質問はアホが質問するだけに内容も浅く簡単な内容 だから似たような有象無象のアホがこれなら俺も答えられるとアホな回答が続く
悪貨は良貨を駆逐する
647:デフォルトの名無しさん
25/08/08 21:55:45.55 dCfaDUr7.net
せめて年収制限しようぜ
600万以下は質が下がるから質問に答えないで
648:デフォルトの名無しさん
25/08/09 00:11:04.59 gjs9J3GA.net
600万以上のスペシャル回答見せてみろ
649:デフォルトの名無しさん
25/08/09 07:45:35.58 jRFVkFyh.net
760万の俺に任せろ
650:デフォルトの名無しさん
25/08/09 16:29:44.93 B3Fv7AUR.net
なら、質問回答形式じゃ無くていいから、じぶんの作品のうちベスト5から
どれか見繕ってサンプル見せてくださいよ 一部でいいから
最近半年間とかでじぶんでも上出来!と絶賛した処理でもいいっスよ
記憶も薄れたけど、あの時あんな処理して難を逃れたとかいう経験談でもいいし
どれひとつ書けない人達が他人を冒とくしてるだけでしょ?
651:デフォルトの名無しさん
25/08/09 16:40:10.00 B3Fv7AUR.net
クマを殺処分した自治体とか、学歴偽装で市長当選させた役所とかに
まったく自分には何の関係も無いのに迷惑イタ電しまくる層とおんなしレベルでしょう?
IQが低いのか産まれ持ったDNAが似通ってるのか育った環境が劣悪なのか
今現在の生活レベルがどん底なのか知りませんけど、いったい何に突き動かされてそんな事ばかりするやら
もはや迷惑行為する事こそが生きる術みたいに成り果ててますけど、いいんですか?
まぁ、いいんでしょうね 本人にとっては そうでなきゃ、こんな迷惑行為し続けるのにも飽きるはずですし
652:デフォルトの名無しさん
25/08/09 16:53:28.10 FYBArRLP.net
常に直近50件の最新データをX-MRグラフに出力させて異常判定があったら任意の信号を出すシステム
三次元測定機で全項目をフォーマットに反映させて寸法の合否判定を自動で出すシステム
毎日配信される受注データから指示書に自動振り分けさせて情報をマスターと比較して客先を変換
数量は同一のものはまとめるシステム
ここらは賞取ったから記憶にあるし最近まで追加依頼がきてたものもある
出世する前から構文がどうだとか気にしたことはないかな
653:デフォルトの名無しさん
25/08/09 17:19:54.04 CQopIGSQ.net
いつもの人だぞ
654:デフォルトの名無しさん
25/08/10 16:16:25.84 5N8MTK4H.net
ここで長文書く人はだいたいあたおかさん
655:デフォルトの名無しさん
25/08/10 16:25:32.82 ne+O2SWW.net
VBAも単発処理しか作ったことないもんなお前らって…
656:デフォルトの名無しさん
25/08/10 17:04:13.27 swuUdv2c.net
>>647
「単発処理」って何?
657:デフォルトの名無しさん
25/08/10 18:01:46.64 /nDvelQa.net
LET関数はPower Queryの無名関数の様なものだったのか
IFSで条件が沢山ある時に、LETでそれぞれの条件に名前をつけたら可読性、保守性が上がるかなと思ったけど、特にそんな事も無かったな。
LET関数の最後にIFSの関数が入って、それぞれの名前を入れて、TRUEの時の文字列を入力する
658:デフォルトの名無しさん
25/08/10 18:30:04.41 3rv715uo.net
LET関数はPowerQueryのLET構文に相当する
PowerQueryの無名関数に相当するのはLAMBDA関数
659:デフォルトの名無しさん
25/08/10 18:37:10.76 46DfGBoc.net
質問だが、
2次元配列arr2dがあったとして、
それ1次元配列として新たにarr1dに取り出せる?
forループ使わない方法で
660:デフォルトの名無しさん
25/08/10 18:40:21.77 qdcwbCWk.net
>>651
Doループを使え
661:デフォルトの名無しさん
25/08/10 18:48:13.44 swuUdv2c.net
Excel VBAで2次元配列かどうのとか、学校の宿題なのかな?
662:デフォルトの名無しさん
25/08/10 19:00:02.44 aYND9n09.net
実践で活かす力の無い人から見たら何見ても学校の宿題に見えるかもね
気にしなくていいよ
663:デフォルトの名無しさん
25/08/10 19:00:37.04 /nDvelQa.net
>>651
index関数とか
Transposeとindex関数
2次配列を崩して全て一次配列に直結したいならループを使うしかないのでは
664:デフォルトの名無しさん
25/08/10 19:03:21.32 6IrxmcjP.net
>>653
二次元配列滅茶苦茶使うと思うけど…
665:デフォルトの名無しさん
25/08/10 19:21:15.32 46DfGBoc.net
>>655
WorksheetFunction.Index()ってやつ?
できたわ
ありがとう
Web解析で
666:デフォルトの名無しさん
25/08/10 19:22:14.33 46DfGBoc.net
>>657
WorksheetFunctionってのが、
なんだか気持ち悪いが…
667:デフォルトの名無しさん
25/08/10 19:33:30.05 swuUdv2c.net
>>656
Excelシートなのに?
668:デフォルトの名無しさん
25/08/10 19:34:47.66 swuUdv2c.net
処理の途中を見せない、見えなくするのはテストをしない人間なんだろうな。
669:デフォルトの名無しさん
25/08/10 19:47:08.98 /nDvelQa.net
>>658
WorksheetFunctionは普通の書き方ではないのでしょうか?
Matchは実はApplication.Matchもあると知っているのでWorksheetFunctionとは書きませんが
WorkshetFunctionと書くもの書かないものの違いが分かりません
670:デフォルトの名無しさん
25/08/10 20:03:17.76 46DfGBoc.net
>>661
そうなんだ
ほとんど使った記憶ないわ
処理速度が同じならいいけどね…
671:デフォルトの名無しさん
25/08/10 20:16:43.15 /nDvelQa.net
>>662
worksheet functionのMatch関数はエラーを返さないけど、
application.Matchの方はエラーを返すからVariant型で受け取ってエラーでなければ処理という書き方にしています
applicationで使える関数はapplication.関数名で使用した方が良さそう
672:デフォルトの名無しさん
25/08/10 20:39:15.86 46DfGBoc.net
>>663
そうなんですか
WorksheetFunctionはなんか気持ち悪いですね…
673:デフォルトの名無しさん
25/08/10 21:21:52.76 6IrxmcjP.net
>>659
シートだからこそだよ
二次元配列をワークシートで代替しようとしたらクッソ遅くてイライラするだろ
配列で処理したら一瞬で終わるような処理もワークシート使うと数分かかったりする
674:デフォルトの名無しさん
25/08/10 21:57:45.70 swuUdv2c.net
>>665
それだとExcel VBAでやる理由がないだろ?
675:デフォルトの名無しさん
25/08/10 22:11:09.99 Zg5co2YS.net
>>666
お母さんに何でもかんでも聞いてそうだな
VBA以前の問題だよ
676:デフォルトの名無しさん
25/08/10 22:33:15.93 swuUdv2c.net
>>667
Excel VBAの話だろ?
677:デフォルトの名無しさん
25/08/10 22:37:43.66 swuUdv2c.net
Excel VBAは廃止の方向だとわかってないのかな?
678:デフォルトの名無しさん
25/08/10 22:57:37.35 ne+O2SWW.net
まだ学生だろうし色々聞くのはありだと思うよ
社会に出る前にエクセルに触れてる時点で有利
679:デフォルトの名無しさん
25/08/11 01:56:36.28 6DVwG+w7.net
>>669
廃止?どこでそんな話しになってるの?
680:デフォルトの名無しさん
25/08/11 09:10:35.62 ppLV33ur.net
>>664
勘違いしないで欲しいのですが
そもそもVBAはアマチュアが使用している言語だから、そもそもApplication.Matchがある、WorksheetFunction以外にExcelの関数のオブジェクトがある、とは知らない人が非常に多いと思います。
気持ちいい、気持ち悪いの問題ではないです。
それに、Application.関数名で使用できない関数は非常に多いのではないでしょうか?
でもExcelである以上、worksheet関数にも熟知して、使用できる方がコードも完結で、動作も早いのではないでしょうか?
681:デフォルトの名無しさん
25/08/11 09:20:05.48 4CrCXXHi.net
>>666
マジでその認識か
シートのデータを二次元配列に入れて加工して、
最終的にシートに戻すんだよ
まさかテンポラリーシートみたいなダサい手法使って加工するの?まさかね
>>669
VBA廃止はとっくに取りやめになったよ
682:デフォルトの名無しさん
25/08/11 10:10:32.15 ppLV33ur.net
arr = Range(範囲)で取り込んで処理をして結果をシートに貼り付けるのはとても高速だと思う
だけど今度は数式を多用している場合はそのまま貼り付けるわけにはいかない泣
683:デフォルトの名無しさん
25/08/11 12:02:58.75 prhnhKBm.net
>>671
推奨しなくなってきてる
Automateなんちゃらに移行したいのかな?
684:デフォルトの名無しさん
25/08/11 12:17:41.76 oIjo7VRO.net
>>672
そうでしたか…
まあ、処理は一瞬ですね
web解析とかだけど。
685:デフォルトの名無しさん
25/08/11 12:45:34.69 o/BAd3AB.net
10秒かかってたのが配列にしたら10倍速くなって1秒で終わった
その9秒って意味あんの?
朝10分早く起きた方がずっと有意義な1日を送れるよ
686:デフォルトの名無しさん
25/08/11 12:50:39.67 PI2CudDQ.net
VBAでデータ加工してる人ってまだいるんだな
スピルでサクッとスマートにできるのに
最近VBA使うのは入出力の自動化くらいだ
687:デフォルトの名無しさん
25/08/11 13:58:36.48 ft2lwBWZ.net
スマートというよりただの仕事出来ない奴って感じ
688:デフォルトの名無しさん
25/08/11 15:45:14.02 ppLV33ur.net
= A1:A100 = 条件
というのは真偽値の配列を返しているのですね
これを活かして
arr = Evaluate(アドレス & “=“”条件”””)
をすればループをしなくても真偽値が取得できる
worksheet関数のFilterの正体は、配列に対して二次配列の真偽値がTrueの行だけを抽出しているだけだった
689:デフォルトの名無しさん
25/08/11 15:45:48.34 ppLV33ur.net
>>677
10秒の例を出すのがおかしい
690:デフォルトの名無しさん
25/08/11 15:46:25.33 ppLV33ur.net
>>678
Power Queryを使いましょう
691:デフォルトの名無しさん
25/08/11 15:54:22.73 oIjo7VRO.net
>>682
Power Queryって、
VBA内で使えますか?
webページからテーブルとかデータを取得したい場合に
692:デフォルトの名無しさん
25/08/11 16:17:24.33 ppLV33ur.net
>>683
.RefreshAllで全て更新くらいしか知りません
しかもバックグラウンドの更新のチェックを外す必要があります
693:デフォルトの名無しさん
25/08/11 16:30:25.98 Zix4Kp+v.net
>>671
VBA廃止し代わりにpythonにするという流れがあったけど、
優秀なpythonのアドオンがあり車輪の再発明になりかねないから取りやめ
具体的に挙げられたのはxlwingsとopenpyxl
でも開発の成果からPython in Excelが導入
上記は全てMS開発者ブログより
694:デフォルトの名無しさん
25/08/11 17:29:29.24 N8nCnSEw.net
Excel内でPython使えてワークシートをData
Frameとして簡単に扱えたら最高に便利だろうね
エディタがJupyterのようなノートブックなら最高
なんちゃってデータアナリスト市場を総取りできるくらいのポテンシャルがある
695:デフォルトの名無しさん
25/08/11 17:32:34.66 oIjo7VRO.net
>>686
Excelで、
PythonでAIが作れたらええよね
今は、橋渡しが必要だけど
696:デフォルトの名無しさん
25/08/11 17:49:27.36 6DVwG+w7.net
>>685
で、それが
>Excel VBAは廃止の方向だとわかってないのかな?
という書き込みと何の関係が?
いつ廃止の話しになったんだ?
697:デフォルトの名無しさん
25/08/11 18:37:53.96 ppLV33ur.net
今更ながらRange.RowsとRange.Columnsを知った
やっと変数rngの中のセルの場所からrngの行全体や複数行の指定の方法を知った
rngの中の指定の列から指定の列までの範囲の指定の方法も知った
もっと早く教えて欲しかった
どのサイトを見てもRange(セル)かRange(Cells,Cells)かCellsばかり
.EntireRowと.EntireColumnは専ら行の高さや列幅変更の時に使用するだけ
.Intersectも正しくは交差するセルの範囲取得なのにもっぱらチェンジイベントで
If Not Intersect(Target,対象範囲) Is Nothing Thenでチェンジしたセルが対象範囲内か調べるだけ
AIに聞いても答えてくれない
698:デフォルトの名無しさん
25/08/11 18:42:10.74 NMNq6D65.net
>>689
無能自慢