No.2ベストアンサー
- 回答日時:
こんにちは。
■ テキストの読み書き速度について。
従来の Open, Line Input 等のステートメントよりも、FileSystemObject の
テキストストリームを使った方が高速です。私の環境で約 60% 程度。比較
ソースを書いてみて下さい。したがって、
■ 扱うファイルサイズが大きい場合は、FileSystemObject が有利。
対して、小さなサイズのファイルを扱う場合は、どのような方法であっても
体感できる差は無いでしょう。しかし、極端な例で一行テキストを書き出す
場合。FileSystemObject は
Set fso = CreateObject("Scripting.FileSystemObject")
といった初期化に必要な時間、オーバーヘッドが発生しますから、それなら
Print でサクっと書いてしまった方が速い....ということもあるわけです。
したがって、
■ 扱うファイルサイズが小さい場合は、Open, Line Input 等が有利。
どのファイルサイズで大小を分けるかは、ケースバイケースなので具体的
には言えませんが、大まかにこのような線引きはできるかな。
以下、余談で参考まで。
FileSystemObject は機能的に非常によく考えられており、上述の読み書きの
速さ以外にも
1. 優れた可読性をもったソースが書ける
2. ファイル・フォルダの列挙、移動、コピー、削除等のオペレーション
に便利なコマンドが多数用意されている
といった重要なアドバンテージをもっています。
Open, Line Input 等は VB 初期のころからあるステートメントで多少時代遅れ
の感は否めませんよね。ファイル I/O は、FileSystemObject に絞って覚えて
構わないと思います。
# Dir 関数は再帰処理できない、不便。でも、ファイル列挙は Dir の
# 方が速かったりする。全てのケースで FileSystemObject が有利とは
# 限らない。
# 結局、そのうち「両方マスターしとかないと...」ということになる
# と思いますが。使い分けですね。
# テストソースをご自分で書いて、試行錯誤を重ねて下さいね (・∀・)b
二つの手法について、長所と短所を分かりやすく説明していただいて
助かりました!!
ファイルシステムオブジェクトは、覚えるとかなり便利そうですね。
がんばってマスターします。
No.1
- 回答日時:
使用例は自分で探せるでしょう。
Open ステートメント~ファイルの読み込み(or 書き込み)~ Close だと何だか書き方が直感的じゃないですね。
Open ステートメントの書き方も慣れないし、Line Input も同様。
FileSystemObject だと
Dim fso As New Scripting.FileSystemObject
Dim ts As Scripting.TextStream
Set ts = fso.OpenTextFile("D:\aaa.txt", ForReading, False)
Dim lText As String
lText = ts.ReadLine
MsgBox lText
ts.Close
てな感じで、書き方の整合がとれてる感じがします。
ファイルの作成やら移動やらコピーやら、FileSystemObject のその他のオブジェクトやメソッドとの親和性も高いですし、これらを使い出すと VB の Open や Dir などファイル操作関連のチグハグさが目立ち、使いづらくて仕方ないです。
まぁ個人的な感想ですけど。
自分は逆にOpenやDirとか使ってたものなんで、
まだFileSystemObjectがしっくりこないんですが、様々なメソッドも
用意されてるみたいなので、がんばって覚えてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ヤフオク! ヤフオク!の個人情報系はどの程度公開されるのでしょうか? 3 2022/11/22 23:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- その他(音楽・ダンス・舞台芸能) 手描き動画の楽曲使用について 2 2023/02/11 00:59
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
-
VB6 開発環境のエディタに行番号を表示
Visual Basic(VBA)
-
VB6.0の別名保存について
Visual Basic(VBA)
-
-
4
0バイトのテキストファイル
Visual Basic(VBA)
-
5
VB6 機種依存文字の変換
Visual Basic(VBA)
-
6
VB6 使用中ファイルの確認
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのマクロについて教え...
-
ExcelVBA修正のお願い
-
エクセルのマクロについて教え...
-
VBAコードについて教えてくださ...
-
[vb.net] 起動したFrom2を閉じ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBA 別ブックからコピペしたい...
-
重複確認
-
Excel(M365) Vlookup/セル反転(...
-
エクセルのVBAコードについて教...
-
コードを直していただきたいで...
-
{ CONTROL Forms.Label.1}が...
-
マクロの記録を使用したマクロ...
-
Excel VBA 定義されたプロージ...
-
VBA 複数の各シートに行を追加...
-
配列のペースト出力結果の書式...
-
VBA実行後に元のセルに戻りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ftpコマンドの戻り値をチェック...
-
簡単にEXEファイルを作れるプロ...
-
JCL(富士通/MSP)について教...
-
VBAのzip解凍についてのご質問です
-
VB6にて、テキストファイルの内...
-
FTPコマンドのリターンコー...
-
ISOファイルの編集方法
-
warファイル 「種類:WAR ファ...
-
ランレングス法を用いたC言語解...
-
秀丸エディタでのファイル分割
-
Subversion Eclipse Subversive...
-
コマンドプロンプト "expand" ...
-
マイナポータルの住宅借入金当...
-
VB Scriptで隠しファイル、フォ...
-
解凍できません 拡張子の前に...
-
VB.NETでフォルダの一覧を更新...
-
centos7.0ファイルの編集について
-
exeファイルの編集
-
sh拡張子のファイル内のプログ...
-
VB6.0 テキストファイルの操作...
おすすめ情報