VBA / VB6 - My Documents + ตัวแปรสภาพแวดล้อม
ดังที่แสดงใน Windows Explorer โฟลเดอร์ My Documents ดูเหมือนจะอยู่ในรูท แต่ไม่ใช่ในกรณีนี้ มันตั้งอยู่ในไดเรกทอรีย่อยของ C: \ Documents and Settings ปัญหาคือไดเรกทอรีย่อยนี้ใช้ชื่อผู้ใช้และไม่เพียง แต่เปลี่ยนจากพีซีเครื่องหนึ่งเป็นเครื่องอื่น แต่ยังรวมถึงพีซีที่รองรับผู้ใช้หลายคน
รหัสต่อไปนี้อนุญาตให้คุณเข้าถึงโฟลเดอร์ My Documents โดยค่าเริ่มต้นโดยไม่คำนึงว่าผู้ใช้ล็อกออน
ด้วย VBA
เพียงวางรหัสต่อไปนี้ในโมดูลทั่วไป:ตัวเลือกที่ชัดเจน
ประเภท SHITEMID ส่วนตัว
cb ตราบใด
abID เป็น Byte
ประเภทสิ้นสุด
ประเภทรายการส่วนตัว
mkid ในฐานะ SHITEMID
ประเภทสิ้นสุด
CSIDL_PERSONAL Const ส่วนตัวตราบใดที่ = & H5
ฟังก์ชันประกาศส่วนตัว SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner ตราบใดที่ ByVal nFolder ตราบเท่าที่ _
pidl เป็น ITEMIDLIST) ตราบใดที่
ฟังก์ชันประกาศส่วนตัว SHGetPathFromIDList Lib "shell32.dll" นามแฝง "SHGetPathFromIDListA" _
ByVal pidl ตราบเท่าที่ ByVal pszPath เป็นสตริงตราบเท่าที่
ฟังก์ชั่นที่สาธารณะ Rep_Documents () As String
Dim lRet ยาว IDL As ITEMIDLIST, sPath As String
lRet = SHGetSpecialFolderLocation (100 &, CSIDL_PERSONAL, IDL)
ถ้า lRet = 0 ถ้าอย่างนั้น
sPath = สตริง $ (512, Chr $ (0))
lRet = SHGetPathFromIDList (ByVal IDL.mkid.cb, ByVal sPath)
Rep_Documents = ซ้าย $ (sPath, InStr (sPath, Chr $ (0)) - 1)
อื่น
Rep_Documents = vbNullString
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
หากต้องการเรียกใช้ฟังก์ชันเพียงสร้างปุ่มและวางในรหัสต่อไปนี้:
Private Sub CommandButton1_Click ()
เซลล์ (5, 2) = Rep_Documents ()
ส่วนท้าย
ด้วย VB6
ภายใต้ VB6 ให้ใช้ตัวแปรสภาพแวดล้อม UserProfile (ซึ่งสามารถใช้งานได้กับ VBA):Dim sPathUser เป็น StringsPathUser = Environ $ ("USERPROFILE") & "\ my เอกสาร \"
MsgBox sPathUser
ฟังก์ชั่นสภาพแวดล้อม
ฟังก์ชัน Environ $ ใช้เพื่อรับค่าของตัวแปรสภาพแวดล้อมตัวอย่างเช่นเมื่อคุณใช้คำสั่ง WINDIR (Windows) คุณจะได้รับโฟลเดอร์ที่ติดตั้ง Windows (C: \ Windows \)
ตัวแปรเหล่านี้สามารถใช้ในไฟล์แบตช์ผ่านยูทิลิตี้เรียกใช้และในสภาพแวดล้อมการเขียนโปรแกรมเช่น VB และ VBA
- พิมพ์% UserProfile% อ้างอิงผู้ใช้ปัจจุบัน
- การพิมพ์% UserProfile% \ My Documents "อ้างอิงถึงโฟลเดอร์ My Documents
- พิมพ์% WinDir% รับโฟลเดอร์ Windows
- การพิมพ์% tmp% ช่วยให้คุณสามารถเข้าถึงไฟล์ชั่วคราว
ตัวแปร Windows
- ตัวแปรสำหรับผู้ใช้เริ่มต้น
- TEMP ไดเรกทอรีชั่วคราว
- ไดเร็กทอรีชั่วคราว TMP
- ตัวแปรระบบ
- เส้นทางตัวแปร ComSpec สำหรับพรอมต์คำสั่ง
- FP_NO_HOST_CHECK?
- NUMBER_OF_PROCESSORS?
- OS คืน OS ที่ใช้งานอยู่
- เส้นทาง?
- PATHEXT?
- PROCESSOR_ARCHITECTURE ส่งคืนสถาปัตยกรรมตัวประมวลผล (x86 ฯลฯ ... )
- PROCESSOR_IDENTIFIER ส่งคืน ID โปรเซสเซอร์
- PROCESSOR_LEVEL?
- PROCESSOR_REVISION ส่งคืนจำนวนการแก้ไขโปรเซสเซอร์
- TEMP ไดเรกทอรีชั่วคราว
- ไดเร็กทอรีชั่วคราว TMP
- โฟลเดอร์ windir ที่ติดตั้ง Windows
- โฟลเดอร์ SystemRoot ที่ติดตั้ง Windows