
No.5ベストアンサー
- 回答日時:
置き換えてファイルの保存をしたかったのですね・・・
それと、やはり読み込まない事には、置き換えれないですよ。
だって読んでないんだもん・・・
んで、置き換えで保存するのに一番早いのは#2に書いてあるようにまず
「GETで読む」
「Replace関数で置き換える」← 一度でファイル内の文字列を変換できます(VB6仕様)
「PUTでファイルに落とす」
これをファイルの数だけ繰り返す処理になると思います。
大まかにわけると、たった3つの処理で済みます。
回答ありがとうございます。
こんな簡単な方法があったとは・・・
Replaceって文字を繰り返す時に使うものだと思っていました。
もっと勉強しなくてはいけませんね。
これからもよろしくご教授願います。
No.3
- 回答日時:
昔懐かしいMS-BASICの頃を思い出します。
VBで次ぎのロジックはいかがですか。結構Basic時代の入出力関数がVBでも使えるようです。
a=input(50,1)でファイル番号1の50バイトをストリングaに読みこみます。
これだとCRが中身にあっても、50バイト読みこむと
思います。
ここでCRのストリングの位置のpバイト目をInstr関数で見つけ、
CRをCR+LFでおきかえる。(またはLFを加える。)1バイトより
pバイトめまでとLFをbと言う文字列に作る。
そのbという文字列をprint #2,bでファイル番号2の
アウトプットファイルに書き出す。
次ぎにaのP+1バイトより後のストリングで最初CRの位置を
見つけ同じ事を行う。aの中にCRが見つからなくなれば
50バイトまでを一時記録しておき、次ぎの50バイトの
先頭部分と結合しファイル番号2のアウトプットファイルに書く。
次ぎにa=input(50,1)を実行すると、61バイトから100バイト
目がaに入るので同じ事を行う。以下#1のファイルの終わりまで
繰り返す。
Instrである文字列を見つけるとき、その文字列の作り方は、
制御コードのCRやLFやCR+LFなどのときは、文字は
使えずc=chr(xx)+chr(yy)などのchr関数と+または
&を使う。
下記はinput関数がVBでも使えるかテストしたもので、
作る時間がなくて、お尋ねの要求を満たすプログラム
そのものでなくて済みません。
改行&H0Aはchr(10)なんですが,復帰はchr(32)
だったと思いますが、手許に表がなくて未確認です。
InputとInputB関数があるかもしれませんので調べて
下さい。
文字列を扱う関数はInstr,Index,Substr、Mid,Right
などである。
Private Sub Form_Load()
c = Chr(10) & Chr(32)
Open "c:\javasamples\test1.txt" For Input As #1
Open "c:\javasamples\testn.txt" For Output As #2
For i = 1 To 3
a = Input(50, 1)
' p = InStr(a, c)
' MsgBox p
'MsgBox Mid(a, 1, p) & "=="
MsgBox a
Next i
a = Input(40, 1)
MsgBox a
End Sub
No.2
- 回答日時:
にも書いたのですが・・・それとほとんど変更なしのファイルの読み込みサンプルです。
読み込みを一行ずつ行わないで、バイナリ形式で全てを一度で読み、指定の区切り文字で配列にセットしてます。
改行コードが"OA"という文字列であればこれで可能なのですが。。。
いまいち質問の内容を理解しきれていない部分があります。
違ったらご指摘ください。
Sub Main()
'ファイル名
Const FILENAME As String = "c:\test.txt"
'テキストを配列で記憶
Dim valAry As Variant
'問題ファイルの読み込み(ファイル名:改行文字:取得した文字列)
If Not subConvert(FILENAME, "0A", valAry) Then
Call MsgBox("[" & FILENAME & "]失敗")
GoTo PGMEND
End If
PGMEND:
End Sub
'テキストファイルを読み込み、配列にして返す
'パラメータ1:ファイルパス
'パラメータ2:テキストファイルは何区切り?
'パラメータ3:返す配列
Public Function subConvert(inFilePath As String, strCut As String, outAry As Variant) As Boolean
Dim lngFileSize As Long 'ファイルサイズ
Dim lngFileNum As Long 'ファイルナンバ
Dim strBuff As String '文字列ワーク
'ファイルサイズの取得
On Error Resume Next
lngFileSize = FileLen(inFilePath)
On Error GoTo 0
'サイズが取得できない時NG処理
If lngFileSize < 1 Then
Exit Function
End If
'取得するためのサイズを用意
strBuff = String(lngFileSize, vbNullChar)
'テキスト取得
lngFileNum = FreeFile
Open inFilePath For Binary As #lngFileNum
Get #lngFileNum, , strBuff
Close #lngFileNum
'文字列を区切り、配列に変換
outAry = Split(strBuff, strCut)
'OKを記す
subConvert = True
End Function
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=169686
回答ありがとうございます。
参考にさせて頂きます。
やはり、1つずつ見ていくしかないのでしょうか?
私はNo3の方のような方法でLineInputで読込みInstrで検索しrightとLeftを使って挿入しファイルに書き込むという方法を考えていましたが、
No1の方のようにしかもプログラムの中で(出来ればファイルを読み込まず)一発置換をしたいと思って質問しました。
ちょっと虫のいい話でしたか・・・・
皆さんの回答を見ても他アプリケーションを使用しないと一発では置換できない
のでしょうか。
No.1
- 回答日時:
早速の回答ありがとうございます
このソフト簡単でいいんですが、実際に使うのは私ではないので
プログラムの中で処理したいと思っています。
Windowsのワードパットで読込み、保存すると改行コードを変換して
保存してくれるのですが、他のソフトを使わず(プログラムの中で他の
アプリケーションを使うのが面倒なので)プログラムで簡単な方法を
知りたかったのです。
質問がわかりにくくてすみません。
ただ、ヤマトのファイルがMacのTextファイルだという事がわかっただけでも
勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォートランのソース変更を試...
-
txtファイルの数字を計算
-
テキストファイルを後ろから読...
-
ファイル読み込みと構造体について
-
バイナリファイルでOutOfMemory...
-
バイナリ出力
-
VB6.0 MSFlexGridのMouseRowプ...
-
CFileの使い方を教えてください
-
DXFファイルをVBで取り込み、図...
-
[VBS] 16進数でバイナリファイ...
-
VBAでテキストファイルを複数開...
-
バイト型のデータを16進表記で...
-
エクセルのプロパティーでセキ...
-
ExcelブックをGoogleスプレッド...
-
エクセルvbaでdocuworksprinter...
-
Windows10でコマンドプロンプト...
-
エクセルで複数のコメントのサ...
-
frxファイルの役目
-
Excel csv保存 列数が異なる場...
-
同じファイル名 上書きしないフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バイト型のデータを16進表記で...
-
バイナリファイルの一部分をカ...
-
バイナリファイルでOutOfMemory...
-
DXFファイルをVBで取り込み、図...
-
Cで2次元配列にCSVファイルを...
-
配列操作について
-
日本語を配列に収め、そして表...
-
VBScriptの配列は、要素数を指...
-
テキストファイルを後ろから読...
-
CSVファイルによる検索の高速化
-
グレースケール画像の画素値を得る
-
ファイルをメモリに出力する方法
-
RGBのバイナリデータをCImageに...
-
C++による ファイルの読み込み
-
日本語混じりのファイルをラン...
-
VBAでテキストファイルの改行を...
-
VBでバイナリファイルのコピー...
-
[VBS] 16進数でバイナリファイ...
-
C言語でのファイル読み込み
-
Unicodeのファイル読み込みがう...
おすすめ情報