VBA / VB6 - 내 문서 + 환경 변수
Windows 탐색기에 표시되는 것처럼 내 문서 폴더가 루트에있는 것으로 나타나지만 그렇지 않습니다. 이 파일은 C : \ Documents and Settings의 하위 디렉토리에 있습니다. 문제는이 하위 디렉토리가 사용자 이름을 사용하고 한 PC에서 다른 PC로 변경 될뿐만 아니라 여러 사용자를 지원하는 PC에서도 변경된다는 것입니다.
다음 코드를 사용하면 로그온 한 사용자에 관계없이 기본적으로 내 문서 폴더에 액세스 할 수 있습니다.
VBA 사용
일반 모듈에 다음 코드를 붙여 넣기 만하면됩니다.Option Explicit
사립 유형 SHITEMID
Cb As Long
abID as Byte
엔드 타입
개인 유형 ITEMIDLIST
SHITEMID으로 mkid
엔드 타입
개인 Const CSIDL_PERSONAL As Long = & H5
개인 선언 함수 SHGetSpecialFolderLocation Lib "shell32.dll"_
(ByVal hwndOwner 길기 때문에 ByVal nFolder As Long, _
pidl ITEMIDLIST) As Long
개인 선언 함수 SHGetPathFromIDList Lib "shell32.dll"별칭 "SHGetPathFromIDListA"_
ByVal pidl 길기 때문에 ByVal pszPath를 String으로 사용
공용 함수 Rep_Documents ()를 String으로 사용
어둡게 l 길게, IDL은 ITEMIDLIST, 문자열은 sPath
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 ()
End Sub
VB6 사용
VB6에서 UserProfile 환경 변수를 사용하십시오 (VBA에서도 작동 함).String으로 sPathUser를 희미하게합니다.sPathUser = Environ $ ( "USERPROFILE") & "\ my documents \"
MsgBox sPathUser
환경 기능
Environ $ 함수는 환경 변수 값을 받기 위해 사용됩니다.예를 들어, WINDIR 명령 (Windows)을 사용하면 Windows가 설치된 폴더 (C : \ Windows \)를 얻었을 것입니다.
이러한 변수는 배치 파일, 실행 유틸리티 및 VB 및 VBA와 같은 프로그래밍 환경에서 사용할 수 있습니다.
- % UserProfile %를 입력하면 현재 사용자를 참조합니다.
- % UserProfile % \ My Documents를 입력하면 내 문서 폴더가 참조됩니다.
- % WinDir %를 입력하면 Windows 폴더가 생성됩니다.
- % tmp %를 입력하면 임시 파일에 액세스 할 수 있습니다.
Windows 변수
- 기본 사용자의 변수
- TEMP 임시 디렉토리
- TMP 임시 디렉토리
- 시스템 변수
- ComSpec 명령 프롬프트의 변수 경로입니다.
- FP_NO_HOST_CHECK?
- NUMBER_OF_PROCESSORS입니까?
- OS 사용중인 OS를 반환합니다.
- 통로?
- 숙제?
- PROCESSOR_ARCHITECTURE 프로세서 아키텍처 (x86 등)를 반환합니다.
- PROCESSOR_IDENTIFIER 프로세서 ID를 리턴합니다.
- PROCESSOR_LEVEL?
- PROCESSOR_REVISION 프로세서 개정 수를 반환합니다.
- TEMP 임시 디렉토리.
- TMP 임시 디렉토리.
- Windows가 설치된 windir 폴더
- Windows가 설치된 SystemRoot 폴더.