Excel otomatik dosya isimlendirme

  • Konbuyu başlatan Konbuyu başlatan fsozkan
  • Başlangıç tarihi Başlangıç tarihi
Katılım
28 Mayıs 2025
Mesajlar
5
Excel Vers. ve Dili
tr ms 365
Merhaba

Excel dosyasının adını her seferinde günün tarihi yapmak ile uğraşmak istemiyorum. Dosyayı hazırladığım da ve direkt kaydettiğimde "dosya adı tarih " şeklinde olsun istiyorum. Bununla ilgili komut var mıdır ? Yardımlarınızı rica ederim.
 
Merhaba,

Bu işlemi varolan kullandığınız bir dosya için mi istiyorsunuz? Yoksa yeni bir Excel dosyasında çalışıp kaydetmek istediğinizde mi kullanmak istiyorsunuz?
 
Merhaba
Evet kullandığım bir raporda kullanacağım
 
Öncelikle önerimin çalışması için dosyanızın XLSM (Makro) uzantılı olması gerekir.

Bunun için dosyanızı Makro İçerebilen Excel Çalışma Kitabı biçiminde kayıt ediniz.

Sonra aşağıdaki kodu dosyanızın ThisWorkbook (BuÇalışmaKitabı) bölümüne uygulayınız ve dosyanızı bir kez Ctrl+S ile kayıt ediniz.

Bu aşamadan sonra;

Ctrl+S ile kayıt ettiğinizde normal kayıt edebilirsiniz. Fakat farklı kaydet derseniz Dosya Adı_21-10-2026.xlsm olarak kayıt eder.

C++:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        Cancel = True
        Application.Dialogs(xlDialogSaveAs).Show _
            ThisWorkbook.Path & "\" & _
            Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1) & _
            "_" & Format(Date, "dd-mm-yyyy") & _
            Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, "."))
    End If
End Sub
 
Öncelikle önerimin çalışması için dosyanızın XLSM (Makro) uzantılı olması gerekir.

Bunun için dosyanızı Makro İçerebilen Excel Çalışma Kitabı biçiminde kayıt ediniz.

Sonra aşağıdaki kodu dosyanızın ThisWorkbook (BuÇalışmaKitabı) bölümüne uygulayınız ve dosyanızı bir kez Ctrl+S ile kayıt ediniz.

Bu aşamadan sonra;

Ctrl+S ile kayıt ettiğinizde normal kayıt edebilirsiniz. Fakat farklı kaydet derseniz Dosya Adı_21-10-2026.xlsm olarak kayıt eder.

C++:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        Cancel = True
        Application.Dialogs(xlDialogSaveAs).Show _
            ThisWorkbook.Path & "\" & _
            Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1) & _
            "_" & Format(Date, "dd-mm-yyyy") & _
            Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, "."))
    End If
End Sub
Hocam merhaba

Çalıştıramadım kodu. Nerede hata yapıyorum
 
Nasıl uyguladınız?
 
Merhaba

Yukarıda belirttiğiniz adımları uyguladım , çalıştıramadım
 
Bu şekilde deneyiniz.

Cancel = True komut satırı Farklı Kaydet penceresini engelliyordu. Daha kontrollü bir yapı kurdum.

C++:
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim fso As Object
    Dim baseName As String
    Dim ext As String
    Dim fullName As String
    Dim chosen As Variant

    If Not SaveAsUI Then Exit Sub

    ' Excel'in kendi SaveAs dialogunu engelle
    Cancel = True

    ' FileSystemObject ile ad ve uzantıyı ayır
    Set fso = CreateObject("Scripting.FileSystemObject")
    baseName = fso.GetBaseName(ThisWorkbook.Name)
    ext = fso.GetExtensionName(ThisWorkbook.Name)
    If Len(ext) = 0 Then ext = "xlsm"

    ' Önerilen tam dosya adı (uzantının başına nokta ekliyoruz)
    fullName = ThisWorkbook.Path & "\" & baseName & "_" & _
               Format(Date, "dd-mm-yyyy") & "." & ext

    ' Kaydetme diyalogunu aç, önerilen adı başlangıç değeri olarak ver
    chosen = Application.GetSaveAsFilename( _
                InitialFileName:=fullName, _
                FileFilter:="Excel Dosyaları (*." & ext & "),*." & ext)

    ' Kullanıcı iptal ettiyse çık
    If chosen = False Then Exit Sub

    ' Kaydet — sonsuz döngüye girmemek için event'leri kapat
    Application.EnableEvents = False
    On Error GoTo CleanUp
    ThisWorkbook.SaveAs Filename:=CStr(chosen)
CleanUp:
    Application.EnableEvents = True
    Set fso = Nothing
End Sub
 
Geri
Üst