Các bác giúp em dịch giúp đoạn mã lấy dữ liệu từ text vào excel

Liên hệ QC

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
 

File đính kèm

  • utf-8__Tinh thep khung-macro modified 10-10.zip
    176.9 KB · Đọc: 25
  • ANH THU in.txt
    5.6 KB · Đọc: 8
  • ANH THU out.txt
    20.9 KB · Đọc: 7
Em thắc mắc là:
Const nSodongStory = 4
Const nSoDemStory = 3
ở code có nghĩa là gì? Khó hiểu ở chỗ này?
Cám ơn bác nào đã đọc bài! Thank!
 
Upvote 0
Nhờ admin chuyển bài này sang mục "Trung tâm giải thích code".
Em cám ơn nhiều!
 
Upvote 0
Web KT
Back
Top Bottom