Path của Application

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Đăng trả lời
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 530 times

Path của Application

Gửi bài by truongphu »

Tên bài viết: Path của Application
Tác giả: truongphu
Cấp độ bài viết: căn bản
Tóm tắt: Code để tìm Path và những lưu ý
Đường dẫn của file thực hành (EXE) đang chạy là một ứng dụng khá thông dụng. Nó cho phép ta truy xuất đến các file liên quan mà không cần biết chúng nằm cụ thể ở đâu trên một máy tính bất kỳ; chúng ta quen gọi ứng dụng nầy là "đường dẫn tương đối"
Khi file thực hành chạy, chúng tự nhận biết đường dẫn của chính mình. Nhờ đó ta có thể liên lạc với các file cùng folder với file thực hành, hoặc trong các folder con dưới nó.

A- VB6
Quá quen thuộc, đó là App.Path
Để bảo đảm không lỗi khi run, ta viết:

Mã: Chọn tất cả

Dim Path$If Right(App.Path, 1) = "\" Then Path = App.Path Else Path = App.Path & "\"
B- VBA
Với lệnh

Mã: Chọn tất cả

MsgBox Application.Path
thì tất cả ứng dụng VBA (Word, Excel, Access... ) đều thông báo đường dẫn cài đặt Office, tại folder nơi có chứa các Exe thi hành (WinWord.exe, MSACCESS.exe ...)

B1- Word:

Mã: Chọn tất cả

MsgBox ThisDocument.Path
- Nếu câu lệnh của UserForm1 thuộc Project\ <Tên file Word> thì kết quả là đường dẫn của đúng vị trí file Word đang làm việc. Các câu lệnh trong UserForm1 chỉ dùng được trong tập tin Word nầy.
- Nếu câu lệnh của UserForm1 thuộc Normal\ <Tên file Word> thì kết quả là đường dẫn của file Normal.doc
(...\Application\ Data\ Microsoft\ Templates). Chọn trường hợp nầy để áp dụng code VBA chung cho tất cả các file Word.

B2- Excel:
Ta dùng lệnh:

Mã: Chọn tất cả

MsgBox ThisWorkbook.Path
B3- Access
Ta dùng lệnh:

Mã: Chọn tất cả

MsgBox CurrentProject.Path
C- VBS
VBS có sẵn 2 properties là WScript.ScriptFullName và WScript.ScriptlName để thông báo đường dẫn tên ứng dụng và tên ứng dụng
Chỉ để lấy Path, ta phải viết code riêng. Ví dụ ta viết:

Mã: Chọn tất cả

Dim PathPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "")


D- Cần phân biệt "Đường dẫn hiện hành trên các ổ đĩa cứng".
Với Windows, HĐH sẽ lưu các đường dẫn đang làm việc trên các ổ đĩa. (Xem VBLib, Chương Hàm VB, Mục Tập tin và Thư mục)
* Khi File thi hành (exe) khởi chạy, đường dẫn đang làm việc chính là App.Path trong VB6. Tuy nhiên nếu ta chuyển qua truy cập các thư mục khác, ví dụ dùng Explorer mở file, hay dùng CommonDialog mở file ở các thư mục khác thì đường dẫn đang làm việc không còn là App.Path nữa, mà chính là đường dẫn các file khác mới truy xuất. Do đó việc dùng dấu "." của thư mục hiện hành cần lưu ý
--> Ta có thể dùng code như sau khi ứng dụng bắt đầu làm việc, ví dụ ở Form_Load:
dùng dấu "." thay cho App.Path như sau:

Mã: Chọn tất cả

"...data source= .\Kho\Quanly.mdb"
Kể từ sau Form_Load, dấu "." thay cho App.Path không còn giá trị tuyệt đối! nghĩa là có thể sinh lỗi do sai đường dẫn
(Thank to NoBi)
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
vie87vn
Thành viên tích cực
Thành viên tích cực
Bài viết: 150
Ngày tham gia: Thứ 7 05/04/2008 10:15 am
Đến từ: Quán Đôi - Củ Chi
Been thanked: 2 times
Tiếp xúc:

Re: Path của Application

Gửi bài by vie87vn »

Với VB.NET

Mã: Chọn tất cả

IO.Path.GetDirectoryName(Application.ExecutablePath)
C#

Mã: Chọn tất cả

System.IO.Path.GetDirectoryName(Application.ExecutablePath)
---
Lưu ý: Đây là path của Exe file không phải là Path của Solution :-S .
Mà pác nào bit lấy path của Solution hok, chỉ em luôn. [-O<
----
Trời! Xin lỗi, post nhằm box rồi. Tai nhìn topic của pác trên trang chủ, click vào mà hok xem kỹ Box :((
Hoàng Sa và Trường Sa là của Việt Nam.
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 530 times

Re: Path của Application

Gửi bài by truongphu »

1- VBS có thể áp dụng cho VB6

Mã: Chọn tất cả

Set Path = CreateObject("WScript.Shell")    MsgBox Path.CurrentDirectory
2- Function VB6

Mã: Chọn tất cả

Private Function APath(ByVal FName As String) As String    If Right(App.Path, 1) <> "\" Then        APath = App.Path & "\" & FName    Else        APath = App.Path & FName    End If    MsgBox APathEnd Function
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
solverpvd
Thành viên chính thức
Thành viên chính thức
Bài viết: 40
Ngày tham gia: Thứ 4 14/04/2010 11:34 pm
Đến từ: (Phố cổ) Hội An - Quảng Nam
Tiếp xúc:

Re: Path của Application

Gửi bài by solverpvd »

Thế trong VB.Net thì sao bác truongphu
nmdang479
Bài viết: 1
Ngày tham gia: Thứ 5 13/06/2013 10:42 am
Has thanked: 1 time

Re: Path của Application

Gửi bài by nmdang479 »

Mấy anh giúp em vấn đề này với :
Em có 2 macros điều có chức năng load fields.xml . Đó là 2 macro riêng nhưng khi em lấy macro1 chọn đường dẫn đến .xml A save lại thì macro2 cũng tự động nhận đường dẫn cho macro1 đã chọn.
Đăng trả lời

Quay về