Input Time từ file txt vào form có sẵn trong file excel

Liên hệ QC

ngongac123

Thành viên mới
Tham gia
21/9/13
Bài viết
11
Được thích
1
xin chào các bạn:
trước hết mình xin thanh minh là mình rất gà mờ về excel
hiện tại mình có 1 file: txt chưa dl và thời gian "bắt đầu" và kết thúc
từ file txt này mình phải copy time tương ứng vào 1 file excel có sẵn form:
các bạn xem 2 file đính kèm:
và giúp mình để mình đỡ phải ngồi copy paste với nhé:
 

File đính kèm

  • tempTimedaily.txt
    9.4 KB · Đọc: 14
  • Book2.xls
    21.5 KB · Đọc: 8
xin chào các bạn:
trước hết mình xin thanh minh là mình rất gà mờ về excel
hiện tại mình có 1 file: txt chưa dl và thời gian "bắt đầu" và kết thúc
từ file txt này mình phải copy time tương ứng vào 1 file excel có sẵn form:
các bạn xem 2 file đính kèm:
và giúp mình để mình đỡ phải ngồi copy paste với nhé:

Chẳng thấy ai "rớ" đến bài này nhỉ?
Thôi, làm luôn! Cho code dưới đây vào 1 module của file Excel:
Mã:
Sub ImportTime()
  Dim aTmp, vFile, arr()
  Dim lR As Long, lRs As Long, n As Long, lPos As Long
  Dim dStart As Double, dFinish As Double, sDate
  Dim sName As String, txtFile As String, sRecord As String, tmp As String
  On Error Resume Next
  vFile = Application.GetOpenFilename("Text File, *.txt")
  If TypeName(vFile) = "String" Then
    txtFile = vFile
    With CreateObject("Scripting.FileSystemObject")
      With .OpenTextFile(txtFile, 1, , -2)
        tmp = Trim(.ReadAll)
        .Close
      End With
    End With
    tmp = Replace(tmp, vbTab, "")
    If InStr(1, tmp, vbCrLf) Then
      aTmp = Split(tmp, vbCrLf)
      lRs = (UBound(aTmp) + 1) / 2 + 1
      ReDim arr(1 To lRs, 1 To 4)
      For lR = 1 To UBound(aTmp) + 1
        sRecord = Trim(aTmp(lR - 1))
        sDate = Right(sRecord, 19)
        sDate = DateSerial(Mid(sDate, 7, 4), Mid(sDate, 4, 2), Left(sDate, 2)) + TimeValue(Right(sDate, 8))
        If (lR Mod 2) Then
          dStart = CDbl(sDate)
          n = n + 1
          arr(n, 1) = n
          sName = Left(sRecord, Len(sRecord) - 30)
          sName = Mid(sName, 3)
          arr(n, 2) = Trim(sName)
          arr(n, 3) = dStart
        Else
          dFinish = CDbl(sDate)
          arr(n, 4) = dFinish
        End If
      Next
    End If
    With Range("A2:D10000")
      .Clear
      .Resize(n).Value = arr
      .Offset(, 2).Resize(n, 2).NumberFormat = "hh:mm"
    End With
  End If
End Sub
Cách dùng (trong file đính kèm):
- Bấm nút Run code
- Hộp Open File hiện ra, duyệt đến file TXT rồi bấm Open
Xong!
 

File đính kèm

  • ImportTime.rar
    11.5 KB · Đọc: 39
em cám ơn thầy nhiều chạy rất ổn thầy ạh.
1 lần nữa cám ơn thầy nhiều!!!!!
 
Bác ndu96081631 ơi. Em mần cái đoạn code này trong excel mà răng hắn không chạy. huhuhu
 
Web KT
Back
Top Bottom