Code lấy tên tất cả file excel đang mở

  • Thread starter Thread starter YêuCN
  • Ngày gửi Ngày gửi
Liên hệ QC

YêuCN

Thành viên thường trực
Tham gia
17/7/19
Bài viết
380
Được thích
142
Em đang tìm code để lấy tên tất cả các file excel đang mở các addin đang install, kể cả các file xlam khác mục addin. Mong a chị có kinh nghiệm chỉ dạy .
 
Đơn giản là vầy thôi:

For Each O In Application.Workbooks
Debug.Print O.Name
For Each O In Application.Addins
Debug.Print O.Installed, O.Name

Nếu bạn đang học VBA thì không cần đến những câu hỏi đơn lẻ thế này.
Mà hãy vào Object Browser của VBA để tìm và học.

Chẳng hạn như phân lớp:
Application hoặc Document (Word) là lớp lớn nhất của Ứng dụng Excel. (Excel là thư viện chứa Application hoặc Word là thư viện chứa Document )
Lớp con của Application ví dụ có Workbooks
Quy cách đặt tên: có chữ "s" sau thì nó là một nhánh chứa nhiều đối tượng con khác.
Vì vậy ta có thể xử dụng:
Workbooks(1) hoặc Workbooks("a.xlsx") Hoặc For Each .. In ...

Và Workbook lại chứa nhiều Worksheets

Khai báo biến nhận từng đối tượng thường thì bỏ "s", nếu không xem Object Browser thì rất khó biết khai báo sớm
nếu quy cách đặt có khác.

Dim WB As Workbook 'hoặc Application.Workbook thường thì các Khai báo sớm thì không cần viết lớp "Lớn nhất của một khối lớp"
Chỉ khi khai báo thư viện thì mới Dim WB As Workbook
Chưa có thư viện thì phải là Dim WB As Object '(Khai báo chung cho mọi đối tượng) hoặc Dim WB (Khai báo chung hơn nhưng trừ gán với Type)


Application.Workbook chính là lớp (Class Module) con trong lớp cha Application (Class Module)

Để viết code trong VBA nhanh thì gõ kí tự sau đó Ctrl + Space để được gợi ý, để đi đến lớp con thì gõ dấu chấm (.).
 
Upvote 0
Nếu bạn đang học VBA thì không cần đến những câu hỏi đơn lẻ thế này.
Mà hãy vào Object Browser của VBA để tìm và học.
Tôi đã từng viết không biết bao nhiêu lần về cái này.
Mỗi người có một kho kiến thức ngay trong tầm tay nhưng cứ đi tìm ở chỗ khác.
 
Upvote 0
Đơn giản là vầy thôi:

For Each O In Application.Workbooks
Debug.Print O.Name
For Each O In Application.Addins
Debug.Print O.Installed, O.Name

Nếu bạn đang học VBA thì không cần đến những câu hỏi đơn lẻ thế này.
Mà hãy vào Object Browser của VBA để tìm và học.

Chẳng hạn như phân lớp:
Application hoặc Document (Word) là lớp lớn nhất của Ứng dụng Excel. (Excel là thư viện chứa Application hoặc Word là thư viện chứa Document )
Lớp con của Application ví dụ có Workbooks
Quy cách đặt tên: có chữ "s" sau thì nó là một nhánh chứa nhiều đối tượng con khác.
Vì vậy ta có thể xử dụng:
Workbooks(1) hoặc Workbooks("a.xlsx") Hoặc For Each .. In ...

Và Workbook lại chứa nhiều Worksheets

Khai báo biến nhận từng đối tượng thường thì bỏ "s", nếu không xem Object Browser thì rất khó biết khai báo sớm
nếu quy cách đặt có khác.

Dim WB As Workbook 'hoặc Application.Workbook thường thì các Khai báo sớm thì không cần viết lớp "Lớn nhất của một khối lớp"
Chỉ khi khai báo thư viện thì mới Dim WB As Workbook
Chưa có thư viện thì phải là Dim WB As Object '(Khai báo chung cho mọi đối tượng) hoặc Dim WB (Khai báo chung hơn nhưng trừ gán với Type)


Application.Workbook chính là lớp (Class Module) con trong lớp cha Application (Class Module)

Để viết code trong VBA nhanh thì gõ kí tự sau đó Ctrl + Space để được gợi ý, để đi đến lớp con thì gõ dấu chấm (.).
Cám ơn a nhưng cái khó nhất vẫn chưa giải quyết được đó là khi mo file xlam ko phải addin khởi động cùng excel thì làm sao lấy được tên của nó
 
Upvote 0
Sao bạn không nghe tôi nói cái vụ phím tắt vậy, chỉ dẫn thì phải thực hành chứ.

Gõ "App" Ctrl + Space Chọn Application Gõ ".Ad" Ctrl + Space Sẽ thấy lớp con của nó.

For Each o In Application.AddIns2
Debug.Print o.Installed, o.Name
Next
 
Upvote 0
Sao bạn không nghe tôi nói cái vụ phím tắt vậy, chỉ dẫn thì phải thực hành chứ.

Gõ "App" Ctrl + Space Chọn Application Gõ ".Ad" Ctrl + Space Sẽ thấy lớp con của nó.

For Each o In Application.AddIns2
Debug.Print o.Installed, o.Name
Next


Sao bạn không nghe tôi nói cái vụ phím tắt vậy, chỉ dẫn thì phải thực hành chứ.

Gõ "App" Ctrl + Space Chọn Application Gõ ".Ad" Ctrl + Space Sẽ thấy lớp con của nó.

For Each o In Application.AddIns2
Debug.Print o.Installed, o.Name
Next
 
Upvote 0
Vậy thì bạn thử cái đoạn này nếu không được thì gửi file LabX.xlam của bạn lên.

CreateObject("Excel.Application").AddIns2
 
Upvote 0
Sao bạn không nghe tôi nói cái vụ phím tắt vậy, chỉ dẫn thì phải thực hành chứ.

Gõ "App" Ctrl + Space Chọn Application Gõ ".Ad" Ctrl + Space Sẽ thấy lớp con của nó.

For Each o In Application.AddIns2
Debug.Print o.Installed, o.Name
Next
Vậy thì bạn thử cái đoạn này nếu không được thì gửi file LabX.xlam của bạn lên.

CreateObject("Excel.Application").AddIns2
em đã thử vẫn không được
nguồn: https://www.giaiphapexcel.com/diendan/threads/labx-addin-khóa-và-mở-khóa-mã-nguồn-vbaproject.135158/
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
File này là của thaipv, file đã được mã hóa, nên nó phải là file Excel thuần.

Nếu File này người viết cố ý nén mã độc thì 1000% rủi ro cho máy tính của bạn.

Lưu ý khi sử dụng.

File trên được mã hóa dựa trên MS-OFFCRYPTO bởi microsoft.
 
Upvote 0
File này là của thaipv, file đã được mã hóa, nên nó phải là file Excel thuần.

Nếu File này người viết cố ý nén mã độc thì 1000% rủi ro cho máy tính của bạn.

Lưu ý khi sử dụng.

File trên được mã hóa dựa trên MS-OFFCRYPTO bởi microsoft.
dậy có cách nào để lấy được tất cả các tên vbaproject(filename) không anh ?
 
Upvote 0
dậy có cách nào để lấy được tất cả các tên vbaproject(filename) không anh ?
Application.VBE.VBProjects


Thư viện của nó là:

Microsoft Visual Basic for Applintions Extensibility 5.3
Location: C:\Program Files (x86)\Common Fries\Microsoft Shared\VBA\VBE.DLL
Language: Standard
 
Upvote 0
Xin lỗi bạn, trợ giúp có giới hạn, đã nói rõ ở bài trước, việc còn lại là của bạn.
 
Upvote 0
Web KT

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

Back
Top Bottom