Xin code lấy ngày tháng năm giờ phút từ một máy tính khác trong cùng hệ thống mạng?

Liên hệ QC

Ngày mai trời lại sáng

Thành viên thường trực
Tham gia
4/7/21
Bài viết
339
Được thích
139
Chào mọi người,em muốn đoạn code đứng từ máy tính A lấy thông tin ngày tháng năm giờ phút của một máy tính B trong cùng hệ thống mạng, mọi người xem giúp em với.
 
Thì với gợi ý khiêm tốn ấy bạn cứ thử test bừa đi, bạn có mất gì đâu mà sợ.

Nếu IP thay đổi liên tục thì có thể thử dùng computer name. Cứ thử bừa đi, có cái gì nổ hay cháy đâu mà sợ. Computer name là gì? Vd. trong Windows 10 tôi phải chuột và chọn Properties thì sẽ nhìn thấy computer name. Giả sử computer name = hichic-blala

Tôi chưa bao giờ phải thực hành nên không biết sẽ thế nào. Nhưng về mặt lý thuyết nếu là tôi thì tôi sẽ: mở CMD (dòng lệnh) -> gõ
net time \\hichic-blala -> ENTER

Nếu có IP tĩnh thì thử tiếp nhưng thay cho hichic-blala thì nhập IP.

Trước hết hãy thử thế xem nó ra cái gì, mặt mũi ra sao. Sau đó muốn hỏi gì thì hỏi tiếp.
A chú!ý của cháu là cháu cần đoạn code lấy ngày giờ nghĩa là chạy code là nó lấy được thông tin ngày giờ của máy tính theo địa chỉ IP nhập vào rồi đổ xuống ô nào đó chẳng hạn.
Chứ vào CMD xong phải làm thế thì bất tiện quá chú ơi.
 
Upvote 0
A chú!ý của cháu là cháu cần đoạn code lấy ngày giờ nghĩa là chạy code là nó lấy được thông tin ngày giờ của máy tính theo địa chỉ IP nhập vào rồi đổ xuống ô nào đó chẳng hạn.
Chứ vào CMD xong phải làm thế thì bất tiện quá chú ơi.
Thì cứ thử như hướng dẫn đi. Nếu được thì hỏi câu khác: "Viết code thế nào để chạy lệnh CMD". Có ai bắt bạn mở bằng tay cmd rồi chạy lệnh đâu. Còn nếu không thành công thì lúc đó kêu thật to: KHÔNG CHẠY. Chưa thử gì mà bắt người ta làm hộ thì không nhận được câu trả lời cũng không có gì lạ.
 
Upvote 0
Thì cứ thử như hướng dẫn đi. Nếu được thì hỏi câu khác: "Viết code thế nào để chạy lệnh CMD". Có ai bắt bạn mở bằng tay cmd rồi chạy lệnh đâu. Còn nếu không thành công thì lúc đó kêu thật to: KHÔNG CHẠY. Chưa thử gì mà bắt người ta làm hộ thì không nhận được câu trả lời cũng không có gì lạ.
À cháu thử thì được chú ạ, đây là câu lệnh chạy thành công trong cửa sổ cmd :
Mã:
C:\Users\DESKTOP-L8C0O6S>net time \\192.168.252.2
Current time at \\192.168.252.2 is 10/1/2021 10:10:07 PM

The command completed successfully.
 
Upvote 0
À cháu thử thì được chú ạ, đây là câu lệnh chạy thành công trong cửa sổ cmd :
Mã:
C:\Users\DESKTOP-L8C0O6S>net time \\192.168.252.2
Current time at \\192.168.252.2 is 10/1/2021 10:10:07 PM

The command completed successfully.
Thế thì hỏi câu khác đi. Vd. hỏi về cách thực hiện câu lệnh kia nhưng bằng code.
 
Upvote 0
Thế thì hỏi câu khác đi. Vd. hỏi về cách thực hiện câu lệnh kia nhưng bằng code.
Vâng thế chú cho cháu xin đoạn code để thực hiện câu lệnh:
net time \\192.168.252.2
Trong cửa sổ cmd thay vì cháu phải vào cửa sổ cmd để gõ câu lệnh này.
Thông tin lấy được sẽ gán vào ô nào đó trên bảng tính.
 
Upvote 0
Vâng thế chú cho cháu xin đoạn code để thực hiện câu lệnh:
net time \\192.168.252.2
Trong cửa sổ cmd thay vì cháu phải vào cửa sổ cmd để gõ câu lệnh này.
Thông tin lấy được sẽ gán vào ô nào đó trên bảng tính.
Tôi chỉ hướng dẫn bạn cách tương tác với những người khác. vd. nếu bạn không hiểu net time \\192.168.1.2 có nghĩa là gì thì bạn phải hỏi: Anh ơi, em phải gõ cái net time \\192.168.1.2 ở đâu? Nhưng bạn lại muốn người ta cầy hộ bạn, rồi thắc mắc linh tinh.

Kinh nghiệm là trước hết cứ phải tự thử nghiệm, sau thấy có vấn đề mới hỏi tiếp. Nếu không biết thử nghiệm thì hỏi. Chứ không phải nhờ cầy hộ. Không phải ai cũng có thời gian và hứng thú làm từ A tới Z.

Tôi hướng dẫn nốt đoạn này thôi. Có gì bạn cứ hỏi chung chung mọi người.

Mã:
Function ngaygio(ByVal computer As String) As String
Dim sCmd As String, tmpFile As String, text As String, fso As Object, sh As Object, re As Object
    
    Set sh = CreateObject("Wscript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set re = CreateObject("VBScript.RegExp")
    
    tmpFile = ThisWorkbook.Path & "\" & Format(Time, "hh_mm_ss") & ".txt"
    sCmd = "net time \\" & computer & ">" & tmpFile
    
    sh.Run "cmd /c " & sCmd, 0, True
    
    text = fso.OpenTextFile(tmpFile).ReadLine
    fso.DeleteFile tmpFile
    re.Pattern = ".*(.{10} \d{2}:\d{2}:\d{2}).*"
    ngaygio = re.Replace(text, "$1")
    
    Set sh = Nothing
    Set fso = Nothing
    Set re = Nothing
End Function


Sub test()
Dim ngaythang As String
    ngaythang = ngaygio("desktop-13iclt9")
    Sheet1.Range("A1").Value = CDate(ngaythang)
End Sub
 
Upvote 0
Tôi chỉ hướng dẫn bạn cách tương tác với những người khác. vd. nếu bạn không hiểu net time \\192.168.1.2 có nghĩa là gì thì bạn phải hỏi: Anh ơi, em phải gõ cái net time \\192.168.1.2 ở đâu? Nhưng bạn lại muốn người ta cầy hộ bạn, rồi thắc mắc linh tinh.

Kinh nghiệm là trước hết cứ phải tự thử nghiệm, sau thấy có vấn đề mới hỏi tiếp. Nếu không biết thử nghiệm thì hỏi. Chứ không phải nhờ cầy hộ. Không phải ai cũng có thời gian và hứng thú làm từ A tới Z.

Tôi hướng dẫn nốt đoạn này thôi. Có gì bạn cứ hỏi chung chung mọi người.

Mã:
Function ngaygio(ByVal computer As String) As String
Dim sCmd As String, tmpFile As String, text As String, fso As Object, sh As Object, re As Object
   
    Set sh = CreateObject("Wscript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set re = CreateObject("VBScript.RegExp")
   
    tmpFile = ThisWorkbook.Path & "\" & Format(Time, "hh_mm_ss") & ".txt"
    sCmd = "net time \\" & computer & ">" & tmpFile
   
    sh.Run "cmd /c " & sCmd, 0, True
   
    text = fso.OpenTextFile(tmpFile).ReadLine
    fso.DeleteFile tmpFile
    re.Pattern = ".*(.{10} \d{2}:\d{2}:\d{2}).*"
    ngaygio = re.Replace(text, "$1")
   
    Set sh = Nothing
    Set fso = Nothing
    Set re = Nothing
End Function


Sub test()
Dim ngaythang As String
    ngaythang = ngaygio("desktop-13iclt9")
    Sheet1.Range("A1").Value = CDate(ngaythang)
End Sub
Vâng ạ chú, cháu cảm ơn chú nhiều.
 
Upvote 0
Tôi chỉ hướng dẫn bạn cách tương tác với những người khác. vd. nếu bạn không hiểu net time \\192.168.1.2 có nghĩa là gì thì bạn phải hỏi: Anh ơi, em phải gõ cái net time \\192.168.1.2 ở đâu? Nhưng bạn lại muốn người ta cầy hộ bạn, rồi thắc mắc linh tinh.

Kinh nghiệm là trước hết cứ phải tự thử nghiệm, sau thấy có vấn đề mới hỏi tiếp. Nếu không biết thử nghiệm thì hỏi. Chứ không phải nhờ cầy hộ. Không phải ai cũng có thời gian và hứng thú làm từ A tới Z.

Tôi hướng dẫn nốt đoạn này thôi. Có gì bạn cứ hỏi chung chung mọi người.

Mã:
Function ngaygio(ByVal computer As String) As String
Dim sCmd As String, tmpFile As String, text As String, fso As Object, sh As Object, re As Object
   
    Set sh = CreateObject("Wscript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set re = CreateObject("VBScript.RegExp")
   
    tmpFile = ThisWorkbook.Path & "\" & Format(Time, "hh_mm_ss") & ".txt"
    sCmd = "net time \\" & computer & ">" & tmpFile
   
    sh.Run "cmd /c " & sCmd, 0, True
   
    text = fso.OpenTextFile(tmpFile).ReadLine
    fso.DeleteFile tmpFile
    re.Pattern = ".*(.{10} \d{2}:\d{2}:\d{2}).*"
    ngaygio = re.Replace(text, "$1")
   
    Set sh = Nothing
    Set fso = Nothing
    Set re = Nothing
End Function


Sub test()
Dim ngaythang As String
    ngaythang = ngaygio("desktop-13iclt9")
    Sheet1.Range("A1").Value = CDate(ngaythang)
End Sub
Chú ơi cháu thử chạy sub như sau:
Mã:
Sub test()
Dim ngaythang As String
    ngaythang = ngaygio("192.168.252.2")
    Sheet1.Range("A1").Value = CDate(ngaythang)
End Sub
thì code báo lỗi: File not found
tại dòng: text = fso_OpenTextFile(tmpFile).ReadLine
Như vậy là lỗi gì vậy chú?
Bài đã được tự động gộp:

Cháu thử thế này trong cửa sổ cmd thì báo vậy:
Mã:
C:\Users\DESKTOP-L8C0O6S>net time \\192.168.25.2>\10_23_02.txt
Access is denied.
 
Upvote 0
thì code báo lỗi: File not found
tại dòng: text = fso_OpenTextFile(tmpFile).ReadLine
Như vậy là lỗi gì vậy chú?
Lỗi ở trên do không tìm thấy tập tin tmpFile.

Bạn không thể mở một tập tin mới và dán code rồi chạy. Code dùng ThisWorkbook.Path để tạo đường dẫn tới tập tin tmpFile. Khi tập tin mới chưa được lưu thì ThisWorkbook.Path = RỖNG nên tmpFile bị cụt thành \10_23_02.txt. Rõ ràng đây không là đường dẫn đầy đủ.
 
Lần chỉnh sửa cuối:
Upvote 0
99,99% trong trường hợp này nguyên nhân như tôi viết ở bài #14. Nếu code chạy trong tập tin đã được lưu thì tmpFile có đường dẫn đầy đủ và sẽ không có lỗi gì cả. Trong thư mục chứa tập tin Excel chắc chắn có thể tạo các tập tin mới. Nếu không có quyền đó thì bản thân tập tin Excel cũng không thể lưu được trong thư mục.

Truy cập không cho phép vì

C:\Users\DESKTOP-L8C0O6S>net time \\192.168.25.2>\10_23_02.txt

Rõ ràng \10_23_02.txt không là đường dẫn đầy đủ nên có lỗi, hoăc trong trường hợp \... thì Windows có thể coi là thư mục C:\. Trong Windows 10 thì mặc định C:\ sẽ có Access is denied.

Chắc chắn sau khi lưu tập tin thì tmpFile có đường dẫn đầy đủ và không còn lỗi nữa. Bản thân tôi cũng kiểm tra thấy:

Nếu tôi sửa thành vd. tmpFile = ThisWorkbook.Path & "\hichic.txt" và lưu tập tin Excel ở vd. D:\ thì chạy code không có lỗi và khi mở cmd và gõ trực tiếp

net time \\.... > D:\hichic.txt

cũng không có Access is denied.

Nhưng nếu tôi dán code vào tập tin mới chưa lưu, tức ThisWorkbook.Path = RỖNG thì khi chạy code có lỗi File not found trong code. Và khi gõ trong cmd

net time \\.... > \hichic.txt

thì có Access is denied.

Cái này ai cũng có thể kiểm tra mà.
Làm như sau: mở tập tin mới -> dán code bài #11 -> không lưu tập tin mới mà chạy luôn code test -> đảm bảo 100% là sẽ có lỗi như bài #13 -> lưu lại tập tin Excel -> chạy lại code test -> đảm bảo 100% là sẽ KHÔNG còn lỗi
 
Lần chỉnh sửa cuối:
Upvote 0
99,99% trong trường hợp này nguyên nhân như tôi viết ở bài #14. Nếu code chạy trong tập tin đã được lưu thì tmpFile có đường dẫn đầy đủ và sẽ không có lỗi gì cả. Trong thư mục chứa tập tin Excel chắc chắn có thể tạo các tập tin mới. Nếu không có quyền đó thì bản thân tập tin Excel cũng không thể lưu được trong thư mục.

Truy cập không cho phép vì

C:\Users\DESKTOP-L8C0O6S>net time \\192.168.25.2>\10_23_02.txt

Rõ ràng \10_23_02.txt không là đường dẫn đầy đủ nên có lỗi, hoăc trong trường hợp \... thì Windows có thể coi là thư mục C:\. Trong Windows 10 thì mặc định C:\ sẽ có Access is denied.

Chắc chắn sau khi lưu tập tin thì tmpFile có đường dẫn đầy đủ và không còn lỗi nữa. Bản thân tôi cũng kiểm tra thấy:

Nếu tôi sửa thành vd. tmpFile = ThisWorkbook.Path & "\hichic.txt" và lưu tập tin Excel ở vd. D:\ thì chạy code không có lỗi và khi mở cmd và gõ trực tiếp

net time \\.... > D:\hichic.txt

cũng không có Access is denied.

Nhưng nếu tôi dán code vào tập tin mới chưa lưu, tức ThisWorkbook.Path = RỖNG thì khi chạy code có lỗi File not found trong code. Và khi gõ trong cmd

net time \\.... > \hichic.txt

thì có Access is denied.

Cái này ai cũng có thể kiểm tra mà.
Làm như sau: mở tập tin mới -> dán code bài #11 -> không lưu tập tin mới mà chạy luôn code test -> đảm bảo 100% là sẽ có lỗi như bài #13 -> lưu lại tập tin Excel -> chạy lại code test -> đảm bảo 100% là sẽ KHÔNG còn lỗi

Cháu đã thử teamviewer, kết quả copy code vào một file sau đó save lại kết quả không còn lỗi như bài 13 nhưng xuất hiện lỗi:
Mã:
?err.Description
Type mismatch
?ngaythang
Current time at \\192.168.252.2 is 10/2/2021 8:35:45 PM
Đây là lỗi gì vậy chú?

1633181816371.png
 
Upvote 0
Cháu đã thử teamviewer, kết quả copy code vào một file sau đó save lại kết quả không còn lỗi như bài 13 nhưng xuất hiện lỗi:

?ngaythang
Current time at \\192.168.252.2 is 10/2/2021 8:35:45 PM
Đây là lỗi gì vậy chú?
Do lọc kết quả thôi

Trên máy tôi kết quả có chứa chuỗi dạng 02.10.2021 18:26:57 nên tôi lọc ra chuỗi

= <10 ký tự trước dấu cách><dấu cách><8 ký tự sau dấu cách có dạng: 2 chữ số:2 chữ số:2 chữ số>

Nếu áp dúng cho chuỗi của bạn là

... Current time at \\192.168.252.2 is 10/2/2021 8:35:45 PM

thì không có 8 ký tự nào khớp với 8 ký tự thời gian như ở trên (thời gian ở đây có 7 ký tự 8:35:45), và cũng không có 10 ký tự nào khớp với ngày. Trên máy tôi là 10 ký tự 02.10.2021 (ngày tháng luôn 2 ký tự), trong khi của bạn chỉ có 8, 9 hoặc 10 ký tự (ngày hoặc tháng có thể có 1 ký tự). Vì thế ngaythang = RỖNG và CDate(ngaythang) bị lỗi.

Kết luận: thử sửa 1 dòng code thành
Mã:
re.Pattern = ".* (\d{1,2}\D\d{1,2}\D\d{4} \d{1,2}:\d{2}:\d{2}(?: PM| AM)*).*"
 
Upvote 0
Web KT

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

Back
Top Bottom