• DİKKAT

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

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

Katılım
17 Aralık 2008
Mesajlar
780
Excel Vers. ve Dili
Microsoft 365
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 ?
 
Merhaba,

Kullandığınız kod nedir. Neden böyle bir işleme ihtiyacınız var?
 
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.
 
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
 
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ı.
 
Önerdiğim koda dosya uzantısını (.xlsm) da ekledim. Siz de aynı şekilde deneyiniz.
 
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ı.
 
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.
 
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
 
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
 
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 ? :)
 
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:
Rica edim
 
Geri
Üst