Input Time từ file txt vào form có sẵn trong file excel (4 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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

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

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

Bài viết mới nhất

Back
Top Bottom