Çözüldü Dosya Adına Göre Makronun Çalışmasını Engelleme

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
664
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Merhaba;

Aynı makro kodu iki ayrı dosyada da var.
Birisinde çalışmasın ama diğerinde çalışsın istiyorum.
Çalışmasını istemediğim dosyanın adı "Masraf Faturalarını İşle"
Makro kodunun içine hangi kodu yazarsak bunu başarmış olurum ?
Yardım edebilir misiniz ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,755
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Kullandığınız kod nedir. Neden böyle bir işleme ihtiyacınız var?
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
664
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Korhan Bey;

Ana dosyamın adı, Masraf faturalarını işle.
Masraf faturalarını işlerken de kullandığım pek çok makro var.
Bu makroların bazıları formüllü satırları bozuyor.
Bu soruna çözüm olarak ana dosyamı kopyalayıp, kopyalanan dosyada makroları çalıştırıyorum.
Böylece ana dosyamda formüller bozulmamış oluyor.
Bazen dalgınlıkla ana dosya üzerinde makroları çalıştırınca formüller bozuluyor.

Bu soruna çözüm olarak aklıma böyle bir çözüm geldi.
Buraya kodu yazmama gerek olmadığını düşünmüştüm.
Makro kodunun ilk satırlarında "eğer bu makro masraf faturalarını işle adındaki dosyada çalıştırılmak isteniyorsa, makro çalışmamalı" gibi bir kural oluşturulursa işimi görür diye düşündüm.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,755
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki kod bloğunu kendi kodlarınıza uyarlayıp deneyiniz.

C++:
Option Explicit

Sub Test()
    If ActiveWorkbook.Name = "Masraf Faturalarını İşle.xlsm" Then
        MsgBox "Bu makroyu bu dosyada çalıştıramazsınız!", vbCritical
        Exit Sub
    End If
End Sub
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
664
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Sub yirmikdvmatrah()
If ActiveWorkbook.Name = "Masraf Faturalarını İşle" Then
MsgBox "Bu makroyu bu dosyada çalıştıramazsınız!", vbCritical
Exit Sub
ActiveCell.Offset(0, 0).Value = ActiveCell.Offset(0, 0).Value / 0.2
End If
End Sub

Korhan Bey;

Üstteki koda uyarladım.
"Masraf faturalarını işle" dosyasında çalıştı. Benim kodumun çalışmasına izin vermedi.
Siz mesaj kutusu açmışsınız ama o çıkmadı.

"Masraf faturalarını işle - yedek" bu dosyada benim makrolarım çalışması gerekirdi ama onun da çalışmasına izin çıkmadı.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,755
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerdiğim koda dosya uzantısını (.xlsm) da ekledim. Siz de aynı şekilde deneyiniz.
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
664
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Uzantıyı ekledim.

Değişen tek şey, mesaj kutusunun "masraf faturalarını işle" dosyasında çıkması.
"Masraf faturalarını işle - yedek" bu dosyada benim makrolarım çalışması gerekirdi ama onun da çalışmasına izin çıkmadı.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,755
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bazen konularda örnek dosya yada makroları talep etmemizin sebebi budur.. Size göre basit olabileceğini düşündüğünüz çözümler bazen zorlaşabiliyor.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,402
Excel Vers. ve Dili
Office 2013
Merhaba;

Örneği incelemedim ama kodu sadece ilgili dosya adı eşitliğinde çalıştırmaya ayarlamışsınız sanırım.

Yani
Kod:
if dosya_adi="xxxxx" then

....

exit sub

else

'dosya adı "xxxxxx" ten farklıysa çalışmasını istediğiniz kodları aşağıya yazın.

......

.....

end if
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,676
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba,
Kod:
Sub Test3()
    With CreateObject("Scripting.FileSystemObject")
        Filename = .GetFileName(ThisWorkbook.FullName)
        extName = .GetExtensionName(ThisWorkbook.FullName)
        BaseName = .GetBaseName(ThisWorkbook.FullName)
        parentName = .GetParentFolderName(ThisWorkbook.FullName)
    End With
    [A5] = Filename
    [A6] = extName
    [A7] = BaseName
    [A8] = parentName
End Sub
Siteden bir üstadın çalışmasıdır, işinizi görebilir. Kendinize uyarlayınız.
iyi çalışmalar
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
664
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Tevfik Kurşun;

İlgilendiğiniz için teşekkür ederim.
Bu benim gibi düşük kapasiteli birisi için anlaşılması zor bir kod, siz uyarlayabilir misiniz ? :)
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,676
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Arkadaşım,
Estağfurullah. Benim yazdığım alternatifti. Korhan Hocanın makrosu da gayet düzgün çalışıyor. Tek yapmanız gereken
Kod:
Option Explicit

Sub Test()
    If ActiveWorkbook.Name = "Masraf Faturalarını İşle.xlsm" Then
        MsgBox "Bu makroyu bu dosyada çalıştıramazsınız!", vbCritical
        Exit Sub
    End If
    Call Kendi_Makronuz
End Sub
Kendi_Makronuz yazısı yerine, kendi makronuzun adını yazmak.
İyi çalışmalar
 
Son düzenleme:

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
664
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Şimdi oldu, hatanın nerde olduğunu anladım.
Katkısı olan herkese çok teşekkürler.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,676
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Rica edim
 
Üst