ファイル名に基づいてワークシートの名前を自動的に変更する


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ファイル名がcmd?で変更された場合 :)
nixda
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.