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


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

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


Не будет ли это делать каждый раз, когда файл открывается, даже если он больше не нужен?
Мартино

@martineau Как я понимаю вопрос, это именно то, что он / она хочет: Automatically rename [...]иbut it's not automatically renamed.
nixda

Да, я полагаю, что он должен остаться на месте, если имя файла будет изменено позже. +1
мартино

Я бы проверил, если Count > 0. Если нет, то используйте ThisWorkbook.Name.
Peon

@peon В случае, если имя файла переименовано через cmd? :)
nixda
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.