こんにちは。Kakugariです。
今、VBでエディタを作っていますがファイル操作でつまずいてしまいました。Commondialogからファイル名を取得して、そのファイルをMaintxtに表示するプログラムですがMaintxtに表示されるとき、Tabを使用してスペースを空けた部分が、無視されて文字が前に詰めて表示されます。それ以外は正常です。下にコードを載せましたので、お分かりになられる方は、間違いを指摘していただけたらありがたいです。ちなみにVB6です。Commondialogのプロパティは、デザイン時に設定されています。
Private Sub mnuOpen_Click()
On Error GoTo ErrCode
With CommonDialog1
.DialogTitle = "開く"
.ShowOpen
End With
Dim txt As String, Work As String
Open CommonDialog1.FileName For Input As #1
Do While Not EOF(1)
Input #1, Work
txt = txt & Work & vbCrLf
Loop
Close #1
Maintxt = txt
Exit Sub
ErrCode:
Close #1
MsgBox "ファイルは開けませんでした。", vbCritical
End Sub
No.3ベストアンサー
- 回答日時:
txt = txt & Work & vbCrLf
の部分は、容量が大きいファイルを扱うと、容量の2乗に比例したオーダーで速度が低下します。
今回は、VBのActiveXコンポーネントを使い、容量の1乗に比例したオーダーでしか速度が低下しない方法をご提供♪
ちなみに、VB6以上での方法です。
メニューのプロジェクト→参照設定でMicrosoft Scripting Runtimeを追加
次のコードを標準モジュールに貼り付ける
'↓ここから
Private FS As New FileSystemObject
Public Property Get AFile(File As String) As String
On Error Resume Next
Dim Tx As TextStream
If FS.FileExists(File) Then
Set Tx = FS.OpenTextFile(File)
AFile = Tx.ReadAll
Tx.Close
Set Tx = Nothing
End If
End Property
Public Property Let AFile(File As String, Data As String)
On Error Resume Next
Dim Tx As TextStream
Set Tx = FS.OpenTextFile(File, ForWriting, True)
Tx.Write Data
Tx.Close
Set Tx = Nothing
End Property
'↑ここまで
使い方
Text1.Text = AFile("ファイル名")
で読み込み。
AFile("ファイル名") = Text1.Text
で書き込み。
ファイルを変数のように扱える様になります。
また、読み込み部分は、コンポーネントがバイナリで一気に読み込んでから、文字列に変換してくれるので、容量が大きいときでも速度があまり低下しません。
もちろん、VBのTextBoxは32k文字までしか表示できません。
詳しく教えていただき、ありがとうございます。
こちらの方法を使うことにしました。初心者なので、これからもお世話になると思いますが、よろしくお願いします。
本当にありがとうございました。
No.2
- 回答日時:
こんにちは
自分はVB5ですが
「Input」を「Line Input」に変えたらきちんと動きましたよ
わざわざ調べていただき、本当にありがとうございます。
haporunさんの方法の方が実行速度が速くなるらしいのでそちらを使わせていただきます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
.txtではなく.logの方が良いの...
-
ファイルの最後に文字列挿入
-
多数のサブディレクトリ内のフ...
-
テキストファイルで提出とは?
-
COPYコマンドで結合すると余計...
-
bat(バッチ)ファイルで文字入...
-
ファイルを処理中に次の処理に...
-
コマンドプロンプトで指定した...
-
UWSCでテキストファイルを開い...
-
3つ以上のテキストファイルをコ...
-
バッチファイル 複数ファイル...
-
VBScriptでtxtファイルの中身を...
-
Windowsのバッチファイルを利用...
-
テキストの保存
-
renameコマンドについて
-
ファイル世代管理バックアップ...
-
Windows版のgzipについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
.txtではなく.logの方が良いの...
-
txtのファイルから編集してもい...
-
バッチファイルで文字列削除に...
-
Windowsのバッチファイルを利用...
-
バッチファイル 複数ファイル...
-
ファイルの最後に文字列挿入
-
テキストファイルのファイル名...
-
psqlでエラーログをとりたい
-
forfilesで検索したファイルを...
-
renameコマンドについて
-
accessでSQL文を使ってcsvファ...
-
コマンドプロンプトでスペース...
-
ファイルを処理中に次の処理に...
-
UWSCでテキストファイルを開い...
-
バッチファイルからVBAに引数を...
おすすめ情報