楼主请使用控件数组吧:
在窗体上点住一个TEXT控件,按“CTRL+C”再按“CTRL+V”就可以创建控件数组了。
假设建立了N个TEXT1控件的数组
Sub SaveText()
Dim I as long '临时循环变量
Dim FileNum as Long '文件号
Dim FileName as String '文件名
For I=0 to Text1.Count-1 '使用Text1.Count得到控件数组的个数
FileNum = FreeFile
FileName=App.Path & "\Text" & I & ".txt" '假设保存在工程所在的路径下
Open FileName For Access Write As #FileNum
Put #FileNum, , Text1(i).text
Close FileNum
Next
End Sub
呵呵,楼上指教的是。
Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function SendMessageByNum Lib "USER32" _
Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageByString Lib "USER32" Alias _
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam _
As Long, ByVal lParam As String) As Long
Function GetLineText(ByVal txtbox As TextBox, ByVal LineIndex As Long) As String '通过发送消息返回指定行的内容
Dim lc As Long, linechar As Long
linechar = SendMessageByNum(txtbox.hWnd, EM_LINEINDEX, LineIndex, 0)
lc = SendMessageByNum(txtbox.hWnd, EM_LINELENGTH, linechar, 0) + 1
GetLineText = String(lc + 2, 0)
Mid(GetLineText, 1, 1) = Chr(lc And &HFF)
Mid(GetLineText, 2, 1) = Chr(lc \ &H100)
lc = SendMessageByString(txtbox.hWnd, EM_GETLINE, LineIndex, GetLineText)
GetLineText = Left(GetLineText, lc)
End Function
Private Sub Command1_Click()
Dim linecount As Long, i As Long
linecount = SendMessage(text1.hWnd, EM_GETLINECOUNT, 0, 0) '返回行数
For i = 1 To linecount ' 循环
Open App.Path & "\text" & i & ".txt" For Binary As #1
Put #1, , GetLineText(text1, i - 1) '获得第i行的内容写入文件texti.txt
Close #1
Next
MsgBox "ok!"
End Sub
Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function SendMessageByNum Lib "USER32" _
Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageByString Lib "USER32" Alias _
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam _
As Long, ByVal lParam As String) As Long
Function GetLineText(ByVal txtbox As TextBox, ByVal LineIndex As Long) As String '返回指定行的内容
Dim lc As Long, linechar As Long
linechar = SendMessageByNum(txtbox.hWnd, EM_LINEINDEX, LineIndex, 0)
lc = SendMessageByNum(txtbox.hWnd, EM_LINELENGTH, linechar, 0) + 1
GetLineText = String(lc + 2, 0)
Mid(GetLineText, 1, 1) = Chr(lc And &HFF)
Mid(GetLineText, 2, 1) = Chr(lc \ &H100)
lc = SendMessageByString(txtbox.hWnd, EM_GETLINE, LineIndex, GetLineText)
GetLineText = Left(GetLineText, lc)
End Function
Private Sub Command1_Click()
Dim linecount As Long, i As Long
linecount = SendMessage(txtbox.hWnd, EM_GETLINECOUNT, 0, 0) '返回行数
For i = 1 To linecount
Open App.Path & "\text" & i & ".txt" For Binary As #1
Put #1, , GetLineText(txtbox, i - 1)
Close #1
Next
MsgBox "ok!"
End Sub