- 帖子
- 109
- 主題
- 2
- 精華
- 0
- 積分
- 114
- 點名
- 0
- 作業系統
- Win7 Win10
- 軟體版本
- Office 2019 WPS
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 深圳
- 註冊時間
- 2013-2-2
- 最後登錄
- 2024-11-6
|
7#
發表於 2016-10-22 21:00
| 只看該作者
回復 6# modelcrazyer
如果你是要從路徑中取出文檔名的話,送你一好用一點的函數,這個程式的特點是容錯性要好一些:- #If VBA7 Then
- Private Declare PtrSafe Function PathRemoveBackslashW Lib "shlwapi.dll" (ByVal pszPath As LongPtr) As Long
- Private Declare PtrSafe Function PathStripPathW Lib "shlwapi.dll" (ByVal pszPath As LongPtr) As Long
- Private Declare PtrSafe Function PathRemoveExtensionW Lib "shlwapi.dll" (ByVal pszPath As LongPtr) As Long
- Private Declare PtrSafe Function lstrlenW Lib "kernel32.dll" (ByVal lpString As LongPtr) As Long
- #Else
- Private Declare PtrSafe Function PathRemoveBackslashW Lib "shlwapi.dll" (ByVal pszPath As Long) As Long
- Private Declare PtrSafe Function PathStripPathW Lib "shlwapi.dll" (ByVal pszPath As Long) As Long
- Private Declare PtrSafe Function PathRemoveExtensionW Lib "shlwapi.dll" (ByVal pszPath As Long) As Long
- Private Declare PtrSafe Function lstrlenW Lib "kernel32.dll" (ByVal lpString As Long) As Long
- #End If
- Public Function ExtractFileName(ByVal FileName As String, Optional ByVal ExtensionReturn As Boolean = True) As String
- Dim I As Long
- Dim strPath As String
-
- #If VBA7 Then
- Dim ptrFileName As LongPtr
- #Else
- Dim ptrFileName As Long
- #End If
-
- FileName = Trim$(FileName) & String(5, vbNullChar)
- ptrFileName = StrPtr(FileName)
- PathRemoveBackslashW ptrFileName
- PathStripPathW ptrFileName
- If Not ExtensionReturn Then PathRemoveExtensionW ptrFileName
- I = lstrlenW(ptrFileName)
- If I > 0 Then ExtractFileName = Trim$(Left$(FileName, I))
- End Function
複製代碼 下面的程式是測試用的:- Sub Test()
- Debug.Print ExtractFileName("K:\aaaa\bbbb\AAAA.xlsx ", False)
- Debug.Print ExtractFileName("K:\aaaa\bbbb\AAAA.01.xlsx ", False)
- Debug.Print ExtractFileName("K:\aaaa\bbbb\AAAA\ ", False)
- Debug.Print ExtractFileName("K:\aaaa\bbbb\AAAA", False)
-
- Debug.Print ExtractFileName("K:\aaaa\bbbb\AAAA.xlsx ", True)
- Debug.Print ExtractFileName("K:\aaaa\bbbb\AAAA.01.xlsx ", True)
- End Sub
複製代碼 |
|