• DİKKAT

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

tüm kapalı kitaplara aynı makroyu uygulamak

Katılım
28 Şubat 2005
Mesajlar
707
Excel Vers. ve Dili
office 2007 (excel2007)English işte
office 2003 (excel2003)
Türkçe evde
merhaba;
çalışma kitabımda modül içinde bir makro çalışmakta.
ben bu makroyu, herhangi bir klasör içindeki farklı çalışma kitaplarına nasıl uygularım. klasörde 300 adet çalışma sayfası var. ve herişlemi farklı klasörlere de uygulamam gerekecek.
 
Anladığım kadarıyla, makronuzu, oluşturduğunuz çalışma kitabından farklı belgelerde de çalıştırmak istiyorsunuz. Eğer doğru anlamışsam, makroda geçen excelbelgesi adının yerine "thisworkbook" ifadesini kullanabilirsiniz. Bu şekilde, herhangi bir excel belgesine bağımlı kalmamış olursunuz.
 
yapmak istediğim kısaca;
modül içindeki makroyu diğer çalışma kitaplarınada aynı şekilde uyarlamak.
 
Şöyle bir şey yapabilirsiniz;

Diyelim ki TestProc isminde bir kodunuz var ve siz bunu herhangibir Excel dosyasında kullanmak istiyorsunuz.

İlk önce yeni bir Excel dosyası açıp, ilgili kodu bir modüle yerleştirip bu dosyayı XLA olarak kaydediyorsunuz. (Excel'in varsayılan kaydettiği yeri değiştirmeyin.) Yani, bir eklenti dosyası oluşturuyorsunuz ...

Örneğin, aşağıdaki kodu bir dosyaya yerleştirin ve dosyanın adını da MyXLA.xla olarak adlandırın, kaydettikten sonra Excel'i kapatın.

Kod:
Sub TestProc()
    MsgBox "Merhaba !"
End Sub
Şimdi herhangibir Excel dosyası açın ve bir modül ekledikten sonra, aşağıdaki kod yapıştırıp .... çalıştırın.

Kod:
Sub Test()
    Application.Run ("MyXLA.xla!TestProc")
End Sub
Umarım, anlaşılmayan bir şey yoktur ....
 
ilk denemeden sonra gelişmelerle birlikte buraya aktaracağım

teşekkürler
 
merhaba;
teşekkürler syn haluk verdiğiniz bilgilerde bir anlaşmazlık yok. fakat ben bu işi yapamadım.
hata veriyor.
kullandığın kodlar aşağıda
Const strTxtFile As String = "C:\Program Files\Adobe\strTxt.txt"
Sub Auto_Open()
If Dir(strTxtFile) <> Empty Then
ThisWorkbook.IsAddin = False
Else
ThisWorkbook.IsAddin = True
MsgBox "Kayitli kullanici degilsiniz....", vbCritical, "Kullanicinin dikkatine !"
ThisWorkbook.Close SaveChanges:=False
End If
End Sub
bunu bir .xla olarak kay&#305;t ediyorum
sorun yok

Sub Test()
Application.Run ("MyXLA.xla!TestProc")
End Sub

kodunda myxla.xla k&#305;sm&#305;n&#305;da de&#287;i&#351;tirip dosya ad&#305;n&#305; veriyorum. ve de TestProc u da "auto_open" olarak de&#287;i&#351;tiriyorum. :(

hata veren kod sat&#305;r&#305;
If Dir(strTxtFile) <> Empty Then
buna g&#246;re yapmam gereken nedir.
yada yanl&#305;&#351; yapt&#305;&#287;&#305;m yer neresi
 
Sub Test()
Application.Run ("MyXLA.xla!TestProc")
End Sub

kodunda myxla.xla kısmınıda değiştirip dosya adını veriyorum. ve de TestProc u da "auto_open" olarak değiştiriyorum. :(

hata veren kod satırı
If Dir(strTxtFile) <> Empty Then
buna göre yapmam gereken nedir.
yada yanlış yaptığım yer neresi

makro bilen arkadaşlar bana bu konuda yardımcı olabilir mi ?
 
Say&#305;n birol_mumcu ThisWorkbook.IsAddin = True yazd&#305;&#287;&#305;n&#305;z zaman eklenti a&#231;&#305;lacak ve Auto_Open prosed&#252;r&#252; otomatik &#231;al&#305;&#351;acakt&#305;r sizin ayr&#305;yeten Run ile &#231;al&#305;&#351;t&#305;rman&#305;za gerek yok.

E&#287;er Run ile bir prosed&#252;r &#231;al&#305;&#351;t&#305;rmak istiyorsan&#305;z Excel taraf&#305;ndan tan&#305;mlanm&#305;&#351; bir prosed&#252;r ad&#305; yerine ba&#351;ka bir isim verdi&#287;iniz prosed&#252;r&#252; &#231;al&#305;&#351;t&#305;r&#305;n&#305;z. &#199;&#252;nk&#252; Auto_Open, Auto_Close gibi prosed&#252;r isimleri zaten Excel taraf&#305;ndan tan&#305;mlanm&#305;&#351; ve otomatik &#231;al&#305;&#351;an prosed&#252;rlerdir.
 
Sayın birol_mumcu ThisWorkbook.IsAddin = True yazdığınız zaman eklenti açılacak ve Auto_Open prosedürü otomatik çalışacaktır sizin ayrıyeten Run ile çalıştırmanıza gerek yok.

kod içindeki ThisWorkbook.IsAddin = False satırındaki değişikliği yaptım
çalışıyor yanlız sadece "book1.xla" dosyasında.
eğer ilgili dosya yoksa, "kayıtlı kullanıcı değilsiniz uyarısı" geliyor.
buraya kadar tamam
şimdi bu işlemi tüm kitaplara nasıl uygulayacağız ?
 
Bir başka eklenti daha oluşturun. Bu eklenti her zaman eklenmiş olsun. Bu eklenti içerisine yazacağınız kod ile diğer eklentinin çalıştırılıp çalıştırılmayacağını kontrol edebilirsiniz.
 
anlamad&#305;m.
&#246;rneklermisin veya ba&#351;ka bir eklentiyi &#231;al&#305;&#351;t&#305;racak 2. eklentiyi syn haluk'un anlatt&#305;&#287;&#305; gibi mi yapaca&#287;&#305;z. (yukar&#305;daki sorumda anlatmaya &#231;al&#305;&#351;t&#305;&#287;&#305;m &#351;ekilde bir &#246;rnek olursa daha iyi anlayaca&#287;&#305;m)
akl&#305;ma gelmi&#351;ken hemen soray&#305;m. daha sonra 2. eklentiyi de &#231;al&#305;&#351;t&#305;racak bir 3. eklenti gerekecek mi?
 
Anladığım kadarıyla yapmak istediğiniz; uygulamanızın yetkisiz kişiler tarafından kullanılmasını engellemek. Eğer kullanıcı yetkili ise eklenti aktif olacak değilse aktif olmayacak.
Doğru anlamış mıyım? Yada siz detaylı açıklarsanız daha iyi olur.
 
evet do&#287;ru anlam&#305;&#351;s&#305;n&#305;z.
yapmaya &#231;al&#305;&#351;t&#305;&#287;&#305;m;
kullan&#305;lan &#231;al&#305;&#351;ma sayfas&#305; bir bilgisayarda kay&#305;tl&#305; olacak.
e&#287;er di&#287;er bilgisayara kopyalan&#305;rsa &#231;al&#305;&#351;mayacak.
bunu istememin sebebi giri&#351;yap&#305;l&#305;rken veya kay&#305;t al&#305;n&#305;rken ayn&#305; dosya &#252;zerinden &#231;al&#305;&#351;ma yap&#305;ls&#305;n.
bu i&#351;lem dosyan&#305;n kopyalanmas&#305;n&#305; da engelleyecek.
iste&#287;im bu ama benim makrolar konusunda &#231;ok fazla bilgim yok. bu y&#252;zden yapamad&#305;m. (ke&#351;ke form&#252;lle halledebilsem ama yok) :)
 
Const strTxtFile As String = "C:\Program Files\Adobe\strTxt.txt"
Sub Auto_Open()
If Dir(strTxtFile) <> Empty Then
ThisWorkbook.IsAddin = False
Else
ThisWorkbook.IsAddin = True
MsgBox "Kayitli kullanici degilsiniz....", vbCritical, "Kullanicinin dikkatine !"
ThisWorkbook.Close SaveChanges:=False
End If
End Sub
bu kodlar anlad&#305;&#287;&#305;m kadar&#305;yla "&#351;u dosya yoksa uyar&#305; ver ve dosyay&#305; a&#231;ma" anlam&#305;nda
e&#287;er kopya al&#305;n&#305;p ba&#351;ka bilgisayarda &#231;al&#305;&#351;t&#305;rl&#305;rsa, bilgisayarda makro g&#252;venli&#287;i "y&#252;ksek"se bu &#231;al&#305;&#351;mayacak ve dosya a&#231;&#305;lacak.
di&#287;er yandan ise eklenti olarak haz&#305;rlanacak dosya da ara&#231;lar>eklenilerden aktif hale getirlmesi gerek.
 
O zaman hiç eklentiyle falan uğraşmaya gerek yok. Uygulamanızın çalıştığı bilgisayarın HD Seri Nosunu kontrol edelim, eğer listemizde yoksa uygulama çalışmasın.
 
O zaman hiç eklentiyle falan uğraşmaya gerek yok. Uygulamanızın çalıştığı bilgisayarın HD Seri Nosunu kontrol edelim, eğer listemizde yoksa uygulama çalışmasın.

diyelimki belge kopyalandı ve başka bilgisayara kayıt edildi (ki belge önemli ve gizli kesinlikle kopyalanmamalı)
makro güvenliği yüksekse de çalışabilecekmi
 
Dosyanızın tüm sayfalarını öncelikle gizlemeliyiz.
Makro seviyesi düşük olan bilgisayarda uygulama çalışacak ve HDD seri no kontrol edecek doğruysa uygulamanız çalışacak sayfalar gösterilecek, yanlışsa çalışmayacak
Makro seviyesi yüksekse sayfalar gizli olduğundan zaten kullanıcı sayfalara ulaşamayacak.
 
s&#246;yldi&#287;iniz &#351;ekilde de olablir.
 
Selamlar,

Konuyla ilgili örnek bir dosya hazırladım. İlk olarak dosyayı makroları etkinleştirerek açın. Ekrana mesaj ile sizin HDD numaranız gelecektir. Bu numarayı bir yere yazın. Daha sonra dosyayı makroları etkinleştirmeden açın. HDD numaranızı koddaki aşağıdaki kısıma yazın. VBA penceresine uzun ve hatırlayacağınız bir şifre vererek dosyanızı bu haliyle kaydedip kapatın. Artık VBA şifreniz çözülene kadar dosyanız başka bilgisayarda çalışmayacaktır. Umarım faydası olur.

Kod:
If Seri_No <> [color=blue][B]1234567890[/B][/color] Then


Not : Dosyanın VBA şifresi ++COST_CONTROL++
 
Burda bir&#351;eye dikkatinizi &#231;ekmek istedim.Hdd numaras&#305;na g&#246;re g&#252;venlik ayar&#305; yapmak sadece ba&#351;ka bilgisayar i&#231;in de&#287;il sizin bilgisayar&#305;n&#305;z i&#231;inde engelleme yapabilir.&#199;&#252;nk&#252; e&#287;er format atarsan&#305;z HDD numaras&#305; de&#287;i&#351;ecektir.B&#246;ylece kendi bilgisayar&#305;n&#305;zdada dosya eri&#351;imi engellenmi&#351; olacakt&#305;r.Bunun yerien CPU nosu ile &#231;al&#305;&#351;&#305;lmas&#305; bence biraz daha sa&#287;lam olabilir.
 
Geri
Üst