ngoctan_q
Thành viên chính thức
- Tham gia
- 15/8/07
- Bài viết
- 52
- Được thích
- 17
Em muốn tìm hiểu cách đọc dữ liệu từ file text để lấy dữ liệu vào excel, em đọc hoài mà ko hiểu, nên em mới post bài này! Xin ý kiến góp ý của các bác!
code:
Option Explicit
Option Base 1
Option Private Module
'Laáy döõ lieäu chieàu cao taàng
Dim nStory As Long
Dim arrStory() As DataG
Const strDkStory1 = "S T O R Y D A T A"
Const strDkStory2 = "BASE"
Const nSodongStory = 4
Const nSoDemStory = 3
Const nCharStory = 4
Const str1_STORY = "STORY SIMILAR_TO HEIGHT ELEVATION"
Const str2_STORY = " '(0) '(1) '(2) '(3) "
'Laáy döõ lieäu toïa ñoä nuùt
Dim nNut As Long
Dim arrNut() As DataG
Const strNut1 = "P O I N T C O O R D I N A T E S"
Const strNut2 = "ETABS v"
Const nSoDongNut = 4
Const nSoDemNut = 3
Const nCharNut = 7
Const str1_Nut = "POINT X Y DZ_BELOW"
Const str2_Nut = " '(0) '(1) '(2) '(3) "
'Laáy döõ lieäu tieát dieän
Dim nSoTietDien As Long
Dim arrDuLieuTD() As DataG
'SECTION FLANGE FLANGE WEB FLANGE FLANGE
'F R A M E S E C T I O N P R O P E R T Y D A T A
'ETABS v
Const strTietDien1 = "SECTION FLANGE FLANGE WEB FLANGE FLANGE"
Const strTietDien2 = "F R A M E"
Const nSoDongTD = 3
Const nSoDemTD = 6
Const nCharTD = 9
Const str1_TD = "FRAME_SECTION_NAME SECTION_DEPTH FLANGE_WIDTH_TOP" & _
" FLANGE_THICK_TOP WEB_THICK FLANGE_WIDTH_BOT FLANGE_THICK_BOT "
Const str2_TD = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) "
'Laáy döõ lieäu Ñaêng kí tieát dieän
Dim nSoDkTd As Long
Dim arrDkTd() As DataG
Const strDkTd1 = "F R A M E S E C T I O N A S S I G N M E N T S T O L I N E O B J E C T S"
Const strDkTd2 = "ETABS v"
Const nSoDongDkTd = 5
Const nSoDemDkTd = 8
Const nCharDkTd = 7
Const str1_DkTd = "STORY_LEVEL LINE_ID LINE_TYPE SECTION_TYPE" & _
" AUTO_SELECT_SECTION ANALYSIS_SECTION DESIGN_PROCEDURE"
Const str2_DkTd = "'(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7)"
'Laáy döõ lieäu Noái daàm
Dim nSoNoiDam As Long
Dim arrNoiDam() As DataG
Const strNd1 = "B E A M C O N N E C T I V I T Y D A T A"
Const strNd2 = "ETABS v"
Const nSoDongNd = 4
Const nSoDemNd = 2
Const ncharNd = 7
Const str1_Nd = "BEAM I_END_PT J_END_PT"
Const str2_Nd = "'(0) '(1) '(2)"
'Laáy döõ lieäu noái coät
Dim nSoNoiCot As Long
Dim arrNoiCot() As DataG
Const strNc1 = "C O L U M N C O N N E C T I V I T Y D A T A"
Const strNc2 = "ETABS v"
Const nSoDongNc = 4
Const nSoDemNc = 3
Const ncharNc = 7
Const str1_Nc = "COLUMN I_END_PT J_END_PT I_END_STORY"
Const str2_Nc = "'(0) '(1) '(2) '(3)"
'Khai baùo caùc haèng xöû lyù noäi löïc coät vaø daàm
Const strNLCot1 = "C O L U M N F O R C E S"
Const strNLCot2 = "ETABS v"
Const nSoChuoiCot = 3
Const nSoDemNlCot = 10
'Const str1_NlCot = "COLUMN LOAD LOC P V2 V3 T M2 M3"
'Const str2_NlCot = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8)"
Const str1_NlCot = "Column Loc Load Story P V2 V3 T M2 M3"
Const str2_NlCot = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8) '(9)"
Const strNLDam1 = "B E A M F O R C E S"
Const strNLDam2 = "ETABS v"
Const nSoChuoiDam = 4
Const nSoDemNlDam = 11
'Const str1_NlDam = "Beam Load Loc P V2 V3 T M2 M3"
'Const str2_NlDam = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8)"
Const str1_NlDam = "Beam Loc Load Story StepType P V2 V3 T M2 M3"
Const str2_NlDam = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8) '(9) '(10)"
'Caùc doøng tieâu ñeà cho caùc baûng Cot, Dam
Const nSoDemDam = 9
Const str1_COT = "Ph?n_t? Nút_I Nút_J Ti?t_di?n Chi?u_dài bx by Story a aa"
Const str2_COT = "'(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8) '(9) "
Const nSoDemCot = 9
Const str1_DAM = "Phaàn_töû Nuùt_I Nuùt_J Tieát_dieän Chieàu_daøi h b check a aa"
Const str2_DAM = "'(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8) '(9)"
'Xöû lyù döõ lieäu file Input
Private Sub XuLyInput(strTenInp As String, strDieuKien1 As String, strDieuKien2 As String, _
nSoDong As Long, nSoDem As Long, nChar As Long, _
nSoPhanTu As Long, arrDuLieu() As DataG)
Dim InputData
Dim i As Integer
Dim j As Integer
Dim nDem As Long
Dim bThoat As Boolean
bThoat = False
i = 0
'Ñeám soá phaàn töû
Open strTenInp For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
If Trim(InputData) = strDieuKien1 Then
Do
Line Input #1, InputData
nDem = nDem + 1
Loop Until nDem = nSoDong
Do While Left(Trim(InputData), nChar) <> strDieuKien2 And Not EOF(1)
If Trim(InputData) <> "" Then
i = i + 1
Line Input #1, InputData
If EOF(1) Then i = i + 1
Else
bThoat = True
Exit Do
End If
Loop
End If
If bThoat = True Then Exit Do
Loop
nSoPhanTu = i
Close #1
If nSoPhanTu > 0 Then ReDim arrDuLieu(nSoPhanTu)
bThoat = False
i = 1
nDem = 0
Open strTenInp For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
If Trim(InputData) = strDieuKien1 Then
Do
Line Input #1, InputData
nDem = nDem + 1
Loop Until nDem = nSoDong
Do While Left(Trim(InputData), nChar) <> strDieuKien2 And Not EOF(1)
If Trim(InputData) <> "" Then
'Nhaäp döõ lieäu töø file input vaøo maûng arrDuLieu
Dim vitri As Long
Dim DaiChuoi As Long
Dim S1 As String
Dim S2 As String
nDem = 0
S1 = Trim(InputData)
vitri = InStr(1, S1, " ")
DaiChuoi = Len(S1)
S2 = Left(S1, vitri)
If vitri = 0 Then
arrDuLieu(i).arrData(0) = S1
Else
arrDuLieu(i).arrData(0) = Trim(S2)
End If
S1 = Trim(Right(S1, DaiChuoi - vitri))
Do While vitri > 1
DaiChuoi = Len(S1)
vitri = InStr(1, S1, " ")
S2 = Left(S1, vitri)
S1 = Trim(Right(S1, DaiChuoi - vitri))
nDem = nDem + 1
arrDuLieu(i).arrData(nDem) = Trim(S2)
If nDem = nSoDem Then
arrDuLieu(i).arrData(nSoDem) = Trim(S1)
Exit Do
End If
Loop
i = i + 1
Else
bThoat = True
Exit Do
End If
Line Input #1, InputData
'Neáu thuoäc doøng cuoái cuøng
If EOF(1) Then
nDem = 0
S1 = Trim(InputData)
vitri = InStr(1, S1, " ")
While vitri > 1
DaiChuoi = Len(S1)
S2 = Left(S1, vitri)
S1 = Trim(Right(S1, DaiChuoi - vitri))
arrDuLieu(i).arrData(nDem) = Trim(S2)
nDem = nDem + 1
If nDem = nSoDem Then arrDuLieu(i).arrData(nSoDem) = Trim(S1)
vitri = InStr(1, S1, " ")
Wend
End If
Loop
End If
If bThoat = True Then Exit Do
Loop
Close #1
End Sub
code:
Option Explicit
Option Base 1
Option Private Module
'Laáy döõ lieäu chieàu cao taàng
Dim nStory As Long
Dim arrStory() As DataG
Const strDkStory1 = "S T O R Y D A T A"
Const strDkStory2 = "BASE"
Const nSodongStory = 4
Const nSoDemStory = 3
Const nCharStory = 4
Const str1_STORY = "STORY SIMILAR_TO HEIGHT ELEVATION"
Const str2_STORY = " '(0) '(1) '(2) '(3) "
'Laáy döõ lieäu toïa ñoä nuùt
Dim nNut As Long
Dim arrNut() As DataG
Const strNut1 = "P O I N T C O O R D I N A T E S"
Const strNut2 = "ETABS v"
Const nSoDongNut = 4
Const nSoDemNut = 3
Const nCharNut = 7
Const str1_Nut = "POINT X Y DZ_BELOW"
Const str2_Nut = " '(0) '(1) '(2) '(3) "
'Laáy döõ lieäu tieát dieän
Dim nSoTietDien As Long
Dim arrDuLieuTD() As DataG
'SECTION FLANGE FLANGE WEB FLANGE FLANGE
'F R A M E S E C T I O N P R O P E R T Y D A T A
'ETABS v
Const strTietDien1 = "SECTION FLANGE FLANGE WEB FLANGE FLANGE"
Const strTietDien2 = "F R A M E"
Const nSoDongTD = 3
Const nSoDemTD = 6
Const nCharTD = 9
Const str1_TD = "FRAME_SECTION_NAME SECTION_DEPTH FLANGE_WIDTH_TOP" & _
" FLANGE_THICK_TOP WEB_THICK FLANGE_WIDTH_BOT FLANGE_THICK_BOT "
Const str2_TD = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) "
'Laáy döõ lieäu Ñaêng kí tieát dieän
Dim nSoDkTd As Long
Dim arrDkTd() As DataG
Const strDkTd1 = "F R A M E S E C T I O N A S S I G N M E N T S T O L I N E O B J E C T S"
Const strDkTd2 = "ETABS v"
Const nSoDongDkTd = 5
Const nSoDemDkTd = 8
Const nCharDkTd = 7
Const str1_DkTd = "STORY_LEVEL LINE_ID LINE_TYPE SECTION_TYPE" & _
" AUTO_SELECT_SECTION ANALYSIS_SECTION DESIGN_PROCEDURE"
Const str2_DkTd = "'(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7)"
'Laáy döõ lieäu Noái daàm
Dim nSoNoiDam As Long
Dim arrNoiDam() As DataG
Const strNd1 = "B E A M C O N N E C T I V I T Y D A T A"
Const strNd2 = "ETABS v"
Const nSoDongNd = 4
Const nSoDemNd = 2
Const ncharNd = 7
Const str1_Nd = "BEAM I_END_PT J_END_PT"
Const str2_Nd = "'(0) '(1) '(2)"
'Laáy döõ lieäu noái coät
Dim nSoNoiCot As Long
Dim arrNoiCot() As DataG
Const strNc1 = "C O L U M N C O N N E C T I V I T Y D A T A"
Const strNc2 = "ETABS v"
Const nSoDongNc = 4
Const nSoDemNc = 3
Const ncharNc = 7
Const str1_Nc = "COLUMN I_END_PT J_END_PT I_END_STORY"
Const str2_Nc = "'(0) '(1) '(2) '(3)"
'Khai baùo caùc haèng xöû lyù noäi löïc coät vaø daàm
Const strNLCot1 = "C O L U M N F O R C E S"
Const strNLCot2 = "ETABS v"
Const nSoChuoiCot = 3
Const nSoDemNlCot = 10
'Const str1_NlCot = "COLUMN LOAD LOC P V2 V3 T M2 M3"
'Const str2_NlCot = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8)"
Const str1_NlCot = "Column Loc Load Story P V2 V3 T M2 M3"
Const str2_NlCot = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8) '(9)"
Const strNLDam1 = "B E A M F O R C E S"
Const strNLDam2 = "ETABS v"
Const nSoChuoiDam = 4
Const nSoDemNlDam = 11
'Const str1_NlDam = "Beam Load Loc P V2 V3 T M2 M3"
'Const str2_NlDam = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8)"
Const str1_NlDam = "Beam Loc Load Story StepType P V2 V3 T M2 M3"
Const str2_NlDam = " '(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8) '(9) '(10)"
'Caùc doøng tieâu ñeà cho caùc baûng Cot, Dam
Const nSoDemDam = 9
Const str1_COT = "Ph?n_t? Nút_I Nút_J Ti?t_di?n Chi?u_dài bx by Story a aa"
Const str2_COT = "'(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8) '(9) "
Const nSoDemCot = 9
Const str1_DAM = "Phaàn_töû Nuùt_I Nuùt_J Tieát_dieän Chieàu_daøi h b check a aa"
Const str2_DAM = "'(0) '(1) '(2) '(3) '(4) '(5) '(6) '(7) '(8) '(9)"
'Xöû lyù döõ lieäu file Input
Private Sub XuLyInput(strTenInp As String, strDieuKien1 As String, strDieuKien2 As String, _
nSoDong As Long, nSoDem As Long, nChar As Long, _
nSoPhanTu As Long, arrDuLieu() As DataG)
Dim InputData
Dim i As Integer
Dim j As Integer
Dim nDem As Long
Dim bThoat As Boolean
bThoat = False
i = 0
'Ñeám soá phaàn töû
Open strTenInp For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
If Trim(InputData) = strDieuKien1 Then
Do
Line Input #1, InputData
nDem = nDem + 1
Loop Until nDem = nSoDong
Do While Left(Trim(InputData), nChar) <> strDieuKien2 And Not EOF(1)
If Trim(InputData) <> "" Then
i = i + 1
Line Input #1, InputData
If EOF(1) Then i = i + 1
Else
bThoat = True
Exit Do
End If
Loop
End If
If bThoat = True Then Exit Do
Loop
nSoPhanTu = i
Close #1
If nSoPhanTu > 0 Then ReDim arrDuLieu(nSoPhanTu)
bThoat = False
i = 1
nDem = 0
Open strTenInp For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
If Trim(InputData) = strDieuKien1 Then
Do
Line Input #1, InputData
nDem = nDem + 1
Loop Until nDem = nSoDong
Do While Left(Trim(InputData), nChar) <> strDieuKien2 And Not EOF(1)
If Trim(InputData) <> "" Then
'Nhaäp döõ lieäu töø file input vaøo maûng arrDuLieu
Dim vitri As Long
Dim DaiChuoi As Long
Dim S1 As String
Dim S2 As String
nDem = 0
S1 = Trim(InputData)
vitri = InStr(1, S1, " ")
DaiChuoi = Len(S1)
S2 = Left(S1, vitri)
If vitri = 0 Then
arrDuLieu(i).arrData(0) = S1
Else
arrDuLieu(i).arrData(0) = Trim(S2)
End If
S1 = Trim(Right(S1, DaiChuoi - vitri))
Do While vitri > 1
DaiChuoi = Len(S1)
vitri = InStr(1, S1, " ")
S2 = Left(S1, vitri)
S1 = Trim(Right(S1, DaiChuoi - vitri))
nDem = nDem + 1
arrDuLieu(i).arrData(nDem) = Trim(S2)
If nDem = nSoDem Then
arrDuLieu(i).arrData(nSoDem) = Trim(S1)
Exit Do
End If
Loop
i = i + 1
Else
bThoat = True
Exit Do
End If
Line Input #1, InputData
'Neáu thuoäc doøng cuoái cuøng
If EOF(1) Then
nDem = 0
S1 = Trim(InputData)
vitri = InStr(1, S1, " ")
While vitri > 1
DaiChuoi = Len(S1)
S2 = Left(S1, vitri)
S1 = Trim(Right(S1, DaiChuoi - vitri))
arrDuLieu(i).arrData(nDem) = Trim(S2)
nDem = nDem + 1
If nDem = nSoDem Then arrDuLieu(i).arrData(nSoDem) = Trim(S1)
vitri = InStr(1, S1, " ")
Wend
End If
Loop
End If
If bThoat = True Then Exit Do
Loop
Close #1
End Sub