VBA / VB6 - My Documents + ตัวแปรสภาพแวดล้อม

เส้นทางโฟลเดอร์ "My Documents" ประกอบด้วยองค์ประกอบชื่อผู้ใช้ตัวแปรและการเปลี่ยนแปลงจากผู้ใช้รายหนึ่งไปยังอีกรายหนึ่ง เป็นไปได้ที่จะ เขียนรหัสใน VBA หรือ VB6 เพื่อเข้าถึงโฟลเดอร์ "My Documents" โดยไม่คำนึงถึงชื่อผู้ใช้ด้วยความช่วยเหลือของฟังก์ชั่นที่สามารถ อ่านตัวแปรสภาพแวดล้อมใน VB6 เช่นเดียวกับทุกภาษาการเขียนโปรแกรมการเขียนโค้ดใน VB6 หรือ VBA ต้องการความรู้เกี่ยวกับแนวคิดการเขียนโปรแกรมพื้นฐานรวมถึงรูทีนย่อยลูปและฟังก์ชั่น VB6 เฉพาะ ฟังก์ชั่นสภาพแวดล้อมเช่น Environ $ ซึ่งรับค่าของตัวแปรสภาพแวดล้อมสามารถใช้เพื่อเขียนโค้ดเพื่อ อ่านตัวแปรสภาพแวดล้อมใน VB6

ดังที่แสดงใน 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 เป็น String

sPathUser = 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

โปรดทราบว่า:

หากคุณเข้าสู่ระบบในฐานะผู้ดูแลระบบสามารถทำการเปลี่ยนแปลงได้ผ่านแผงควบคุม / ตัวแปรขั้นสูงของระบบ / สภาพแวดล้อม
บทความก่อนหน้านี้ บทความถัดไป

เคล็ดลับยอดนิยม