Chào các anh/ chị
Mình không rõ là để tiêu đề như vậy đã chính xác chưa.
Mình hiện đang vướng mắc cách chuyển từ xls sang txt, nhờ các anh chị giúp đỡ.
File txt là file export từ phần mềm chuyên dụng với đầy đủ chi tiết và tiêu đề, file xls chỉ bao gồm các tiêu đề (copy ra từ phần mềm chuyên dụng). Vì có quá nhiều tiêu đề không sử dụng đến, nên khi cần bỏ vào phần mềm chuyên dụng, làm sao chỉ bỏ các tiêu đề (cùng chi tiết) mình cần thôi? Mình nghĩ là phải có lẽ phải convert từ xls qua txt với đầy đủ chi tiết có trong tiêu đề nhưng không biết cách làm. Vì phần mềm chỉ chấp nhận import từ file như file txt
Mình thấy có bạn dùng macro để chạy, nhưng vì mình không hiểu về macro nên không dám dùng.
Trong macro đó, có các đoạn code sau, nhờ các anh/ chị giải thích giúp
Function Count_Text(ByVal chuoi_can_tim As String, ByVal chuoi_nguon As String) As Integer
Dim i, j As Integer
j = 0
For i = 1 To Len(chuoi_nguon)
If (StrComp(Right(Left(chuoi_nguon, i), 1), chuoi_can_tim) = 0) Then
j = j + 1
End If
Next
Count_Text = j
End Function
Function Weekday_Style(ByVal ngay As String) As String
Select Case ngay
Case "2": Weekday_Style = "Mon"
Case "3": Weekday_Style = "Tue"
Case "4": Weekday_Style = "Wed"
Case "5": Weekday_Style = "Thu"
Case "6": Weekday_Style = "Fri"
Case "7": Weekday_Style = "Sat"
Case "1": Weekday_Style = "Sun"
End Select
End Function
Function Weekday_Analysis(ByVal chuoi As String) As String
Dim weekday, chuoi_i, temp As String
Dim can1, can2 As Integer
temp = ""
For i = 1 To Len(chuoi)
chuoi_i = Right(Left(chuoi, i), 1)
If (StrComp(chuoi_i, "-") = 0) Then
can1 = CInt(Right(Left(chuoi, i - 1), 1))
can2 = CInt(Right(Left(chuoi, i + 1), 1))
For j = can1 + 1 To can2
temp = temp & Weekday_Style(j) & ","
Next
i = can2
Else
weekday = Weekday_Style(chuoi_i)
If (weekday <> "") Then
temp = temp & weekday & ","
End If
End If
Next
Weekday_Analysis = temp
End Function
Sub Create_Vehicles(ByVal Data_Address As Range, ByVal File_Name As String)
Dim FileNumber 'for a file
Dim vehicle, channel, sector, time1, time2, string_date, error_messsage As String
Dim hcm_group(1 To 4) As String
Dim so_ngay, num_vehicles, minute_resolution As Integer
Dim error As Boolean
FileNumber = FreeFile ' Get unused file
Open File_Name For Output As #FileNumber ' Create file name.
Print #FileNumber, "[GROUP]"
Print #FileNumber,
hcm_group(1) = "HTV7 (HCMC)"
hcm_group(2) = "HTV9 (HCMC)"
hcm_group(3) = "HTV2 (HCMC)"
hcm_group(4) = "HTV3 (HCMC)"
error_message = ""
error = True
For num_vehicles = 1 To Data_Address.Rows.count - 1
vehicle = Data_Address.Cells(num_vehicles, 1)
If (Len(vehicle) < 5) Then GoTo ke_tiep
channel = Application.VLookup(vehicle, Data_Address, 2, False)
sector = Application.VLookup(vehicle, Data_Address, 3, False)
time1 = istring3(istring3(vehicle, "_", 2), "-", 1)
time2 = istring3(istring3(vehicle, "_", 2), "-", 2)
string_date = Weekday_Analysis(istring3(vehicle, "_", 3))
so_ngay = Count_Text(",", string_date)
If (channel = hcm_group(1) Or channel = hcm_group(2) Or channel = hcm_group(3) Or channel = hcm_group(4)) Then
'infosys gioi han toi da 50 ki tu
'neu la HCM thi so phut la` 1p
minute_resolution = 1
error = False
Else
If ((Minute(time1) Mod 5) > 0 Or (Minute(time2) Mod 5) > 0) Then
error_message = error_message & vehicle & vbCrLf
error = True
Else
'cac thi truong khac la 15p
error = False
minute_resolution = 5
End If
End If
If (Not error) Then
Print #FileNumber, "[VEHICLE]"
Print #FileNumber, Left(vehicle, 50) & vbTab & minute_resolution
For i = 1 To so_ngay
Print #FileNumber, channel & vbTab & sector & vbTab & istring3(string_date, ",", i) & vbTab & time1 & vbTab & time2
Next
End If
ke_tiep:
Next
If (Len(error_message) > 0) Then
MsgBox error_message, vbCritical, "ERROR - NOT MOD 15minute"
End If
Close #FileNumber ' Close file.
End Sub
Sub CREATE_Multisupport()
frmVehicles.Show
End Sub
Cám ơn rất nhiều
Mình không rõ là để tiêu đề như vậy đã chính xác chưa.
Mình hiện đang vướng mắc cách chuyển từ xls sang txt, nhờ các anh chị giúp đỡ.
File txt là file export từ phần mềm chuyên dụng với đầy đủ chi tiết và tiêu đề, file xls chỉ bao gồm các tiêu đề (copy ra từ phần mềm chuyên dụng). Vì có quá nhiều tiêu đề không sử dụng đến, nên khi cần bỏ vào phần mềm chuyên dụng, làm sao chỉ bỏ các tiêu đề (cùng chi tiết) mình cần thôi? Mình nghĩ là phải có lẽ phải convert từ xls qua txt với đầy đủ chi tiết có trong tiêu đề nhưng không biết cách làm. Vì phần mềm chỉ chấp nhận import từ file như file txt
Mình thấy có bạn dùng macro để chạy, nhưng vì mình không hiểu về macro nên không dám dùng.
Trong macro đó, có các đoạn code sau, nhờ các anh/ chị giải thích giúp
Function Count_Text(ByVal chuoi_can_tim As String, ByVal chuoi_nguon As String) As Integer
Dim i, j As Integer
j = 0
For i = 1 To Len(chuoi_nguon)
If (StrComp(Right(Left(chuoi_nguon, i), 1), chuoi_can_tim) = 0) Then
j = j + 1
End If
Next
Count_Text = j
End Function
Function Weekday_Style(ByVal ngay As String) As String
Select Case ngay
Case "2": Weekday_Style = "Mon"
Case "3": Weekday_Style = "Tue"
Case "4": Weekday_Style = "Wed"
Case "5": Weekday_Style = "Thu"
Case "6": Weekday_Style = "Fri"
Case "7": Weekday_Style = "Sat"
Case "1": Weekday_Style = "Sun"
End Select
End Function
Function Weekday_Analysis(ByVal chuoi As String) As String
Dim weekday, chuoi_i, temp As String
Dim can1, can2 As Integer
temp = ""
For i = 1 To Len(chuoi)
chuoi_i = Right(Left(chuoi, i), 1)
If (StrComp(chuoi_i, "-") = 0) Then
can1 = CInt(Right(Left(chuoi, i - 1), 1))
can2 = CInt(Right(Left(chuoi, i + 1), 1))
For j = can1 + 1 To can2
temp = temp & Weekday_Style(j) & ","
Next
i = can2
Else
weekday = Weekday_Style(chuoi_i)
If (weekday <> "") Then
temp = temp & weekday & ","
End If
End If
Next
Weekday_Analysis = temp
End Function
Sub Create_Vehicles(ByVal Data_Address As Range, ByVal File_Name As String)
Dim FileNumber 'for a file
Dim vehicle, channel, sector, time1, time2, string_date, error_messsage As String
Dim hcm_group(1 To 4) As String
Dim so_ngay, num_vehicles, minute_resolution As Integer
Dim error As Boolean
FileNumber = FreeFile ' Get unused file
Open File_Name For Output As #FileNumber ' Create file name.
Print #FileNumber, "[GROUP]"
Print #FileNumber,
hcm_group(1) = "HTV7 (HCMC)"
hcm_group(2) = "HTV9 (HCMC)"
hcm_group(3) = "HTV2 (HCMC)"
hcm_group(4) = "HTV3 (HCMC)"
error_message = ""
error = True
For num_vehicles = 1 To Data_Address.Rows.count - 1
vehicle = Data_Address.Cells(num_vehicles, 1)
If (Len(vehicle) < 5) Then GoTo ke_tiep
channel = Application.VLookup(vehicle, Data_Address, 2, False)
sector = Application.VLookup(vehicle, Data_Address, 3, False)
time1 = istring3(istring3(vehicle, "_", 2), "-", 1)
time2 = istring3(istring3(vehicle, "_", 2), "-", 2)
string_date = Weekday_Analysis(istring3(vehicle, "_", 3))
so_ngay = Count_Text(",", string_date)
If (channel = hcm_group(1) Or channel = hcm_group(2) Or channel = hcm_group(3) Or channel = hcm_group(4)) Then
'infosys gioi han toi da 50 ki tu
'neu la HCM thi so phut la` 1p
minute_resolution = 1
error = False
Else
If ((Minute(time1) Mod 5) > 0 Or (Minute(time2) Mod 5) > 0) Then
error_message = error_message & vehicle & vbCrLf
error = True
Else
'cac thi truong khac la 15p
error = False
minute_resolution = 5
End If
End If
If (Not error) Then
Print #FileNumber, "[VEHICLE]"
Print #FileNumber, Left(vehicle, 50) & vbTab & minute_resolution
For i = 1 To so_ngay
Print #FileNumber, channel & vbTab & sector & vbTab & istring3(string_date, ",", i) & vbTab & time1 & vbTab & time2
Next
End If
ke_tiep:
Next
If (Len(error_message) > 0) Then
MsgBox error_message, vbCritical, "ERROR - NOT MOD 15minute"
End If
Close #FileNumber ' Close file.
End Sub
Sub CREATE_Multisupport()
frmVehicles.Show
End Sub
Cám ơn rất nhiều