Làm thế nào để có được đường dẫn của bảng tính hiện tại trong VBA?


141

Tôi đã viết một macro như là một bổ trợ và tôi cần có được đường dẫn của bảng tính hiện tại mà nó đang được thực thi. Làm thế nào để tôi làm điều này? Làm thế nào để tôi có được đường dẫn tập tin (chỉ thư mục)?


bạn có nghĩa là, đưa ra một bảng tính, bạn muốn biết thư mục lưu sổ làm việc mẹ?
Mathias

Câu trả lời:


264

Chỉ sử dụng Application.ActiveWorkbook.Pathcho chính đường dẫn (không có tên sổ làm việc) hoặc Application.ActiveWorkbook.FullNamecho đường dẫn tên sổ làm việc.


24
Activeworkbook phụ thuộc vào sổ làm việc đang hoạt động. USe Thisworkbook.path
Alwyn Miranda

6
Cả hai đều hữu ích trong các tình huống khác nhau, tất nhiên. Tôi lấy câu hỏi ban đầu để nói rằng macro nằm trong sổ làm việc bổ trợ (sẽ là ThisWorkbook.path), nhưng cần chạy mã với các sổ làm việc khác khi người dùng cần (đó sẽ là ActiveWorkbook.path).
BradC 3/03/2016

2
Nên luôn luôn rõ ràng - nếu đó là sổ làm việc này, thì nó phải là application.thisworkbook.path. Nếu đó là một sổ làm việc đang được mở, tên sẽ được xác định bằng một bộ, sau đó application.Variablename.path (hoặc fullpath, tùy thuộc).
Selkie

@Selkie Nếu mã tự mở sổ làm việc, thì chắc chắn. Nhưng nếu đây chỉ đơn giản là một macro trợ giúp nằm trong sổ làm việc bổ trợ và cần phải hoạt động trên bất kỳ sổ làm việc nào mà người dùng hiện đang mở khi họ gọi macro, thì đó ActiveWorkbooklà điều cần thiết.
BradC

3
Excel.ActiveWorkbook.Pathchỉ hoạt động nếu tập tin đã được lưu ít nhất một lần. Ngoài ra, nếu tệp chưa bao giờ được lưu, Excel.ActiveWorkbook.FullNamechỉ trả về tên tệp. Có thể là một ý tưởng tốt để kiểm tra nếu sổ làm việc đã được lưu .
ChrisB

37

Luôn luôn tốt đẹp để có:

Dim myPath As String     
Dim folderPath As String 

folderPath = Application.ActiveWorkbook.Path    
myPath = Application.ActiveWorkbook.FullName

27

Nếu bạn muốn lấy đường dẫn của sổ làm việc từ nơi macro đang được thực thi - hãy sử dụng Application.ThisWorkbook.Path.
Application.ActiveWorkbook.Pathđôi khi có thể tạo ra kết quả không mong muốn (ví dụ: nếu macro của bạn chuyển đổi giữa nhiều sổ làm việc).


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.