Как удалить расширение файла из имени файла (VBA)

Вопрос: У меня есть переменная имени файла, которая содержит: "Filename.csv". Чтобы извлечь имя файла из пути, я использую: Filename=Dir([fStr]) где fStr извлекается из выбранного мной файла. Мне нужно только имя файла без ".csv". Как удалить расширение ".csv"? Ответ №1 Лучше использовать функцию GetBaseName() вместо того, чтобы полагаться на функции для замены текста. Windows позволяет периодам

Вопрос:

У меня есть переменная имени файла, которая содержит: «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

Оцените статью
Добавить комментарий