Open (filename) For Input As #1
Do While Not EOF(1)
Line Input #1, Intext
logFile = logFile + Intext + vbCrLf
Loop
Close #1logFile = logFile & Text1.TextOpen (filename) For Output As #1
Print #1, logFile
Close #1filename 是从文本框中得到的文件名(需要包含路径吗?),运行时为什么总是提示“File already open”?
Do While Not EOF(1)
Line Input #1, Intext
logFile = logFile + Intext + vbCrLf
Loop
Close #1logFile = logFile & Text1.TextOpen (filename) For Output As #1
Print #1, logFile
Close #1filename 是从文本框中得到的文件名(需要包含路径吗?),运行时为什么总是提示“File already open”?
Private Sub Form_Load()
Text3.Text = App.Path & "\RollBookCalc.txt"
End Sub'********************************************************2、通过一个选择文件的文本框得到文件名和路径:
Private Sub cmdOpen_Click()
CommonDialog1.Filter = "文本文件(*.txt)|*.txt"
CommonDialog1.ShowSave
If CommonDialog1.filename <> "" Then
Text3.Text = CommonDialog1.filename
End If
End Sub'********************************************************3、获得文件名,并打开文件:
Private Sub SaveResaultToFile()
Dim Intext As String
Dim logFile As String
Dim temp_Filename As String
Dim filename As String
Dim i As Integer temp_Filename = StrReverse(Trim(Text3.Text))
For i = 1 To Len(temp_Filename)
If Mid(temp_Filename, i, 1) = "\" Then
filename = StrReverse(Mid(temp_Filename, 1, i - 1))
Exit For
End If
Next
temp_Filename = Trim(Text3.Text)
If filename = "" Or IsNull(filename) Then
MsgBox "请选择要保存的文件名之后再保存!", vbInformation, "提示:"
Exit Sub
End If '先读取文件内容
Open (filename) For Input As #1
Do While Not EOF(1)
Line Input #1, Intext
logFile = logFile + Intext + vbCrLf
Loop
Close #1
logFile = logFile & Text1.Text
Open (filename) For Output As #1
Print #1, logFile
Close #1
End Sub'********************************************************4、调用
Private Sub cmdSaveText_Click()
Call SaveResaultToFile
End Sub然后就报错:
File already open !
Run-Time Err "55"
File already open
Text3.Text = App.Path & "\RollBookCalc.txt"
End Sub'********************************************************2、通过一个选择文件的文本框得到文件名和路径:
Private Sub cmdOpen_Click()
CommonDialog1.Filter = "文本文件(*.txt)|*.txt"
CommonDialog1.ShowSave
If CommonDialog1.filename <> "" Then
Text3.Text = CommonDialog1.filename
End If
End Sub'********************************************************3、获得文件名,并打开文件:
Private Sub SaveResaultToFile()
Dim Intext As String
Dim logFile As String
Dim temp_Filename As String
Dim filename As String
Dim i As Integer Filename = Trim(Text3.Text)
If filename = "" Or IsNull(filename) Then
MsgBox "请选择要保存的文件名之后再保存!", vbInformation, "提示:"
Exit Sub
End If '先读取文件内容
Open (filename) For Input As #1
Do While Not EOF(1)
Line Input #1, Intext
logFile = logFile + Intext + vbCrLf
Loop
Close #1
logFile = logFile & Text1.Text
Open (filename) For Output As #1
Print #1, logFile
Close #1
End Sub
去掉
temp_Filename = StrReverse(Trim(Text3.Text))
For i = 1 To Len(temp_Filename)
If Mid(temp_Filename, i, 1) = "\" Then
filename = StrReverse(Mid(temp_Filename, 1, i - 1))
Exit For
End If
Next
多余的,
文件应该是没有创建的时候先创建呀
你怎么是先读再写呢?是不是这个原因
你把
Open (filename) For Input As #1
Do While Not EOF(1)
Line Input #1, Intext
logFile = logFile + Intext + vbCrLf
Loop
Close #1
logFile = logFile & Text1.Text
Open (filename) For Output As #1
Print #1, logFile
Close #1
读写颠倒一下,先output再input试试
是不是你所要解决的答案?
文件已打开(错误 55)
有时候文件必须在其他 Open 或其他操作发生前先关闭。此错误有以下的原因和解决方法: 对一个已经打开的文件,执行顺序输出模式的 Open 语句。
必须将要打开成其他方式的顺序访问方式文件先关闭。例如,必须先将打开成 Input 的文件先关闭再打开成 Output。如 Kill、SetAttr 或 Name 等语句,引用到一个打开的文件。
在执行此语句前先关闭此文件。
你自己调试看看是不是哪有问题:Option ExplicitPrivate Type file_structure
datano As Byte
datatext As String * 30
'datatext(29) As String * 1
intdata As Integer
dbldata As Double
End TypeDim filedata(4) As file_structurePrivate Sub cmdopen_Click()
On Error Resume Next
CommonDialog1.ShowOpen
If Err.Number = 32755 Then
Exit Sub
End IfIf IsNull(CommonDialog1.FileName) = True Then
Exit Sub
End IfIf InStr(CommonDialog1.FileName, "FileIO") <> 0 ThenCall sdatadisplaycmdopen.Enabled = False
cmdsave.Enabled = True
End IfEnd Sub
Private Sub sdatadisplay()Dim i As Integer
Open CommonDialog1.FileName For Binary As #1
For i = 0 To 4
Get #1, , filedata(i)
MSHFlexGrid1.TextMatrix(i + 1, 0) = filedata(i).datano
MSHFlexGrid1.TextMatrix(i + 1, 1) = filedata(i).datatext
' Dim m As Integer 
' Dim n As String
' For m = 0 To 29
' n = n + filedata(i).datatext(m)
' Next
' MSHFlexGrid1.TextMatrix(i + 1, 1) = n
MSHFlexGrid1.TextMatrix(i + 1, 2) = filedata(i).intdata
MSHFlexGrid1.TextMatrix(i + 1, 3) = filedata(i).dbldata
Next
Close #1End Sub
Private Sub cmdsave_Click()
On Error Resume NextCommonDialog1.ShowSaveIf Err.Number = 32755 Then
Exit Sub
End IfCall sdatasave
End SubPrivate Sub sdatasave()
Dim i As Integer
Open CommonDialog1.FileName For Binary As #1
For i = 0 To 4
Put #1, Len(filedata(0)) * i + 1, filedata(i)
NextClose #1
End SubPrivate Sub cmdset_Click()
If CInt(Text1(0).Text) < 0 Or CInt(Text1(0).Text) > 255 Then
Exit Sub
Else
MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0) = CInt(Text1(0).Text)
filedata(MSHFlexGrid1.Row - 1).datano = CInt(Text1(0).Text)
End IfMSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1) = (Text1(1).Text)
filedata(MSHFlexGrid1.Row - 1).datatext = (Text1(1).Text)MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 2) = (Text1(2).Text)
filedata(MSHFlexGrid1.Row - 1).intdata = CInt(Text1(2).Text)MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 3) = (Text1(3).Text)
filedata(MSHFlexGrid1.Row - 1).dbldata = CDbl(Text1(3).Text)cmdset.Enabled = False
End SubPrivate Sub Form_Load()
Dim i As Integer
For i = 0 To 3
If i <> 1 Then
End If
Next
MSHFlexGrid1.ColWidth(0, 0) = 500
MSHFlexGrid1.ColWidth(1) = 6000
MSHFlexGrid1.TextMatrix(0, 0) = "NO."
MSHFlexGrid1.TextMatrix(0, 1) = "Data Text"
MSHFlexGrid1.TextMatrix(0, 2) = "INTEGER"
MSHFlexGrid1.TextMatrix(0, 3) = "DOUBLE"CommonDialog1.CancelError = True
CommonDialog1.FileName = "FileIO"
CommonDialog1.Filter = "TEXT FILE(*.TXT)|*.TXT"
CommonDialog1.InitDir = App.Path
End SubPrivate Sub MSHFlexGrid1_Click()
If cmdsave.Enabled = False Then
Exit Sub
End IfDim i As Integer
'i = MSHFlexGrid1.Row - 1
i = MSHFlexGrid1.RowText1(0).Text = MSHFlexGrid1.TextMatrix(i, 0)
Text1(1).Text = MSHFlexGrid1.TextMatrix(i, 1)
Text1(2).Text = MSHFlexGrid1.TextMatrix(i, 2)
Text1(3).Text = MSHFlexGrid1.TextMatrix(i, 3)'Text1(0).Text = CInt(filedata(i).datano)
'Text1(1).Text = Trim(filedata(i).datatext)
'Text1(2).Text = CInt(filedata(i).intdata)
'Text1(3).Text = CDbl(filedata(i).dbldata)cmdset.Enabled = TrueEnd Sub
用#intFile
**********************************
*本人主要使用VB+MS SQL,C#略知一二
*
*如有相关问题需要帮助
*
*可发短消息告知链接
*
*助人为快乐之本!
**********************************
Set fil = fso.CreateTextFile(strFileName, True)
把问题解决了:)