2012-05-03 17 views
5

ここでは、私がやって期待しています何のための擬似コードです:テキストファイル:オープン/検索/置換名前を付けて保存/ファイルを閉じる

Open text File 

Find "XXXXX" and Replace with "YYYY" 

Save text File As 

Close text file 

これは私がこれまで

Private Sub CommandButton1_Click() 

Dim sBuf As String 
Dim sTemp As String 
Dim iFileNum As Integer 
Dim sFileName As String 

' Edit as needed 
sFileName = "C:\filelocation" 

iFileNum = FreeFile 
Open sFileName For Input As iFileNum 

Do Until EOF(iFileNum) 
Line Input #iFileNum, sBuf 
sTemp = sTemp & sBuf & vbCrLf 
Loop 
Close iFileNum 

sTemp = Replace(sTemp, "DIM A", "1.75") 
sTemp = Replace(sTemp, "DIM B", "2.00") 
sTemp = Replace(sTemp, "DIM C", "3.00") 
sTemp = Replace(sTemp, "DIM D", "4.00") 

'Save txt file as (if possible) 

iFileNum = FreeFile 
Open sFileName For Output As iFileNum 

Print #iFileNum, sTemp 

Close iFileNum 

'Close Userform 
Unload UserForm1 

End Sub 

持っているものですが、元のテキストファイルを上書きするのではなく、新しいファイルに「別名で保存」します。

答えて

5

ジャストアイデアは以前読ん1(C:\filelocationよりも開き、異なるファイルに書き込むことです

Open sFileName For Output As iFileNum 

右この行の前に

sFileName = "C:\someotherfilelocation" 

この行を追加します。 )。

あなたは空想を取得し、ダイアログボックス「名前を付けて保存」本物を表示したい場合は、あなたの代わりにこれを行うことができます:

sFileName = Application.GetSaveAsFilename() 
8

なぜメモ帳に関係するのですか?

Sub ReplaceStringInFile() 

Dim sBuf As String 
Dim sTemp As String 
Dim iFileNum As Integer 
Dim sFileName As String 

' Edit as needed 
sFileName = "C:\Temp\test.txt" 

iFileNum = FreeFile 
Open sFileName For Input As iFileNum 

Do Until EOF(iFileNum) 
    Line Input #iFileNum, sBuf 
    sTemp = sTemp & sBuf & vbCrLf 
Loop 
Close iFileNum 

sTemp = Replace(sTemp, "THIS", "THAT") 

iFileNum = FreeFile 
Open sFileName For Output As iFileNum 
Print #iFileNum, sTemp 
Close iFileNum 

End Sub 
+0

このコード内に名前を付けて保存することはできますか? –

+0

このコードはどのように問題のコードと異なるのですか? –

+2

OPは元の質問の*編集*バージョンにコピー/ペーストしました。 ;-)別名で保存(別のファイル名で)修正を加えていただきありがとうございます。 –

-1

このコードでは、変数「ReadedDataこと、完全なテキストファイル の行を開いて読みます「メモリ内のテキスト行を保持

Open "C:\satheesh\myfile\Hello.txt" For Input As #1 

do until EOF(1) 

     Input #1, ReadedData 
loop** 
+0

これは質問に対処しません。 – Smandoli

3

は私が遅すぎる...

が今日同じ問題に出くわしたんだと思います。私は同じ問題を抱えていたし、このサイトacrosse来ている

Dim objFSO 
Const ForReading = 1 
Const ForWriting = 2 
Dim objTS 'define a TextStream object 
Dim strContents As String 
Dim fileSpec As String 

fileSpec = "C:\Temp\test.txt" 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTS = objFSO.OpenTextFile(fileSpec, ForReading) 
strContents = objTS.ReadAll 
strContents = Replace(strContents, "XXXXX", "YYYY") 
objTS.Close 

Set objTS = objFSO.OpenTextFile(fileSpec, ForWriting) 
objTS.Write strContents 
objTS.Close 
0

:ここFileSystemObjectを使用して、私のソリューションです。

ソリューションは、ちょうどコマンドは非常にシンプルで便利だった...として出力用

... に別の「ファイル名」を設定します。加えて

(Application.GetSaveAsFilename()ダイアログを超えた)

**新しいファイル名を設定することは非常に簡単です** ちょうどあなたがそう

コマンドを置き換え、 を使用してファイル名/内線番号を変更する

例: (最初のポストからのような)

sFileName = "C:\filelocation" 
iFileNum = FreeFile 

Open sFileName For Input As iFileNum 
content = (...edit the content) 

Close iFileNum 

今だけの設定:

newFilename =「、(sFilename、 ".TXT" を交換してください。CSV ")は、拡張子を変更するには

または

newFilename =、(sFilenameを置き換える"。 "、 "_edit。")をdifferrentファイル名だけ

前とその後

とするために

iFileNum = FreeFile 
Open newFileName For Output As iFileNum 

Print #iFileNum, content 
Close iFileNum 

私はTXTファイルの名前を変更する方法を見つけるために時間にわたってサーフィン、

にはさまざまなソリューションがありますが、それは簡単にできます:)

関連する問題