Makro Güvenlik Ayarlarını Yaptırıp Dosyayı Açmak

Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Değerli Arkadaşlar,

Excel VBA ile program yapan arkadaşların herhalde en muzdarip oldukları konu makro ayarlarıdır.

Acaba şöyle bir yöntem çözüm olabilir mi?

Visual Studio veya Visual Basic ile hazırlanacak bir proje ile evvela Office sürümü tespit edilecek ve
sürüme göre ekteki programlar çalıştırılacak. İşlem bittikten sonra da Excel dosyamız açılacak.

Bilgisi olan arkadaşlar yardımcı olursa, belki bu şekilde çözüm üretebiliriz.



2007, 2013 ve 2016 için scriptler ektedir.
Makro içeren dosyanızı açmadan önce Oficce sürümünüze
göre scriptinizi seçin ve çalıştırın.
 

Ekli dosyalar

Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Değerli Arkadaşlar,

Excel VBA ile program yapan arkadaşların herhalde en muzdarip oldukları konu makro ayarlarıdır.

Acaba şöyle bir yöntem çözüm olabilir mi?

Visual Studio veya Visual Basic ile hazırlanacak bir proje ile evvela Office sürümü tespit edilecek ve
sürüme göre ekteki programlar çalıştırılacak. İşlem bittikten sonra da Excel dosyamız açılacak.

Bilgisi olan arkadaşlar yardımcı olursa, belki bu şekilde çözüm üretebiliriz.

Bahsi geçen -makro ayarlarını yapan- programlar ektedir.

Kullanıcı bu ayarları yapamıyor ise, bu sonuç olarak bir defalık çalıştırılacak bir script.

Ayrıca bir program yazmaya gerek yok, benioku.txt dosyasına yada dosyayı kullanıcıya ulaştırırken, bu dosyayı bir defa çalıştırıp silin demeniz yeterli olur diye düşünüyorum.

Script için de ayrıca teşekkür ederim. Bulmuşken 2010 ve 2016 için de ekleseydiniz.
Gerçi denemedim belki 2013 için olanı 2010 ve 2016 yı destekliyordur.

Not: 2013 dosyasındaki 15.0 ları 16.0 yapınca Excel 2016 da makro güvenliğini düşük yapıp korumalı görünümü kapatıyor.
Dosyaya eklendi.

@BedriA Mesajımdaki dosyayı ilk mesaja taşır mısınız? Karışıklık olmasın.
 

Ekli dosyalar

Son düzenleme:
Katılım
6 Ekim 2004
Mesajlar
250
Excel Vers. ve Dili
MSOffice 2010 TR
Altın Üyelik Bitiş Tarihi
19-11-2020
merhaba ,

Rica etsek dış kaynaktan da paylaşabilir misiniz ?
 

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,790
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Altın Üyelik Bitiş Tarihi
29.03.2025

Ekli dosyalar

Katılım
6 Ekim 2004
Mesajlar
250
Excel Vers. ve Dili
MSOffice 2010 TR
Altın Üyelik Bitiş Tarihi
19-11-2020
tesekkurler...
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Kullanıcı bu ayarları yapamıyor ise, bu sonuç olarak bir defalık çalıştırılacak bir script.

Ayrıca bir program yazmaya gerek yok, benioku.txt dosyasına yada dosyayı kullanıcıya ulaştırırken, bu dosyayı bir defa çalıştırıp silin demeniz yeterli olur diye düşünüyorum.

Script için de ayrıca teşekkür ederim. Bulmuşken 2010 ve 2016 için de ekleseydiniz.
Gerçi denemedim belki 2013 için olanı 2010 ve 2016 yı destekliyordur.

Not: 2013 dosyasındaki 15.0 ları 16.0 yapınca Excel 2016 da makro güvenliğini düşük yapıp korumalı görünümü kapatıyor.
Dosyaya eklendi.

@BedriA Mesajımdaki dosyayı ilk mesaja taşır mısınız? Karışıklık olmasın.
Dosyayı taşıdım ancak şöyle bir sıkıntı olmaz mı acaba?
Biz programımız çalışsın diye makro ayarlarını düşük olarak ayarlıyoruz ve o ayar artık değişmiyor. Bunların düşük olarak ayarlanmasının nedeni,
kötü amaçlı dosyaların vereceği zararı önlemek.

Bahsettiğim şekilde bir şey yapılabilse, açılışta ayarları düşürür, kapanışta yükseltir. Böylece hem program bağımsızlaşır, hem de olası bir zarar önlenmiş olur.
VB veya VS de yapılacak şey çok basit aslında: "Makro ayarlarını yap, programı aç. Programı kapat, makro ayarlarını önerilen ayarlara getir."
Visual Studio ile henüz tanışma aşamasındayız :) , biraz samimiyet oluşunca ilk işlerimden biri bu olacak.
 

Korhan Ayhan

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

Koruma ayarları varsayılan ayarlarda olan bir bilgisayarda excel dosyasının açılışında bu ayarları yapan kodları yazmanız bir şeyi değiştirmeyecektir. Çünkü dosya açılışında kodlardan önce güvenlik ayarları devreye girmektedir.

Bu işlemi ancak harici scriptlerle çözebilirsiniz. Bunlarda zaten konu içeriğinde verildi.

Şöyle bir işlem yapılabilir;

Hazırladığınız excel projesini karşı tarafa gönderirken kurulum biçiminde gönderebilirsiniz.
Karşı taraf bu projeyi kurmak istediğinde, kurulum içindeki script otomatik olarak arka planda çalışarak kullanıcının güvenlik ayarlarını değiştirebilir.

Tabi bu durumda güvenlik ayarı komple değiştiği için diğer güvensiz kaynaklardan oluşabilecek zararlar tehlike yaratabilir.

Benim nacizane tavsiyem, excelden profesyonel programların çalışma mantığını beklemeyin.
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Bedri Bey,

Koruma ayarları varsayılan ayarlarda olan bir bilgisayarda excel dosyasının açılışında bu ayarları yapan kodları yazmanız bir şeyi değiştirmeyecektir. Çünkü dosya açılışında kodlardan önce güvenlik ayarları devreye girmektedir.

Bu işlemi ancak harici scriptlerle çözebilirsiniz. Bunlarda zaten konu içeriğinde verildi.

Şöyle bir işlem yapılabilir;

Hazırladığınız excel projesini karşı tarafa gönderirken kurulum biçiminde gönderebilirsiniz.
Karşı taraf bu projeyi kurmak istediğinde, kurulum içindeki script otomatik olarak arka planda çalışarak kullanıcının güvenlik ayarlarını değiştirebilir.

Tabi bu durumda güvenlik ayarı komple değiştiği için diğer güvensiz kaynaklardan oluşabilecek zararlar tehlike yaratabilir.

Benim nacizane tavsiyem, excelden profesyonel programların çalışma mantığını beklemeyin.
Ben de bir önceki mesajımda bu hususlardan bahsetmiştim. :)
Zamanlama sıkıntısı oldu sanırım.

Açarken düşürecek, kapatırken varsayılan yapacak harici bir şey gerekiyor.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Ben de bir önceki mesajımda bu hususlardan bahsetmiştim. :)
Zamanlama sıkıntısı oldu sanırım.

Açarken düşürecek, kapatırken varsayılan yapacak harici bir şey gerekiyor.
Bu çok kullanışlı olmaz. Bu durumda her xls* dosyası için bir script yazmanız gerekir. Tüm excel dosyaları için bu sistem çalışsın derseniz bu durumda en düşük makro ayarı ile aynı işlemi yapmış olur.

Tüm excel dosyalarının varsayılan programını sizin ara program (makroyu açıp kapatan) yaparsanız bu durumda sistem bütünlüğü bozulur ve office uygulamarı diğer programlar arasında sorunlar yaşanır.

Burada amaç virüslü bir excel dosyasının çalıştırılmasını engellemek ise, açılışta makro onayı ile etkinleştirmenin seçilmesi en uygunu diye düşünüyorum.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Sanırım bu şekilde daha kullanışlı olacaktır.
Herkes bir defada tüm office uygulamalarının makrosunu etkinleştirmek istemeyebilir.

Office Makroları Etkinleştir ve Korumalı Görünümü İptal Et.vbs

* Office sürümü tespit eder,
* kullanıcıdan hangi uygulama için çalıştırılacağı bilgisini alır. 1-Word, 2-Excel, 3-PowerPoint, 4-Access
* İlgili sürümün ilgili programı için makroları etkinleştirir, korumalı görünümü kapatır.

Office Makroları Etkisizleştir ve Korumalı Görünümü Aktif Et.vbs


* Office sürümü tespit eder,
* kullanıcıdan hangi uygulama için çalıştırılacağı bilgisini alır. 1-Word, 2-Excel, 3-PowerPoint, 4-Access
* İlgili sürümün ilgili programı için makroları etkinsizleştirir, korumalı görünümü açar.
 

Ekli dosyalar

Son düzenleme:
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Sanırım bu şekilde daha kullanışlı olacaktır.
Herkes bir defada tüm office uygulamalarının makrosunu etkinleştirmek istemeyebilir.

Office Makroları Etkinleştir ve Korumalı Görünümü İptal Et.vbs

* Office sürümü tespit eder,
* kullanıcıdan hangi uygulama için çalıştırılacağı bilgisini alır. 1-Word, 2-Excel, 3-PowerPoint, 4-Access
* İlgili sürümün ilgili programı için makroları etkinleştirir, korumalı görünümü kapatır.

Office Makroları Etkisizleştir ve Korumalı Görünümü Aktif Et.vbs


* Office sürümü tespit eder,
* kullanıcıdan hangi uygulama için çalıştırılacağı bilgisini alır. 1-Word, 2-Excel, 3-PowerPoint, 4-Access
* İlgili sürümün ilgili programı için makroları etkinsizleştirir, korumalı görünümü açar.
Böyle daha kullanışlı kesinlikle.
Elinize sağlık.

Şimdi kullanıcının bu scriptlerden ilkini programı açmadan önce, ikincisini programı kapattıktan sonra çalıştıracak değil mi?

Benim düşündüğüm şey ise, program excelde yapılmışsa, scripti VS ile hazırlanmış bir arayüzle çalıştırıp ardından excel dosyasını açmak, kapanışta ise kapanış scriptini çalıştırmak.

Farkı şu olacak: Kullanıcı bu etkinleştir-etkinleştirme olayını görmeyecek.
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Tüm excel dosyalarının varsayılan programını sizin ara program (makroyu açıp kapatan) yaparsanız bu durumda sistem bütünlüğü bozulur ve office uygulamarı diğer programlar arasında sorunlar yaşanır.
Bu kısmını bilemiyorum tabi.
Dediğiniz gibi sorun oluşturursa kullanışlı olmaz.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Böyle daha kullanışlı kesinlikle.
Elinize sağlık.

Şimdi kullanıcının bu scriptlerden ilkini programı açmadan önce, ikincisini programı kapattıktan sonra çalıştıracak değil mi?

Benim düşündüğüm şey ise, program excelde yapılmışsa, scripti VS ile hazırlanmış bir arayüzle çalıştırıp ardından excel dosyasını açmak, kapanışta ise kapanış scriptini çalıştırmak.

Farkı şu olacak: Kullanıcı bu etkinleştir-etkinleştirme olayını görmeyecek.
Hayır bu sadece kullanıcının bilgisi dahilinde onun ile etkileşimli olarak aktif ve pasif yapma işlemi için kullanılabilir.

Sizin istediğiniz sadece excel için office sürümüne bakıp aktif ve pasif yapacak bir script. O da bu script ten türetilebilir.

Ancal sizin bu yöntem bana pek kullanışlı gelmedi.
Diyelimki kendi programınız için bunu yaptığınız , kullanıcı kullandı.Kullanım sonrası makrolar pasif oldu.
Kullanıcı başka bir makrolu excel açtığında çalışmayacak. Bu durumda nasıl olacak.
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Hayır bu sadece kullanıcının bilgisi dahilinde onun ile etkileşimli olarak aktif ve pasif yapma işlemi için kullanılabilir.

Sizin istediğiniz sadece excel için office sürümüne bakıp aktif ve pasif yapacak bir script. O da bu script ten türetilebilir.

Ancal sizin bu yöntem bana pek kullanışlı gelmedi.
Diyelimki kendi programınız için bunu yaptığınız , kullanıcı kullandı.Kullanım sonrası makrolar pasif oldu.
Kullanıcı başka bir makrolu excel açtığında çalışmayacak. Bu durumda nasıl olacak.
O zaman makro etkinleştirmeyi Excel Seçenekleri menüsünü kullanarak yapacak. Veya şöyle olacak:

Mümkünse açılışta makro ayarlarının yapılıp yapılmadığı, etkileşimsiz olarak, kontrol edilecek, düşük olarak ayarlanmışsa işlem yapmayacak ve dosyayı açacak; eğer varsayılan olarak ayarlıysa düşük olarak ayarlayacak, ardında da dosyayı açacak.

Kapanışta ise, nasıl olur bilmiyorum, başlangıçtaki ayar neyse ona ayarlayacak.

Bu arada; Korhan Hoca'nın dediği şekilde açılışta scripti otomatik çalıştırmak için ara program yerinde setup dosyası oluşturmak da olur mu? Smart Instial Maker gibi bir program iş görür mü bunun için?
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Böyle daha kullanışlı kesinlikle.
Elinize sağlık.

Şimdi kullanıcının bu scriptlerden ilkini programı açmadan önce, ikincisini programı kapattıktan sonra çalıştıracak değil mi?

Benim düşündüğüm şey ise, program excelde yapılmışsa, scripti VS ile hazırlanmış bir arayüzle çalıştırıp ardından excel dosyasını açmak, kapanışta ise kapanış scriptini çalıştırmak.

Farkı şu olacak: Kullanıcı bu etkinleştir-etkinleştirme olayını görmeyecek.
Bu iki script etkileşimsiz. Direkt çalışır.
Biri Excel için makroları etkinleştirir.
Diğer etkisizleştirir.
 

Ekli dosyalar

Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Bu kod işinizi görecektir.

Tek script, çalıştığı anda excel de makroları etkinleştirir.
Daha sonra orta kısmında kırmızı ile boyadım. İlgili excel dosyasını açar.
Hemen ardından excel de makroları etkisizleştirir. Bu işlemi registry den yaptığı için excel dosyası etkilenmez.

Kullanıcı excel in fişini çekip kapatsada makrolar önceden etkisizleştirilmiş olur.



Kod:
'0ption Explicit ' Enforce variable declaration
Dim oShell
Dim sOSVersion
Dim lOfficeVersion
Dim secim

Function GetOfficeVersionNumber()
        GetOfficeVersionNumber = ""  ' or you could use "Office not installed"
        Dim sTempValue
         sTempValue = oShell.RegRead("HKCR\Excel.Application\CurVer\")
        If Len(sTempValue) > 2 Then GetOfficeVersionNumber = Replace(Right(sTempValue, 2), ".", "") ' Check the length of the value found and if greater than 2 digits then read the last two digits for the major Office version value
End Function    
 
Set oShell = CreateObject("WScript.Shell")
On Error Resume Next
lOfficeVersion = GetOfficeVersionNumber() ' Read the office version from the function
if lOfficeVersion ="" then
    WScript.Quit  
Else
  secim = 2
End if

If secim="2" and lOfficeVersion ="16" Then
Set y = CreateObject("wscript.shell")
RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView\DisableAttachmentsInPV"
y.RegWrite RegKey, 1,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView\DisableInternetFilesInPV"
y.RegWrite RegKey, 1,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView\DisableUnsafeLocationsInPV"
y.RegWrite RegKey, 1,"REG_DWORD"
Set y = Nothing


RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\VBAWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\Level"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\DataConnectionWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"
End if

If secim="2" and lOfficeVersion ="15" Then
Set y = CreateObject("wscript.shell")
RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\ProtectedView\DisableAttachmentsInPV"
y.RegWrite RegKey, 1,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\ProtectedView\DisableInternetFilesInPV"
y.RegWrite RegKey, 1,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\ProtectedView\DisableUnsafeLocationsInPV"
y.RegWrite RegKey, 1,"REG_DWORD"
Set y = Nothing


RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\VBAWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\Level"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\DataConnectionWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"
End if

If secim="2" and lOfficeVersion ="14" Then
Set y = CreateObject("wscript.shell")
RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\ProtectedView\DisableAttachmentsInPV"
y.RegWrite RegKey, 1,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\ProtectedView\DisableInternetFilesInPV"
y.RegWrite RegKey, 1,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\ProtectedView\DisableUnsafeLocationsInPV"
y.RegWrite RegKey, 1,"REG_DWORD"
Set y = Nothing


RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\VBAWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Level"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\DataConnectionWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"
End if

If secim="2" and lOfficeVersion ="12" Then
Set y = CreateObject("wscript.shell")
RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\ProtectedView\DisableAttachmentsInPV"
y.RegWrite RegKey, 1,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\ProtectedView\DisableInternetFilesInPV"
y.RegWrite RegKey, 1,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\ProtectedView\DisableUnsafeLocationsInPV"
y.RegWrite RegKey, 1,"REG_DWORD"
Set y = Nothing


RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\VBAWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\Level"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\DataConnectionWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"
End if

Dim fullpat
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fullpath = fso.GetAbsolutePathName(".")
Set objXL = WScript.CreateObject("Excel.Application")
objXL.Visible = True
Set book = objXL.Workbooks.Open([COLOR=Red]fullpath & "\deneme.xlsm[/COLOR]",,False)
Set objXL = Nothing 


If secim="2" and lOfficeVersion ="16" Then
Set y = CreateObject("wscript.shell")
RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView\DisableAttachmentsInPV"
y.RegWrite RegKey, 0,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView\DisableInternetFilesInPV"
y.RegWrite RegKey, 0,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView\DisableUnsafeLocationsInPV"
y.RegWrite RegKey, 0,"REG_DWORD"
Set y = Nothing


RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\VBAWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\Level"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\DataConnectionWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"
End if

If secim="2" and lOfficeVersion ="15" Then
Set y = CreateObject("wscript.shell")
RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\ProtectedView\DisableAttachmentsInPV"
y.RegWrite RegKey, 0,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\ProtectedView\DisableInternetFilesInPV"
y.RegWrite RegKey, 0,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\ProtectedView\DisableUnsafeLocationsInPV"
y.RegWrite RegKey, 0,"REG_DWORD"
Set y = Nothing


RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\VBAWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\Level"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\DataConnectionWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"
End if

If secim="2" and lOfficeVersion ="14" Then
Set y = CreateObject("wscript.shell")
RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\ProtectedView\DisableAttachmentsInPV"
y.RegWrite RegKey, 0,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\ProtectedView\DisableInternetFilesInPV"
y.RegWrite RegKey, 0,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\ProtectedView\DisableUnsafeLocationsInPV"
y.RegWrite RegKey, 0,"REG_DWORD"
Set y = Nothing


RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\VBAWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Level"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\DataConnectionWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"
End if

If secim="2" and lOfficeVersion ="12" Then
Set y = CreateObject("wscript.shell")
RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\ProtectedView\DisableAttachmentsInPV"
y.RegWrite RegKey, 0,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\ProtectedView\DisableInternetFilesInPV"
y.RegWrite RegKey, 0,"REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\ProtectedView\DisableUnsafeLocationsInPV"
y.RegWrite RegKey, 0,"REG_DWORD"
Set y = Nothing


RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\VBAWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\Level"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\DataConnectionWarnings"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"

RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 0, "REG_DWORD"
End if
 

Ekli dosyalar

Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Son mesajıma deneme.vbs ve deneme.xlsm dosyası ekledim.

Kullanıcı deneme.vbs yi çift tıkladığında deneme.vbs önce makroları etkinleştirecek.
Daha sonra deneme.xlsm dosyasını açacak.
Hemen ardından makroları pasif hale getirecek.
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Son mesajıma deneme.vbs ve deneme.xlsm dosyası ekledim.

Kullanıcı deneme.vbs yi çift tıkladığında deneme.vbs önce makroları etkinleştirecek.
Daha sonra deneme.xlsm dosyasını açacak.
Hemen ardından makroları pasif hale getirecek.
Asri Hocam,

Bu çalışmanız makro handikapına yeni bir çözüm getirdi.
Çok teşekkür ederim.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Asri Hocam,
Bu çalışmanız makro handikapına yeni bir çözüm getirdi.
Çok teşekkür ederim.
Hepimizin ortak çalışması sonucu, yapmak istediğinizi yapabildik diyelim :)
Yaptık ama hala kullanışlı olduğu konusunda şüpheliyim.
Aktif ortamdaki sonucu bildirir siniz.

Dosya indiremeyenler için tüm dosya linkleri.

http://dosya.co/1sbgqeaj7pd9/AktifYap_DosyayiAc_Pasifyap.zip.html
http://dosya.co/4s48y7m6tn8o/Excel_Makro_Aktif_Pasif.zip.html
http://dosya.co/vj7ngea7oeae/Office_Makroları_Etkisizleştir_ve_Korumalı_Görünümü_Aktif_Pasif.zip.html
 
Üst