2012-05-03 17 views
5
İşte

yapmam umuyorum ne için yalancı kod geçerli: Bu benim ne varMetin dosyası: Aç// SaveAs/Kapat Değiştir bul Dosya

Open text File 

Find "XXXXX" and Replace with "YYYY" 

Save text File As 

Close text file 

bugüne kadar

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 

Ama Orijinal metin dosyasının üzerine yazmak yerine, yeni bir dosyaya "farklı kaydet" yapmak istiyorum.

cevap

5

Sadece (sağ

Open sFileName For Output As iFileNum 

fikri açıp Daha önce okuduğunuz olandan farklı dosyaya yazmak için bu satırdan önce C:\filelocation bu satırı

sFileName = "C:\someotherfilelocation" 

eklemek). Eğer fantezi olsun ve iletişim kutusunun gerçek "Farklı Kaydet" Bir göstermek istiyorsanız

, bunun yerine bunu:

sFileName = Application.GetSaveAsFilename() 
8

Neden Not Defteri içerir?

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

Bu kod içinde Farklı Kaydet'i yapabilir miyim? –

+0

Bu kod, sorudaki herhangi bir koddan nasıl farklıdır ?! –

+2

Şimdi OP, orijinal sorgunun * düzenlenmiş * sürümüne kopyaladı/yapıştırdı ... hiç de değil. ;-) Farklı Kaydet (farklı dosya adı) düzeltmesini eklediğiniz için teşekkür ederiz. –

-1

Bu kod açmak ve değişken "ReadedData O tam metin dosyası satırları okuyacak "bellekte metin satırını Düzenledi Ben de geç kaldım

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

do until EOF(1) 

     Input #1, ReadedData 
loop** 
+0

Bu, soruyu ele almıyor. – Smandoli

3

Guess ...

aynı sorunu bugün genelinde geldi; Ben aynı sorun vardı ve bu site acrosse var geldi

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

: Burada FileSystemObject kullanarak çözümdür.

çözüm sadece komut çok basit ve kullanışlı oldu ... olarak çıkış için

... başka "dosya adı" ayarlayın.

o komutu yerine ** sadece

kullanarak ** yeni bir dosya adı ayarlamak çok basittir (Application.GetSaveAsFilename() Dialog ötesinde) ek

yılında

, böylece may dosya adını/uzantısını

değiştirin. (Ilk yayından gibi)

artık sadece set
sFileName = "C:\filelocation" 
iFileNum = FreeFile 

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

Close iFileNum 

:

yenidosyaadı = (sFileName, "txt"," değiştirin.indir ") uzantısını değiştirmek

veya

yenidosyaadı =, (sFileName yerine". ", "_edit.") bir differrent dosya sadece

daha önce olduğu gibi daha sonra

ve için

iFileNum = FreeFile 
Open newFileName For Output As iFileNum 

Print #iFileNum, content 
Close iFileNum 

bir txt dosyası yeniden adlandırmak öğrenmek için bir saatten fazla sörf,

Birçok farklı çözüm ile, ama sooo kolay olabilir :)