Вопрос:
У меня есть переменная имени файла, которая содержит: «Filename.csv». Чтобы извлечь имя файла из пути, я использую: Filename=Dir([fStr]) где fStr извлекается из выбранного мной файла.
Мне нужно только имя файла без «.csv». Как удалить расширение «.csv»?
Ответ №1
Лучше использовать функцию GetBaseName() вместо того, чтобы полагаться на функции для замены текста. Windows позволяет периодам появляться в базовом имени файла, поэтому что-то вроде этого является законным:
My .csv for Bob.csv
Использование Replace() приведет к:
My for Bob
Не то, что вы ищете. Лучшим подходом было бы:
Filename = CreateObject(«Scripting.FileSystemObject»).GetBaseName(fStr) Ответ №2
Вы можете использовать функцию замены:
Filename = replace(Dir([fStr]),».csv»,»») Ответ №3
Мой код работает на разных системах, которые могут не разрешать скрипты. Я переписал это, чтобы обойти это ограничение.
Function FileGetBaseNameNoExt(aFilenameStr As String) As String Dim TmpCnt As Integer Dim TmpStr As String FileGetBaseNameNoExt = aFilenameStr If InStr(aFilenameStr, «.») = False Then Exit Function End If TmpCnt = 1 TmpStr = Left(Right(aFilenameStr, TmpCnt), 1) While TmpStr <> «.» TmpCnt = TmpCnt + 1 TmpStr = Left(Right(aFilenameStr, TmpCnt), 1) Wend ‘Make Sure the Filename is Not Something Odd like .csv If TmpCnt < Len(aFilenameStr) Then FileGetBaseNameNoExt = Left(aFilenameStr, Len(aFilenameStr) — TmpCnt) End If End Function