• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Farklı kaydet diyalog penceresi

Katılım
15 Temmuz 2012
Mesajlar
2,802
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Merhaba arkadaşlar hayırlı geceler.

Ekte göndermiş olduğum excel sayfamın O1 hücresine formülle sayfanın adını otomatik getiriyor, sayfamın adı İŞLEMLER sayfasıdır.

Sayfa üzerinde değişiklik yapılıp kaydet dediğimde farklı kaydet çıkıyor, normal kapat (çarpıdan) butonundan kapat dediğimde vbYesNoCancel mesaj kutusu ekrana geliyor, buradaki kodları forumdan yararlanarak ayarlayabildim, buraya kadar her şey normal.

Benim yapmak istediğim kapatma (çarpıya) bastığımda vbYesNoCancel bu mesaj kutusu ekrana geldiğinde Evet butonuna bastığımda O1 hücresi İŞLEMLER kelimesine eşitse farklı kaydet çıkıyor, buradaki farklı kaydet penceresinden iptal butonuna bastığımda farklı kaydet penceresinin kapanıp excel sayfasının açık kalmasını istiyorum.

Yardım eder misiniz?
 

Ekli dosyalar

Son düzenleme:
Merhaba sayın ASLAN7410 ; BeforeClose (KapanmadanÖncesi) kod parçacığında kodlarınız bulunuyor. Ve bu yüzden siz o safhada kaydet yerine kapat deseniz bile kodun asıl görevini yerine getirmesi gerekiyor. Bu nedenle dosyanız kapanıyor. Konu ile ilgili pek bilgim yok fakat farklı bir prosedür üzerinde denerseniz deneme yanılma yöntemi ile bulabilirsiniz diye düşünüyorum.
 
Sayın TEGCreative ilginiz için çok teşekkür ederim.

Kod yazmaktan anlamadığım için bu kodları forumdan bularak bu şekle getirmiştim.

Benim istediğim oluşturmuş olduğum bu kodlardaki kapat (çarpı) butonuna bastığımda
vbYesNoCancel mesaj kutusu geliyor, buradan evet'e bastığımda farklı kaydet diyalog penceresi geliyor buraya kadar herşey normal.

Diyalog penceresindeki iptal butonuna bastığımda sayfayı kaydedip kapatıyor,
benim istediğim bu diyalog penceresindeki iptal butonuna bastığımda sayfayı kaydetmeyip sayfa kapanmasın istiyorum.
 
Merhaba.

ÇARPI düğmesine basılmasından itibaren tüm senaryo seçenekleri için (aşağıdaki gibi) ayrı aynı yazarak açıklayın.
.
Kod:
[SIZE="2"]    EVET/HAYIR/İPTAL sorusu geldi.
        A. EVET seçildi
            FARKLI KAYDET EKRANI GELDİ.
            a) KAYDET düğmesine tıklandı
                >> İsim değiştirilmedi (dosyanın kendisinde değişiklik yapılacak)
                >> İsim değiştirildi (yeni dosya yaratılacak)
                     __KAYIT TÜRÜ NE OLACAK (MAKRO İÇEREN/İÇERMEYEN V.S.) ? 
            b) İPTAL düğmesine tıklandı
        B. HAYIR seçildi
        C. İPTAL seçildi[/SIZE]
.
 
Sayın Ömer Bey ilginiz için çok teşekkür ediyorum, hayırlı geceler.

Göndermiş olduğum örnek sayfam benim şablonum yani bu sayfamın bozulmasını istemiyorum,
sayfamın ismi İŞLEMLER sayfasıdır.

EVET/HAYIR/İPTAL mesaj kutusu için,

EVET'e tıkladığımda eğer sayfamın adı İŞLEMLER sayfası ise farklı kaydet
diyalog penceresi açılsın, diyalog penceresinden makro içeren işaretlenip sayfa ismi elle yazıldıktan
sonra KAYDET'e bastığımda kaydedecek. Farklı kaydet penceresindeki İPTAL'e bastığımda İŞLEMLER
sayfasına geri dönsün. Benim gönderdiğim örnekte farklı kaydet penceresindeki İPTAL'e bastığımda sayfayı
kaydedip kapatıyor, ben bunun düzeltilmesini istiyorum.

EVET/HAYIR/İPTAL mesaj kutusundaki HAYIR/İPTAL butonları tam istediğim gibi çalışıyor zaten.
 
Çıkış olay yordamı için bu kodu denermisiniz.

Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.DisplayAlerts = False
    Dim s As Worksheet, soru As Integer
    soru = MsgBox("Değişiklikleri kaydetmek istiyor musunuz?", vbYesNoCancel, "A S L A N")

If soru = vbYes Then

Dim fname As Variant
Dim NewWb As Workbook
Dim FileFormatValue As Long
fname = Application.GetSaveAsFilename(InitialFileName:="", filefilter:= _
" Excel Macro Free Workbook (*.xlsx), *.xlsx," & _
" Excel Macro Enabled Workbook (*.xlsm), *.xlsm," & _
" Excel 2000-2003 Workbook (*.xls), *.xls," & _
" Excel Binary Workbook (*.xlsb), *.xlsb", _
FilterIndex:=2, Title:="Farklı Kaydet")

If fname <> False Then
Select Case LCase(Right(fname, Len(fname) - InStrRev(fname, ".", , 1)))
Case "xls": FileFormatValue = 56
Case "xlsx": FileFormatValue = 51
Case "xlsm": FileFormatValue = 52
Case "xlsb": FileFormatValue = 50
Case Else: FileFormatValue = 0
End Select

        If FileFormatValue = 0 Then
        MsgBox "Dosya türünü seçmediniz."
        Else
        ActiveSheet.Copy
        Set NewWb = ActiveWorkbook
        NewWb.SaveAs fname, FileFormat:=FileFormatValue, CreateBackup:=False
        NewWb.Close False
        Set NewWb = Nothing
        End If
Cancel = True
End

Else

Cancel = True

End If
End If

    
    If soru = vbNo Then
    Saved = True
    End If

    If soru = vbCancel Then
    Cancel = True
    End If
    Application.DisplayAlerts = True
End Sub
 
Sayın Halit Bey ilginiz için ve kodlar için çok teşekkür ediyorum, yazmış olduğunuz kodlar gayet güzel çalışıyor ancak benim istediğim bu değil. Herhalde tam olarak anlatamadım.

Göndermiş olduğum örnek sayfam benim şablonum yani bu sayfamın bozulmasını istemiyorum,
sayfamın ismi İŞLEMLER sayfasıdır. O1 hücresindeki formülde sayfanın ismini getiriyor.

İŞLEMLER isimli sayfamda gerekli değişiklikleri yaptıktan sonra, çarpıdan kapatmak istediğimde EVET/HAYIR/İPTAL mesaj kutusu ekrana geliyor,

EVET'e tıkladığımda eğer sayfamın adı yani O1 hücresinde İŞLEMLER yazıyorsa ise farklı kaydet
penceresi açılsın, diyalog penceresinden makro içeren işaretlenip sayfa ismi elle yazıldıktan
sonra KAYDET'e bastığımda kaydedecek. Farklı kaydet penceresindeki İPTAL'e bastığımda İŞLEMLER sayfasına geri dönsün. Farklı isimle kaydettiğim sayfada çalışma yapacağım zaman çarpıdan kapatmak istediğimde farklı kaydet penceresinin gelmesini istemiyorum.

Benim gönderdiğim örnekte farklı kaydet penceresindeki İPTAL'e bastığımda sayfayı kaydedip kapatıyor, ben bunun düzeltilmesini istiyorum.

EVET/HAYIR/İPTAL mesaj kutusundaki HAYIR/İPTAL butonları tam istediğim gibi çalışıyor zaten.
 
kod:

Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Dim s As Worksheet, soru As Integer
soru = MsgBox("Değişiklikleri kaydetmek istiyor musunuz?", vbYesNoCancel, "A S L A N")

If soru = vbYes Then

If Cells(1, "O").Value = "İŞLEMLER" Then

Dim fname As Variant
Dim NewWb As Workbook
Dim FileFormatValue As Long
fname = Application.GetSaveAsFilename(InitialFileName:="", filefilter:= _
" Excel Macro Free Workbook (*.xlsx), *.xlsx," & _
" Excel Macro Enabled Workbook (*.xlsm), *.xlsm," & _
" Excel 2000-2003 Workbook (*.xls), *.xls," & _
" Excel Binary Workbook (*.xlsb), *.xlsb", _
FilterIndex:=2, Title:="Farklı Kaydet")

Dim fL As Object
Set fL = CreateObject("Scripting.FileSystemObject")
uzanti = fL.GetExtensionName(fname)

If uzanti = "xls" Then
FileFormatNum = -4143
ElseIf uzanti = "xlsm" Then
FileFormatNum = 52
ElseIf uzanti = "xlsx" Then
FileFormatNum = 51
ElseIf uzanti = "xlsb" Then
FileFormatNum = 50
Else
FileFormatNum = 0
End If


If fname <> False Then
If FileFormatNum = 0 Then
MsgBox "Dosya türünü seçmediniz."
Else


ActiveSheet.Copy
Set NewWb = ActiveWorkbook
NewWb.SaveAs fname, FileFormat:=FileFormatNum, CreateBackup:=False
NewWb.Close False
Set NewWb = Nothing
End If
Cancel = True
End

Else
Cancel = True
End If
Else
MsgBox Cells(1, "O").Value
Cancel = True
End
End If
End If


If soru = vbNo Then
Saved = True
End If

If soru = vbCancel Then
Cancel = True
End If
Application.DisplayAlerts = True
End Sub
 
Sayın Halit Bey ellerinize sağlık kodlar için çok teşekkürler, kodlar tıkır tıkır çalışıyor. Kusura bakmayın sizi yoruyorum.

Ancak yine benim istediğim gibi olmadı, sizin kodları İŞLEMLER isimli sayfaya uyguladığımda normal kaydet dediğimde kaydediyor, kaydet'e bastığımda eğer sayfanın adı İŞLEMLER ise kaydetmesin, değilse kaydetsin. Benim gönderdiğim örnekte bu işlemde farklı kaydet penceresi geliyordu.

Ayrıca kaydet veya Ctrl+S'ye bastığımda normal olarak farklı kaydet penceresi geldiğinde, makro içerebilen excel çalışma kitabı kısmı işaretli geliyor, bura için koda gerek yok.

Normal kaydet'e bastığımda veya Ctrl+S yaptığımda farklı kaydet geliyor, burada iptal'i tıkladığımda sayfa açık kalıyor. Benim yapmak istediğim çarpıdan çıkmak istediğimdede Evet'i tıkladığımda farklı kaydet penceresinin gelmesini istiyorum, burada iptali tıkladığımda sayfayı kaydetmesin ve sayfa açık kalsın.
 
Sayın Halit Bey ellerinize sağlık kodlar için çok teşekkürler, kodlar tıkır tıkır çalışıyor. Kusura bakmayın sizi yoruyorum.

Ancak yine benim istediğim gibi olmadı, sizin kodları İŞLEMLER isimli sayfaya uyguladığımda normal kaydet dediğimde kaydediyor, kaydet'e bastığımda eğer sayfanın adı İŞLEMLER ise kaydetmesin, değilse kaydetsin. Benim gönderdiğim örnekte bu işlemde farklı kaydet penceresi geliyordu.

Ayrıca kaydet veya Ctrl+S'ye bastığımda normal olarak farklı kaydet penceresi geldiğinde, makro içerebilen excel çalışma kitabı kısmı işaretli geliyor, bura için koda gerek yok.

Normal kaydet'e bastığımda veya Ctrl+S yaptığımda farklı kaydet geliyor, burada iptal'i tıkladığımda sayfa açık kalıyor. Benim yapmak istediğim çarpıdan çıkmak istediğimdede Evet'i tıkladığımda farklı kaydet penceresinin gelmesini istiyorum, burada iptali tıkladığımda sayfayı kaydetmesin ve sayfa açık kalsın.

kod söylediğiniz her şeyi yapıyor.
herhalde siz fark etmediniz.

kodu eklediğiniz kod sayfasında başka hiç bir kod olmasın.

görüntülü video ekliyorum.

görsel video
 
sayfamın ismi İŞLEMLER sayfasıdır. O1 hücresindeki formülde sayfanın ismini getiriyor.

İŞLEMLER isimli sayfamda gerekli değişiklikleri yaptıktan sonra, çarpıdan kapatmak istediğimde EVET/HAYIR/İPTAL mesaj kutusu ekrana geliyor,

EVET'e tıkladığımda eğer sayfamın adı yani O1 hücresinde İŞLEMLER yazıyorsa ise farklı kaydet
penceresi açılsın, diyalog penceresinden makro içeren işaretlenip sayfa ismi elle yazıldıktan
sonra KAYDET'e bastığımda kaydedecek. Farklı kaydet penceresindeki İPTAL'e bastığımda İŞLEMLER sayfasına geri dönsün. Farklı isimle kaydettiğim sayfada çalışma yapacağım zaman çarpıdan kapatmak istediğimde farklı kaydet penceresinin gelmesini istemiyorum.

Benim gönderdiğim örnekte farklı kaydet penceresindeki İPTAL'e bastığımda sayfayı kaydedip kapatıyor, ben bunun düzeltilmesini istiyorum.

EVET/HAYIR/İPTAL mesaj kutusundaki HAYIR/İPTAL butonları tam istediğim gibi çalışıyor zaten.


Ancak yine benim istediğim gibi olmadı, sizin kodları İŞLEMLER isimli sayfaya uyguladığımda normal kaydet dediğimde kaydediyor, kaydet'e bastığımda eğer sayfanın adı İŞLEMLER ise kaydetmesin, değilse kaydetsin. Benim gönderdiğim örnekte bu işlemde farklı kaydet penceresi geliyordu.

yukarıdaki 7 nolu mesajındaki ifadeler ile 9 nolu mesajınızdaki ifadeler farklı gibi geliyor bana 7 nolu mesajınızda O1 hücresi var diğer mesajınızda İŞLEMLER sayfası kaydetmesin ne demek bu anlamadım
 
Sayın Halit Bey, 8.mesajınızdaki kodu İŞLEMLER isimli sayfamın BuÇalışmaKitabı kısmının kod kısmına yapıştırdım.

Sayfa üzerindeki herhangi bir hücreye birşey yazıp kaydet veya Ctrl+S yaptığımda kaydediyor. Benim istediğim burada sayfanın ismi İŞLEMLER olduğu için kaydetmemesi ve farklı kaydet penceresinin gelmesi lazım, sayfa ismi başka isim olduğunda kaydetsin.

Sayfayı çarpıdan kapatmak istediğimde ekrana gelen mesaj kutusundan Evet'i tıkladığımda farklı kaydet penceresi geliyor burada farklı bir isim yazıp kaydet diyorum, kaydedilen sayfayı açtığımda vba tarafındaki kodların hepsi silinmiş olduğunu gördüm.
İŞLEMLER sayfamın alt sayfası olarak 40 adet sayfa bu ana sayfaya bağlı olduğu için bütün kodlar gidiyor, benim istediğim kodlarıda kaydetmesi ve farklı kaydedilen sayfanın ismi İŞLEMLER haricinde olduğu için farklı kaydet gelmemesini istiyorum.
 
Sayın Halit Bey, 8.mesajınızdaki kodu İŞLEMLER isimli sayfamın BuÇalışmaKitabı kısmının kod kısmına yapıştırdım.

Sayfa üzerindeki herhangi bir hücreye birşey yazıp kaydet veya Ctrl+S yaptığımda kaydediyor. Benim istediğim burada sayfanın ismi İŞLEMLER olduğu için kaydetmemesi ve farklı kaydet penceresinin gelmesi lazım, sayfa ismi başka isim olduğunda kaydetsin.

Sayfayı çarpıdan kapatmak istediğimde ekrana gelen mesaj kutusundan Evet'i tıkladığımda farklı kaydet penceresi geliyor burada farklı bir isim yazıp kaydet diyorum, kaydedilen sayfayı açtığımda vba tarafındaki kodların hepsi silinmiş olduğunu gördüm.
İŞLEMLER sayfamın alt sayfası olarak 40 adet sayfa bu ana sayfaya bağlı olduğu için bütün kodlar gidiyor, benim istediğim kodlarıda kaydetmesi ve farklı kaydedilen sayfanın ismi İŞLEMLER haricinde olduğu için farklı kaydet gelmemesini istiyorum.

yukarıdaki mesajıma görsel video ekledim onu irdeledinizmi.

ayrıca farklı kaydet seçeneğinde sayfayımı farklı kaydedecek yoksa mevcut aktif dosyayımı.?
 
Sayın Halit Bey benim düşündüğüm O1 hücresine dosyanın ismini formülle almıştım, ondan dolayıda sayfamın ismi İŞLEMLER sayfasıdır, basitçe O1 hücresinde İŞLEMLER yazmıyorsa farklı kaydet çıksın, değilse dosyayı kaydetmesini istemiştim.

Ayrıca videoyu izledim, mevcut aktif dosyayı komple farklı kaydetmesi gerekiyor.
 
Sayın Halit Bey benim düşündüğüm O1 hücresine dosyanın ismini formülle almıştım, ondan dolayıda sayfamın ismi İŞLEMLER sayfasıdır, basitçe O1 hücresinde İŞLEMLER yazmıyorsa farklı kaydet çıksın, değilse dosyayı kaydetmesini istemiştim.

Ayrıca videoyu izledim, mevcut aktif dosyayı komple farklı kaydetmesi gerekiyor.

kod:

Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Dim s As Worksheet, soru As Integer
soru = MsgBox("Değişiklikleri kaydetmek istiyor musunuz?", vbYesNoCancel, "A S L A N")

If soru = vbYes Then

If Cells(1, "O").Value <> "İŞLEMLER" Then

Dim fname As Variant
Dim NewWb As Workbook
Dim FileFormatValue As Long
fname = Application.GetSaveAsFilename(InitialFileName:="", filefilter:= _
" Excel Macro Enabled Workbook (*.xlsm), *.xlsm,", _
FilterIndex:=1, Title:="Farklı Kaydet")

If fname <> False Then
Dim fL As Object
Set fL = CreateObject("Scripting.FileSystemObject")
uzanti = fL.GetExtensionName(fname)
Dosya = ThisWorkbook.FullName
kayıt_yeri = fname
Save
fL.CopyFile Dosya, kayıt_yeri
MsgBox kayıt_yeri & Chr(10) & "Dosya kayıt edildi"
Cancel = True
End
End If
Cancel = True
End

Else

Cancel = True
End
End If
End If


If soru = vbNo Then
Saved = True
End If

If soru = vbCancel Then
Cancel = True
End If
Application.DisplayAlerts = True
End Sub
 
Sayın Halit Bey çok güzel oldu, kodlar güzel çalışıyor.

Küçük bir sorun var, normal kaydet'e bastığımda veya Ctrl+S'ye bastığımda sayfanın ismi İŞLEMLER sayfası ise farklı kaydet çıkması gerekiyor, değilse kaydetsin.
 
Sayın Halit Bey çok güzel oldu, kodlar güzel çalışıyor.

Küçük bir sorun var, normal kaydet'e bastığımda veya Ctrl+S'ye bastığımda sayfanın ismi İŞLEMLER sayfası ise farklı kaydet çıkması gerekiyor, değilse kaydetsin.

o iş olmaz!
kaydet menüsüne hükmetmek lazım onun içinde kaydet menüsünü pasıf yapmak gerekir ve komut düğmesiyle kayıt işlemini gerçekleştirmek gerekir bu işlemler baya uzun iş sitede buna benzer örnekler mevcut arama yapınız.

aramaya bunu yazın ve çıkan sonuçları irdeleyiniz.(Application.CommandBars)

veya bu adrese bir bakın

http://www.excel.web.tr/f48/kaydet-farkly-kaydet-ta-y-veya-kopyala-pasif-t59998.html
 
Sayın Halit Bey ilgilendiğiniz için yine de çok teşekkür ediyorum, Allah razı olsun hayırlı çalışmalar.
 
Geri
Üst