Nhờ mọi người giúp lấy giá trị từ file Notepad.

Liên hệ QC

N Khánh

Thành viên mới
Tham gia
22/11/18
Bài viết
30
Được thích
0
Em có 1 file notepad như thế này, em cần lấy giá trị Z ở mỗi dòng có G98 G81 như hình ạ.
Ví dụ T1 có Z50. , T2 có Z-6, ...
Đường dẫn file notepade là cố định ở ô L1.
Trước đây em phải làm thủ công, không biết có cách nào để excel tự nhận những giá trị không ạ. Em cảm ơn mọi người nhiều lắm !!!



Capture.JPG
 

File đính kèm

  • New folder.rar
    8.1 KB · Đọc: 9
Thích lấy như hình sẽ được như hình. Ô L1 chứa được đường dẫn file cũng ngộ ha...

Mã:
Public Sub hello()
Dim filename As String, content As String, fs As Object
Dim rs As Object, mats As Object, arr, r As Long

filename = Sheet1.[L1]
Set fs = CreateObject("scripting.FileSystemObject").OpenTextFile(filename)
content = fs.ReadAll
fs.Close

Set rs = CreateObject("VBScript.RegExp")
rs.IgnoreCase = True
rs.Pattern = "(T[1-4])\s[\s\S]+?G[0-9]{2}\sG[0-9]{2}\s(Z[^\s]+)\s"
rs.Global = True

Set mats = rs.Execute(content)
Sheet1.Range("A7").Resize(100, 2).ClearContents
If mats.Count > 0 Then
    ReDim arr(1 To mats.Count, 1 To 2)
    For r = 1 To mats.Count
        arr(r, 1) = mats(r - 1).submatches(0)
        arr(r, 2) = mats(r - 1).submatches(1)
    Next
    Sheet1.Range("A7").Resize(UBound(arr), UBound(arr, 2)).Value = arr
End If
End Sub
 
Thích lấy như hình sẽ được như hình. Ô L1 chứa được đường dẫn file cũng ngộ ha...

Mã:
Public Sub hello()
Dim filename As String, content As String, fs As Object
Dim rs As Object, mats As Object, arr, r As Long

filename = Sheet1.[L1]
Set fs = CreateObject("scripting.FileSystemObject").OpenTextFile(filename)
content = fs.ReadAll
fs.Close

Set rs = CreateObject("VBScript.RegExp")
rs.IgnoreCase = True
rs.Pattern = "(T[1-4])\s[\s\S]+?G[0-9]{2}\sG[0-9]{2}\s(Z[^\s]+)\s"
rs.Global = True

Set mats = rs.Execute(content)
Sheet1.Range("A7").Resize(100, 2).ClearContents
If mats.Count > 0 Then
    ReDim arr(1 To mats.Count, 1 To 2)
    For r = 1 To mats.Count
        arr(r, 1) = mats(r - 1).submatches(0)
        arr(r, 2) = mats(r - 1).submatches(1)
    Next
    Sheet1.Range("A7").Resize(UBound(arr), UBound(arr, 2)).Value = arr
End If
End Sub
Dạ tuyệt vời quá ạ, em làm vội cái đường dẫn ẩu quá :((
Em muốn nhờ nốt giúp em lấy cái dòng thông tin ứng với mỗi T như thế này được không ạ. Còn cái nè nữa là em không phải làm thủ công nữa
Capture.JPG
em gủi lại cái excel mẫu ạ. Em cảm ơn nhiều
 

File đính kèm

  • New folder.rar
    10.9 KB · Đọc: 1
@N Khánh
Thay đổi Mảng:
ReDim arr(1 To mats.Count, 1 To 2) -> ReDim arr(1 To mats.Count, 1 To 3)
Thêm:
arr(r, 3) = mats(r - 1)
Chắc phải sửa thêm Regexp
 
@N Khánh
Thay đổi Mảng:
ReDim arr(1 To mats.Count, 1 To 2) -> ReDim arr(1 To mats.Count, 1 To 3)
Thêm:
arr(r, 3) = mats(r - 1)
Chắc phải sửa thêm Regexp
em muốn hỏi cái

filename = Sheet1.[L1]
cái tên file excel ko cố định là sheet1 thì có cách nào để nó nhận theo tên của file excel đang mở không ạ
 
em muốn hỏi cái

filename = Sheet1.[L1]
cái tên file excel ko cố định là sheet1 thì có cách nào để nó nhận theo tên của file excel đang mở không ạ
Tôi không hiểu câu hỏi. Có lẽ câu hỏi bị sai ở câu này "cái tên file excel ko cố định là sheet1" . Nên không thể trả lời
 
em muốn hỏi cái
filename = Sheet1.[L1]
cái tên file excel ko cố định là sheet1 thì có cách nào để nó nhận theo tên của file excel đang mở không ạ
Thử cái này:
Mã:
Sub a()
MsgBox ThisWorkbook.Name
MsgBox ThisWorkbook.Path
MsgBox ThisWorkbook.FullName
End Sub
 
Dạ tuyệt vời quá ạ, em làm vội cái đường dẫn ẩu quá :((
Em muốn nhờ nốt giúp em lấy cái dòng thông tin ứng với mỗi T như thế này được không ạ. Còn cái nè nữa là em không phải làm thủ công nữa
View attachment 209555
em gủi lại cái excel mẫu ạ. Em cảm ơn nhiều

À cái đó mình không biết làm, chắc bạn phải nhờ các bạn khác nhé.
 
@ chủ thớt: CNC hử? Úp hình 1 sản phẩm mình ngó xem với.

Chương trình G-code đó không lọc/ xuất ra những thứ bạn cần à?
 
Web KT
Back
Top Bottom