No Image

Имя файла без расширения vba

СОДЕРЖАНИЕ
751 просмотров
10 марта 2020

Мне нужно , чтобы получить имя файла без имени расширения с помощью VBA. Я знаю , что ActiveWorkbook.Name собственность, но если пользователь имущие Windows , свойство Hide extensions for known file types отключить, результат моего кода будет [name.extension]. Как я могу вернуть только имя рабочей книги независимо от окна недвижимости?

Я стараюсь даже , ActiveWorkbook.Application.Caption но я не могу настроить это свойство.

Ответы , приведенные здесь уже могут работать в ограниченных ситуациях, но, конечно , не лучший способ пойти об этом. Не изобретать колесо. File System Object в библиотеке Microsoft Scripting время выполнения уже есть метод , чтобы сделать именно это. Это называется GetBaseName . Он обрабатывает периоды в имени файла как есть.

Мне нужно получить имя файла без имени расширения по VBA. я знаю ActiveWorkbook.Name свойство, но если у пользователя есть свойство Windows Hide extensions for known file types выключите, результатом моего кода будет [Name.Extension]. Как я могу вернуть только имя Workbook независимо от свойства windows?

Я стараюсь даже ActiveWorkbook.Application.Caption но я не могу настроить это свойство.

7 ответов

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Ответы, приведенные здесь, уже могут работать в ограниченных ситуациях, но, безусловно, не лучший способ сделать это. Не изобретай велосипед. Объект файловой системы в Библиотека времени выполнения сценариев Microsoft уже есть метод, чтобы сделать именно это. Это называется GetBaseName. Он обрабатывает точки в имени файла как есть.

Просто, но у меня хорошо работает

На мой взгляд, использование функции Split выглядит более элегантно, чем InStr и Left.

Чтобы быть многословным, удаление расширения демонстрируется для рабочие книги .. которые теперь имеют различные расширения. , новый несохраненный Book1 не имеет доп , работает одинаково для файлов

Читайте также:  Generic утилита для форматирования

Функция WorkbookIsOpen (FWNa $, необязательный AnyExt As Boolean = False) As Boolean

Конечная функция [/код]

Это получает тип файла, начиная с последнего символа (поэтому избегает проблемы с точками в именах файлов)

Обо всём, что мне интересно

Полезные команды VBA

Пополняемый список полезных отрывков кода VBA для выполнения часто востребованных действий в MS Excel.

Служебные команды для ускорения скорости выполнения макроса:

‘Отключение отображения выполняемых действий Application.ScreenUpdating = False ‘Предотвращение появления предупреждающих сообщений Application.DisplayAlerts = False ‘Предотвращение появления предупреждения об обновлении связей данных Application.AskToUpdateLinks = False ‘Очистка буфера обмена Application.CutCopyMode = False

Проверка имени пользователя, запустившего макрос:

Чтобы проверить, какой пользователь открыл книгу Excel можно использовать один из следующих вариантов:

If Application.UserName = "Имя_автора_документа" Then .

If Environ("username") = "user" Then .

Поиск последней строки таблицы:

Set myWSheet = ThisWorkbook.Sheets("Имя_листа") With myWSheet ‘Определение индекса последней строки таблицы lastRow = .Cells(Rows.Count, 1).End(xlUp).Row ‘Определение значения в ячейки последней строке столбца A lastARow = .Range("A" & lastRow).Value End With

Замена формулы на значение:

Добавление нового листа с именем после всех существующих:

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "Имя_листа"

Как узнать последний день предыдущего месяца:

LastMonthDay = DateAdd("d", -1, DateSerial(Year(dtDate), Month(dtDate), 1))

Определение оставшихся дней месяца:

dToEndOfMonth = DateDiff("d", dFrom, DateAdd("d", -1, _ DateSerial(Year(dFrom), Month(dFrom) + 1, 1)))

Номер текущего дня в неделе (воскресенье — первый день):

DayOfWeek = DatePart("w", dToday)

Создание нового файла из текущего:

pathNewBook = "C:Temp" nameNewBook = "Имя_нового_файла.xls" Workbooks.Add ActiveWorkbook.SaveAs Filename:=pathNewBook & nameNewBook ActiveWorkbook.Close True

Сохранить текущий файл в формате CSV

Чтобы при сохранении файла в формате CSV, вместо запятых в качестве разделителя использовалась точка с запятой, следует использовать подобный код:

ActiveWorkbook.SaveAs FileName:="Name.csv", FileFormat:=xlCSV, _ CreateBackup:=False, Local:=True ActiveWorkbook.Saved = True ActiveWorkbook.Close True

Копирование данных из одного файла в другой:

Читайте также:  Дан параллелограмм abcd на продолжении диагонали ac

wbPath = "C:Temp" wbName = "Имя_файла_откуда_копируем.xls" Workbooks.Open (wbPath & wbName) Set WB = Workbooks(wbName) WB.Sheets("Лист 1").Range("A1:С10").Copy Sheet("Лист_в_текущем_файле").Range("A2").PasteSpecial xlPasteValues

Чтобы открыть файл только для чтения, следует использовать:

Workbooks.Open (Filename:=wbPath & wbName, ReadOnly:=True)

Предотвращение ошибки при неудачном поиске значения в таблице:

Set DateRowObj = WB.Sheets("Имя_листа").Range("A:A")._ Find(What:=dtToAsDate, LookIn:=xlFormulas) If (DateRowObj Is Nothing) Then WB.Close False MsgBox "Данные не найдены." Else DateRow = DateRowObj.Row ‘Номер строки с искомым значением End If

Как получить имя активной книги Excel без его расширения (без .xls либо без .xlsx):

wbName = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") – 1)

Проверка существования файла:

fPath = "C:Temp" fName = "Файл.txt" If Dir(fPath & fName) = "" Then MsgBox "Файл не найден:" & Chr(13) & fPath & fName Exit Sub End If

Кнопка, скрывающая/разворачивающая часть таблицы:

Private Sub tbV ).H >

Обновление сводной таблицы:

currPath = ThisWorkbook.Path currWBName = ThisWorkbook.Name ListName.PivotTables("СводнаяТаблица1").ChangePivotCache ActiveWorkbook. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:=currPath & "[" & _ currWBName & "]Лист1!R1C1:R10C5")

Обращение к элементам Frame:

Замена #ДЕЛ/0! в диапазоне:

Selection.Replace What:="#DIV/0!", Replacement:="", LookAt:=xlPart,_ SearchOrder:=xlByRows, MatchCase:=False,_ SearchFormat:=False, ReplaceFormat:=False

Количество строк в отфильтрованной таблице:

Быстро убрать лишние пробелы в диапазоне:

Программно снять защиту с листа:

Работа с диапазоном

Умножить диапазон на число:

ThisWorkbook.Sheets(1).Range("A1:A10") = _ ThisWorkbook.Sheets(1).Evaluate("A1:A10" & "*80")

Добавить ко всем значениям диапазона строку:

ThisWorkbook.Range("A1:A10").Value = _ Evaluate("=""" & addTxt & """ & " & ThisWorkbook.Range("A1:A10").Address)

Сортировка выбранного столбца в сводной таблице

Col = Selection.Column ‘Номер выбранного столбца ColMax = ActiveSheet.PivotTables("СводнаяТаблица").PivotColumnAxis. _ PivotLines.Count If Col – 1

Поиск файлов в папке

Dim strDirPath, strMaskSearch, strFileName as String strDirPath = "C:/test/" ‘Папка поиска strMaskSearch = "*.xls*" ‘Маска поиска ‘Получаем первый файл соответствующий шаблону strFileName = Dir(strDirPath & strMaskSearch) Do While strFileName <> "" ‘До тех пор пока файлы "не закончатся" MsgBox strFileName strFileName = Dir ‘Следующий файл Loop

Комментировать
751 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector