声明32位和64位Excel兼容的API函数
'当VBA7和Win64都是True时(只有64的Excel才是这种情况),使用第一条Declare语句。在其他版本中,使用第二条Declare语句
#If VBA7 And Win64 Then
Declare ptSafe Function GetWindowsDirectory Lib "kernel32" (ByVal ipBuffer As String, ByVal nSize As Long) As Long
#Else
Declare Function GetWindowsDirectory Lib "kernel32" (ByVal ipBuffer As String, ByVal nSize As Long) As Long
#End If
GetWindowsDirectory()
说明
这个函数能获取Windows目录的完整路径名。在这个目录里,保存了大多数windows应用程序文件及初始化文件
返回值
Long类型,复制到lpBuffer的一个字串的长度。如lpBuffer不够大,不能容下整个字串,就会返回lpBuffer要求的长度,零表示失败。并且将出错的信息存储在GetLastError函数中,用户可以通过调用GetLastError来得到错误信息。
参数表
参数 类型及说明
lpBuffer String,指定一个字串缓冲区,用于装载Windows目录名。除非是根目录,否则目录中不会有一个中止用的“\”字符
nSize Long,lpBuffer字串的最大长度
'获取Windows文件夹路径
privateDeclare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long'在form窗体中声明改函数
Dim SWinDir As String '定义字符变量用来存储路径
Dim Retn As Long ‘定义长整型变量存储路径的长度
SWinDir = Space(255)’设定一个空串,长度为windows允许的最大长度,也可写作:SWidir=String(255,0)
Retn = GetWindowsDirectory(SWinDir, Len(SWinDir))‘获取windows路径的长度,swindir存储了路径
SWinDir = Left(SWinDir, Retn)’去掉空白内容。