Sub SaveFile(FileName As String) '保存文件 Dim FileID As Long, ConTents As String Dim a As Long, B As Long Dim RowMax As Long, ColMax As Long Dim T1 As Date, T2 As Date Dim TmpProVal As Long, DltWidth As Single Dim NewVal As Long, OleVal As Long
With MSHFlexGrid1(0) .Redraw = False: FileID = FreeFile RowMax = .Rows - 1: ColMax = .Cols - 1 Screen.MousePointer = 11: T1 = Timer() Open FileName For Output As #FileID ConTents = RowMax + 1 Print #FileID, ConTents For a = 1 To RowMax .Row = a: .Col = 1 .RowSel = a: .ColSel = ColMax ConTents = .Clip Print #FileID, ConTents NewVal = (a * TmpProVal) \ RowMax If CBool(NewVal - OleVal) Then ME.CAPTION=FORMAT$((NewVal*100)/RowMax,"00") & "%" End If Next a Close #FileID .Redraw = True Screen.MousePointer = 0 End With End Sub
Sub OpenFile(FileName As String) Dim InputID As Long, FileID As Long Dim GridInput As String, GridRowMax As Long Dim TmpProVal As Long, DltWidth As Single Dim CollMax As Long, AddSum As String Dim EndRow As Long, AddFlag As Boolean Dim DltAdd As Long, OleTmp As Long Dim KeyTab As String, KeyEnter As String Dim ValMax As Long, ColMax As Long
On Error Resume Next With MSHFlexGrid1(0) .Visible = False: .Redraw = False Screen.MousePointer = 11 Err.Clear: SetAttr FileName, 0 If Err.Number <> 0 Then '如果文件不存在 Exit Sub End If Screen.MousePointer = 11 .Visible = False: .Redraw = False InputID = 0: FileID = FreeFile: AddFlag = False: DltAdd = 25 .FixedRows = 0: .FixedCols = 0: KeyTab = Chr(vbKeyTab): KeyEnter = Chr(13) .Rows = 1: .Cols = 21: ValMax = 50: ColMax = 20 Open FileName For Input As #FileID Do While Not EOF(FileID) ' 循环至文件尾。 Line Input #FileID, GridInput If InputID = 0 Then GridRowMax = CLng("0" & GridInput) If GridRowMax < 2 Then GridRowMax = 2 .Rows = GridRowMax: DltWidth = CollMax / ValMax Else If AddFlag Then AddSum = AddSum & KeyEnter & InputID & KeyTab & GridInput Else AddSum = InputID & KeyTab & GridInput: AddFlag = True End If '------------------------------------------------------ If InputID Mod DltAdd = 0 Then .Row = InputID - DltAdd + 1: .Col = 0 .RowSel = InputID: .ColSel = ColMax .Clip = AddSum: AddSum = "" EndRow = InputID: AddFlag = False End If '----------------------------------------------------- TmpProVal = (InputID * 100) \ GridRowMax If TmpProVal - OleTmp > 0 Then ME.CAPTION=FORMAT$(TMPPROVAL * 100,"00") & "%" OleTmp = TmpProVal End If '----------------------------------------------------- End If InputID = InputID + 1 Loop '-------------------------------------------------------- If InputID - EndRow > 1 Then .Row = EndRow + 1: .Col = 0 .RowSel = GridRowMax - 1 .ColSel = ColMax .Clip = AddSum AddSum = "" End If Close #FileID .FixedRows = 1: .FixedCols = 2: ShowNum = False ShowRowID = 1: Call ShowGrid Unload Oscoll: DoEvents .Redraw = True: .Visible = True Screen.MousePointer = 0 End With End Sub
这个是 MSFlexGrid,你修改一下也可以用的Public Sub OutDataToText(Flex As MSFlexGrid) Dim s As String Dim i As Integer Dim j As Integer Dim k As Integer Dim strTemp As String On Error GoTo Ert Me.MousePointer = 11 On Error Resume Next DoEvents Dim FileNum As Integer FileNum = FreeFile Open "d:\aa.txt" For Output As #FileNum With Flex k = .Rows For i = 0 To k - 1 strTemp = "" For j = 0 To .Cols - 1 DoEvents strTemp = strTemp & .TextMatrix(i, j) & "," Next j Print #FileNum, Left(strTemp, Len(strTemp) - 1) Next i End With Close #FileNum Me.MousePointer = 0 MsgBox "导出成功" Ert: MsgBox Err.Description Me.MousePointer = 0 End Sub
'保存文件
Dim FileID As Long, ConTents As String
Dim a As Long, B As Long
Dim RowMax As Long, ColMax As Long
Dim T1 As Date, T2 As Date
Dim TmpProVal As Long, DltWidth As Single
Dim NewVal As Long, OleVal As Long
With MSHFlexGrid1(0)
.Redraw = False: FileID = FreeFile
RowMax = .Rows - 1: ColMax = .Cols - 1
Screen.MousePointer = 11: T1 = Timer()
Open FileName For Output As #FileID
ConTents = RowMax + 1
Print #FileID, ConTents
For a = 1 To RowMax
.Row = a: .Col = 1
.RowSel = a: .ColSel = ColMax
ConTents = .Clip
Print #FileID, ConTents
NewVal = (a * TmpProVal) \ RowMax
If CBool(NewVal - OleVal) Then
ME.CAPTION=FORMAT$((NewVal*100)/RowMax,"00") & "%"
End If
Next a
Close #FileID
.Redraw = True
Screen.MousePointer = 0
End With
End Sub
Dim InputID As Long, FileID As Long
Dim GridInput As String, GridRowMax As Long
Dim TmpProVal As Long, DltWidth As Single
Dim CollMax As Long, AddSum As String
Dim EndRow As Long, AddFlag As Boolean
Dim DltAdd As Long, OleTmp As Long
Dim KeyTab As String, KeyEnter As String
Dim ValMax As Long, ColMax As Long
On Error Resume Next With MSHFlexGrid1(0)
.Visible = False: .Redraw = False
Screen.MousePointer = 11
Err.Clear: SetAttr FileName, 0
If Err.Number <> 0 Then '如果文件不存在
Exit Sub
End If
Screen.MousePointer = 11
.Visible = False: .Redraw = False
InputID = 0: FileID = FreeFile: AddFlag = False: DltAdd = 25
.FixedRows = 0: .FixedCols = 0: KeyTab = Chr(vbKeyTab): KeyEnter = Chr(13)
.Rows = 1: .Cols = 21: ValMax = 50: ColMax = 20
Open FileName For Input As #FileID
Do While Not EOF(FileID) ' 循环至文件尾。
Line Input #FileID, GridInput
If InputID = 0 Then
GridRowMax = CLng("0" & GridInput)
If GridRowMax < 2 Then GridRowMax = 2
.Rows = GridRowMax: DltWidth = CollMax / ValMax
Else
If AddFlag Then
AddSum = AddSum & KeyEnter & InputID & KeyTab & GridInput
Else
AddSum = InputID & KeyTab & GridInput: AddFlag = True
End If
'------------------------------------------------------
If InputID Mod DltAdd = 0 Then
.Row = InputID - DltAdd + 1: .Col = 0
.RowSel = InputID: .ColSel = ColMax
.Clip = AddSum: AddSum = ""
EndRow = InputID: AddFlag = False
End If
'-----------------------------------------------------
TmpProVal = (InputID * 100) \ GridRowMax
If TmpProVal - OleTmp > 0 Then
ME.CAPTION=FORMAT$(TMPPROVAL * 100,"00") & "%"
OleTmp = TmpProVal
End If
'-----------------------------------------------------
End If
InputID = InputID + 1
Loop
'--------------------------------------------------------
If InputID - EndRow > 1 Then
.Row = EndRow + 1: .Col = 0
.RowSel = GridRowMax - 1
.ColSel = ColMax
.Clip = AddSum
AddSum = ""
End If
Close #FileID
.FixedRows = 1: .FixedCols = 2: ShowNum = False
ShowRowID = 1: Call ShowGrid
Unload Oscoll: DoEvents
.Redraw = True: .Visible = True
Screen.MousePointer = 0
End With
End Sub
Dim s As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim strTemp As String
On Error GoTo Ert
Me.MousePointer = 11
On Error Resume Next
DoEvents
Dim FileNum As Integer
FileNum = FreeFile
Open "d:\aa.txt" For Output As #FileNum
With Flex
k = .Rows
For i = 0 To k - 1
strTemp = ""
For j = 0 To .Cols - 1
DoEvents
strTemp = strTemp & .TextMatrix(i, j) & ","
Next j
Print #FileNum, Left(strTemp, Len(strTemp) - 1)
Next i
End With
Close #FileNum
Me.MousePointer = 0
MsgBox "导出成功"
Ert:
MsgBox Err.Description
Me.MousePointer = 0
End Sub