makro ile bat dosyası çalıştırmak.

Katılım
15 Nisan 2009
Mesajlar
122
Excel Vers. ve Dili
MSOPP2019TR-64bit
Altın Üyelik Bitiş Tarihi
29-04-2025
excel dosyamda 10 dakikada bir yenilenen 3-4 dış bağlnatı var.
bu bağlantılardan birisi sql serverdan veri alıyor.
bazen sql serverda sorun oluşuyor veri almayı durduruyor nadir de olsa ve hiç bir uyarın alamıyorum araştırdım ilgili programın yapısından kaynaklı olduğunu aslında sql servisler stop etmediği halde veri almayı bi şekilde durdurduğunu ve ilgili sql hizmetleri restart ettiğimde tekrar verileri almaya devam ettiğini tesğit etim. bunun içinde ilgili sql hizmetleri durdurup tekrar başlatan bir bat komut dosyası yazdım. kitabımda da veriler yenilenirken eğer 20 dk o sql veritabanından yeni veri almadığını gördüğümde ilgili değer sütunlarını kırmızı yapan bir koşullu biçimlendirme tanımladım. böylece değer gelmediğini görüyor ve ilgili bat dosyasını çalıştırarrarak ilgili sql hizmetleri durdurup yeniden başlatarak tekrar verileri almasını sağlayabiliyorum manuel olarak.

bunu bu koşula bağlayarak yani ag1 hücresi kaç dakikadır veri almadığını hücrede bulunan saat ile veri alınna tablodaki en son saat bilgigisini karşılaştırmak sureti ile buluyorum.

mesela saat 19:20 10 dk bir yenilendiği için bu saat de yenileniyor.
alınan son değerin saat hanesi 19:00 ise yenilemöeden sonra ozaman hücrede saat-20 değeri ile hesaplanan değer 0 oluyor.

normalde saat 19:20 ve son değer 19:18 ise -18 oluyor.

koşullu biçimlendirmem de de bu hücre değeri >=0 ise hücre renklendir şeklinde manuel çözdüm sorunu.

yapmak istediğim burası sıfıra eşit yada büyükse yani 20 dakika ve daha uzun süredir değer almıyorsa. d:\ içerisinde bulunan ve normalde elle çalıştırdığım bat uzantılı dosyamı otomatik olarak makro ile çalıştırmak.

çok küçük bir kod ile halledilebileceğini düşünüyorum.

shell word.exe d:\deneme.doc gibi.

sadece bat dosyası için nasıl bir kod kullanmam gerekir acaba ??

teşekkürler.
 
Katılım
15 Nisan 2009
Mesajlar
122
Excel Vers. ve Dili
MSOPP2019TR-64bit
Altın Üyelik Bitiş Tarihi
29-04-2025
biraz daha kısa ve net sormak gerekir ise. çalışma kitabımın ytm sayfası ag1 hücresi =>0 ise d:\entserver.bat dosyasını çalıştır şeklinde kısa bir kod yapmak istiyorum.
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
*.bat dosyasının içerisine yazdığınız kodlar nedir.
Bu kodları vba içinde kullanabiliriz.

.
 
Katılım
15 Nisan 2009
Mesajlar
122
Excel Vers. ve Dili
MSOPP2019TR-64bit
Altın Üyelik Bitiş Tarihi
29-04-2025
Kod:
@echo off
net stop entserver
net stop mssql$entesdbserver
net start mssql$entesdbserver
net start entserver
exıt
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
. . .

Mevcut kodlarınıza şu satırları ilave ederek. Dosya yolundaki *.bat dosyasını çalıştırabilirsiniz.

Kod:
If Sheets("ytm").Range("AG1") >= 0 Then
Shell ("D:\entserver.bat")
End If
. . .
 
Katılım
15 Nisan 2009
Mesajlar
122
Excel Vers. ve Dili
MSOPP2019TR-64bit
Altın Üyelik Bitiş Tarihi
29-04-2025
deneyeceğim teşekkürler.
 
Katılım
15 Nisan 2009
Mesajlar
122
Excel Vers. ve Dili
MSOPP2019TR-64bit
Altın Üyelik Bitiş Tarihi
29-04-2025
çalıştıramadım ama. sorun nedir onu da anlayamadım. sçyleki shell komutu çalıması için bişey mi lazım diye düşündüm daha önce bi uygulamada kullnadığı satırları ekleyip modülü şu hale de geitrdim.
Kod:
Option Explicit

#If VBA7 Then
    Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias _
    "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
    As String, ByVal lpFile As String, ByVal lpParameters _
    As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
    Declare Function ShellExecute Lib "shell32.dll" Alias _
    "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
    As String, ByVal lpFile As String, ByVal lpParameters _
    As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If

Sub entserver()
If Sheets("ytm").Range("AG1").Value >= 0 Then
Shell ("c:\entserver\sql.bat")
End If
End Sub
ancak ilgili hücre -20 iken elle 0 yada daha büyük yapıyorum hiç bişey olmuyor. bu makroyu elle çalıştırıyorum. bi dos pencerisi açılıp kapanıyor belirli belirsiz. oysa ilgili bat çalışmış olsa dos ekranı biraz bekliyor stop start ediyor öyle kapanıyor.

yani çalışmıyor gibi.
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
. . .

Benim deneme yaptığım bat dosyasında şu komut var ve şarta uygun işlem yapıyor. Sorun yok.
Kod:
start http://www.excel.web.tr
bat kodlarındaki exit kısmını iptal ederek deneyebilir misiniz.

. . .
 
Katılım
15 Nisan 2009
Mesajlar
122
Excel Vers. ve Dili
MSOPP2019TR-64bit
Altın Üyelik Bitiş Tarihi
29-04-2025
şimdi 2 konu ortaya çıktı.
öncelikle
Kod:
Option Explicit

#If VBA7 Then
    Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias _
    "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
    As String, ByVal lpFile As String, ByVal lpParameters _
    As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
    Declare Function ShellExecute Lib "shell32.dll" Alias _
    "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
    As String, ByVal lpFile As String, ByVal lpParameters _
    As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If

Sub entserver()
If Sheets("ytm").Range("AG1").Value >= 0 Then
Shell ("c:\entserver\sql.bat")
End If
End Sub
kod bu. buna göre ytm sayfası ag1 değiştiğinde herhangi bir değişiklik olmuyor. yani değiştiği anda anlık kontrol etmiyor gibi görünüyor.
ama 0dan küçük se ve kodu elle çlaışrırır ve sizin bat içeriğini bir bata atar onu hedeflersem web sitesi açılıyor.

ancak benim sql komutları olan batda hala çalışmıyor.

öncelikle sürekli kontrol edip değiştiği anda ben makroyu elle çalıştırmaya gerek kalmadan çalışmaması 1. sorun.

2. sorun ise belki kaynağı şu olabilir. win8.1 kullanıyoruz. 32 bit. burada yetkilere debaktım batta bat dosyasına user olarak tüm yetkileri de verdim ama belki dos komut istemi excelden gelen bir komuta mı tepki gösteriyordur onu anlayamadım.
 
Üst