xin giúp đỡ code phân biệt office 2016, 2019 và 365

Liên hệ QC

bebi109

Thành viên mới
Tham gia
17/4/10
Bài viết
20
Được thích
1
như tiêu đề, mong các bác giúp em code vba phần biệt được office 2016, 2019, 365. Em xin chân thành cảm ơn!
 
như tiêu đề, mong các bác giúp em code vba phần biệt được office 2016, 2019, 365. Em xin chân thành cảm ơn!
Bạ thử dùng cái như thế này
Application.Version property (Excel)
 
Upvote 0
Bạ thử dùng cái như thế này
Application.Version property (Excel)
Bạn đã đọc kỹ câu hỏi của người ta chưa?
Người ta hỏi cách phân biệt 2016, 2019 và 365.
Application.Version chỉ cho biết đến 2016.

@thớt: hiện tại thì chỉ có cách dò từ registry key.
 
Upvote 0
như tiêu đề, mong các bác giúp em code vba phần biệt được office 2016, 2019, 365. Em xin chân thành cảm ơn!
Chỉ trừ khi bạn cần thống kế số File theo từng loại mới dùng đến code. Tôi thường phân biệt thế này:
1/ Click phải vào 1 File chọn Properties.
2/ Cửa sổ hiện ra chọn thẻ General và xem chổ viền đỏ của hình.

A_PB.JPG
 
Upvote 0
Chỉ trừ khi bạn cần thống kế số File theo từng loại mới dùng đến code. Tôi thường phân biệt thế này:
1/ Click phải vào 1 File chọn Properties.
2/ Cửa sổ hiện ra chọn thẻ General và xem chổ viền đỏ của hình.

View attachment 238832
code VBA mà bác
Bài đã được tự động gộp:

Bạn đã đọc kỹ câu hỏi của người ta chưa?
Người ta hỏi cách phân biệt 2016, 2019 và 365.
Application.Version chỉ cho biết đến 2016.

@thớt: hiện tại thì chỉ có cách dò từ registry key.
Bác cho em hỏi đường dẫn đến key muốn xem trong registry với ạ
 
Upvote 0
code VBA mà bác
Bài đã được tự động gộp:


Bác cho em hỏi đường dẫn đến key muốn xem trong registry với ạ
Tham khảo link sau.
 
Upvote 0
Upvote 0
đúng cái em cần. cảm ơn bro nhiều lắm lắm ^^
Function AppVersion() As Long
' 73 Hoa sua Phu nhuan

Dim registryObject As Object
Dim rootDirectory As String
Dim keyPath As String
Dim arrEntryNames As Variant
Dim arrValueTypes As Variant
Dim x As Long

Select Case Val(Application.Version)

Case Is = 16

keyPath = "Software\Microsoft\Office\" & CStr(Application.Version) & "\Common\Licensing\LicensingNext"
rootDirectory = "."
Set registryObject = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & rootDirectory & "\root\default:StdRegProv")
registryObject.EnumValues &H80000001, keyPath, arrEntryNames, arrValueTypes

On Error GoTo ErrorExit
For x = 0 To UBound(arrEntryNames)
If InStr(arrEntryNames(x), "365") > 0 Then
AppVersion = 365
Exit Function
End If
If InStr(arrEntryNames(x), "2019") > 0 Then
AppVersion = 2019
Exit Function
End If
Next x

Case Is = 15
AppVersion = 2013
Case Is = 14
AppVersion = 2010
Case Is = 12
AppVersion = 2007
Case Else

AppVersion = 0
End Select

Exit Function

ErrorExit:

AppVersion = 2016

End Function

quá đơn giản
 
Upvote 0
Upvote 0
Tôi học VBA cũng lâu mà không tự làm được cái này, phải tham khảo trên internet mới biết. Tính ra là bạn rất giỏi đó chứ?
Liệu có phải trang web bên kia đang ăn cắp code của bạn không?
Code bên này có chú thích là 73 Hoa Sửa, Phú Nhuẫn mà Thầy. Em thấy bên kia không có dòng đó ạ
 
Upvote 0
Hai code giống nhau đến mức độ dùng Case Is =; trên thực tế, nếu trị của Select tính ra thành số nguyên thì chỉ cần Case thôi.
Kết luận: một trong hai chôm của nhau. Hoặc cả hai cùng chôm code của một nhơn vật thứ ba mào đó. Vì mức độ giống của code nên không thể nói là cả hai cùng "lấy ý tưởng" một chỗ. Chỉ có chôm nhau mới giống thế thôi.

Suy ra:
Người nào hiểu từ EnumValues thì coi chư có quyền nói là người kia ăn cắp code của mình.
Nếu hai người đều hiểu thì xét tiếp từ impersonate, impersonationLevel
Nếu hain người cùng không hiểu thì là trường hợp cùng chôm một chỗ.

Chú:
mình có thể bỏ qua câu chú thích về nhiệm vụ của hàm: Test the Office application version
Vì nó thiên vị bên Tây Ca na đa. Diễn đàn này số người viết code chú thích nhiệm vụ đếm trên đầu ngón tay.

Chú 2: code là sản phẩm trí tuệ. Ăn cắp sản phẩm trí tuệ mà còn đưa tên của mình vào là tội khá nặng. Nếu không hình sự thì cũng xét theo tinh thần là hành động trơ trẽn và bỉ ổi.

Chú 3: vì cả hai đều không có dùng câu "có bản quyền/copyright" cho nên hiện tại thằng nào nhanh chơn cầu chứng trước thì có quyền bắt thằng kia phải tháo gỡ. Với tình huống hiện tại (ngày 8 tháng 5 năm 2020) thì chỉ là vấn đề danh dự và lòng tự trọng. Nếu là ngày xưa thì tôi khuyên diễn đàn nên làm tới. Nhưng với luật mới của diễn đàn thì tôi không chắc chủ đích của diễn đàn là gì nữa.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã gợi ý đến thế rồi mà BQT còn chậm tay nhỉ.
Quả là sau khi "chỉnh đốn lại luật lệ", đẳng cấp diễn đàn cũng thay đổi nhiều. Tiêu chí bây giờ là lấy lượng đè phẩm.

Gần đây, có anh bạn không thấy vào nữa. Không rõ có liên quan đến việc chỉnh đốn này?
 
Upvote 0
Web KT

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

Back
Top Bottom