• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

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
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4755
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 509 time

Path của Application

Gửi bàigửi bởi truongphu » T.Bảy 14/03/2009 9:02 am

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 hết

  1. Dim Path$
  2. If Right(App.Path, 1) = "\" Then Path = App.Path Else Path = App.Path & "\"


B- VBA
Với lệnh

Mã: Chọn hết

  1. 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 hết

  1. 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 hết

  1. MsgBox ThisWorkbook.Path


B3- Access
Ta dùng lệnh:

Mã: Chọn hết

  1. 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 hết

  1. Dim Path
  2. Path = 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 hết

  1. "...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 người dùng
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: T.Bảy 05/04/2008 10:15 am
Đến từ: Quán Đôi - Củ Chi
Been thanked: 2 time
Liên hệ:

Re: Path của Application

Gửi bàigửi bởi vie87vn » CN 15/03/2009 3:44 pm

Với VB.NET

Mã: Chọn hết

  1. IO.Path.GetDirectoryName(Application.ExecutablePath)

C#

Mã: Chọn hết

  1. 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 người dùng
truongphu
VIP
VIP
Bài viết: 4755
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 509 time

Re: Path của Application

Gửi bàigửi bởi truongphu » CN 11/10/2009 7:12 pm

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

Mã: Chọn hết

  1. Set Path = CreateObject("WScript.Shell")
  2.     MsgBox Path.CurrentDirectory


2- Function VB6

Mã: Chọn hết

  1. Private Function APath(ByVal FName As String) As String
  2.     If Right(App.Path, 1) <> "\" Then
  3.         APath = App.Path & "\" & FName
  4.     Else
  5.         APath = App.Path & FName
  6.     End If
  7.     MsgBox APath
  8. End 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: T.Tư 14/04/2010 11:34 pm
Đến từ: (Phố cổ) Hội An - Quảng Nam
Liên hệ:

Re: Path của Application

Gửi bàigửi bởi solverpvd » T.Sáu 10/05/2013 10:47 am

Thế trong VB.Net thì sao bác truongphu

nmdang479
Bài viết: 1
Ngày tham gia: T.Năm 13/06/2013 10:42 am
Has thanked: 1 time

Re: Path của Application

Gửi bàigửi bởi nmdang479 » T.Năm 13/06/2013 10:49 am

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.


Quay về “[VB] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách