Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
Re: テキストファイルのエクセルへの転記 の yuiyui0618さんへ
投稿日時: 26/09/26 12:06:42
投稿者: simple

テキストファイルのエクセルへの転記
https://www.moug.net/faq/viewtopic.php?t=83220
について。
 
(1)
私のコードではエラーが出なかったようで幸いでした。
データの構造は、サンプルコードの構造と同じですか?
4桁で間違いなかったですか?
 
半平太さんのコードも、十分な速度が出るものだと思っています。
何より簡潔なコードですよね。
エラー時の状況(DATAの型、内容など)とかを追記して返信してもらえれば、
直ぐに解決する話ではなかったでしょうか。それほど急いて閉じなくてもと思いました。
 
(2)
SUZUさんのコードは殆ど知らないものでしたので、
テストデータで動作確認しましたところ、予想以上に時間が掛かったので不思議に思っておりました。
 
その後気になって生成AIに尋ねたら、以下のような話でした。

for /f "delims=" %%f in ('dir /b /on "%EXT%"') do (
    :: 各ファイルを1行ずつ読み込んで、末尾にファイル名を結合
    for /f "usebackq delims=" %%l in ("%%f") do (
        echo %%l %%f>> "%OUTPUT%"
    )
)
としてしまうと、一行ごとにファイルの開閉が生じてしまうからでしょう、とのこと。
(
    for /f "delims=" %%f in ('dir /b /on "*.txt"') do (
        for /f "usebackq delims=" %%l in ("%%f") do (
            echo %%l %%f
        )
    )
) > "%OUTPUT%"
のようにするとよいのでは、とのことでした。
格段に改善されるものと思います。
コマンドプロンプトの勉強の良い機会をいただきました。

回答
投稿日時: 26/09/29 15:02:39
投稿者: Suzu

そっちの方が速いですね。
simpleさん ありがとうございました。

投稿日時: 26/09/29 18:43:12
投稿者: simple

SUZUさん コメントありがとうございました。こちらこそ御礼申し上げます。
 
さてエラーになったという
半平太さんのコードですが、
Range("A1").Resize(UBound(DATA), 3) = DATA
という箇所には文法上の誤りはありません。
私が実行した際も正常に動作しました。
 
考えられるのは、実データが想定されるものと違う内容になっている可能性です。
つまり、実行時の環境、使用しているデータを確認しないと、原因はわからないですね。
(それでも、Collectionの作成時にエラーなることはありえますが、
 配列にしてから書き込みでエラーになるのは、ちょっと想像がつきません。)
 
# エラーがでたら、その時の情報を提示してもらって解決されたほうが
# 質問者、回答者双方にとって有益かと思いました。
 
時間も貴重ですので、この辺で閉じます。