Автоматически переименовывать рабочий лист на основе имени файла

0

Я хочу переименовать свой первый лист или вкладку в Excel на основе имени файла. Если я изменю имя файла, я хочу, чтобы первый лист автоматически переименовывался. Я не хочу, чтобы .xlsx был включен. Я попробовал этот макрос:

Sub RenameSheet()
Dim myname
myname = Replace(ActiveWorkbook. Name, ".xls", "")
    ActiveSheet.Select
    ActiveSheet.Name = myname
    Range("A1").Select
End Sub

но он не переименовывается автоматически.

Грейс
источник
спасибо за вашу помощь .. у меня есть еще один вопрос. Какую формулу я могу поместить в свою ячейку A2, чтобы имя моего файла автоматически появлялось в этой ячейке?
Благодать

Ответы:

2

Вставьте этот код под ThisWorkbook. Он переименует ваш первый лист в соответствии с вашим текущим именем файла.

Помните, что вы не можете изменить имя файла, пока сам файл открыт в Excel. Благодаря этому вы можете использовать Workbook_open()событие, которое запускается один раз при открытии файла.

InStrRev ищет справа налево первые вхождения точки (.), Чтобы узнать, где отключить расширение с помощью функции Left .

Private Sub Workbook_open()
    Count = InStrRev(ThisWorkbook.Name, ".")
    If Count > 0 Then
        Sheets(1).Name = Left(ThisWorkbook.Name, Count - 1)
        Sheets(1).Range("A2") = Left(ThisWorkbook.Name, Count - 1)
    End If
End Sub

введите описание изображения здесь

nixda
источник
Не будет ли это делать каждый раз, когда файл открывается, даже если он больше не нужен?
Мартино
@martineau Как я понимаю вопрос, это именно то, что он / она хочет: Automatically rename [...]иbut it's not automatically renamed.
nixda
Да, я полагаю, что он должен остаться на месте, если имя файла будет изменено позже. +1
мартино
Я бы проверил, если Count > 0. Если нет, то используйте ThisWorkbook.Name.
Peon
@peon В случае, если имя файла переименовано через cmd? :)
nixda