VBA Kabuğu

Bu öğretici, VBA Shell işlevinin nasıl kullanılacağını gösterecektir.

VBA'yı kullanabiliriz Kabuk Bir VBA programının içinden ayrı, yürütülebilir bir program çağırma işlevi. Örneğin Excel'den Notepad açmamız gerekirse, bunun için VBA Shell işlevini kullanabiliriz. Kabuk çağrısı başarılı olursa, çağırdığı programın Windows TaskID değerini döndürür. Kabuk çağrısı başarısız olursa, sıfır döndürür.

Kabuk iki giriş parametresi vardır: gerekli yol adı programın araması için ve isteğe bağlı bir pencere stili programın çalışacağı pencerenin stilini kontrol eden değer. NS yol adı değer, program yolunu / dizini ve argümanları içerebilir.

Çağrı Shell

Bu kod, çalıştırılacak bir makronun parçasını oluşturabilir not defteri kullanarak VBA Çağrısı aramak için komut Kabuk işlev.

1 Çağrı Shell("not defteri", vbNormalFocus)

Örneğin:

Kabuk Bekleme

VBA'yı kullanabiliriz Beklemek aramayı geciktirme komutu Kabuk Belirli bir süre için komut.

12 Application.Wait (Now + TimeValue("00:00:05"))Çağrı Shell("not defteri", vbNormalFocus)

Bu nedenle Shell komutu çağrılmadan önce 5 saniye geçer.

Kabuk İşlevinden Hata Döndürme

Çağırırken kodumuzda bir hata varsa Kabuk işlev ve hata döndürülecek ve kodumuz hata ayıklama moduna geçecektir.

Örneğin bu makroda not defterini yanlış yazmışız.

1 Çağrı Shell("not defteri", vbNormalFocus)

Bu makroyu çalıştırmanın sonucu şöyle olacaktır:

VBA Programlama | Code Generator sizin için çalışıyor!

Mevcut Bir Dosyayı Shell ile Açın

İle açmak istediğimiz belirli bir dosyamız varsa, Kabuk komutuyla kodumuza dosya adını ekleyebiliriz.

1 Shell'i çağırın("Notepad.exe C:\demo\shell_test.txt", vbNormalFocus)

Dosya adını yanlış yazarsak, dosya bulunamaz ve yeni bir dosya oluşturmak isteyip istemediğimizi soran bir mesaj kutusu görünür.

Kabuk işlevi tarafından kullanılan parametreler

NS Kabuk fonksiyonun 2 parametresi vardır - çağrılacak programın adı ve programın kullanacağı windows stili. biz kullanıyoruz vbNormalFocus yukarıdaki örneklerde, program (bu durumda Not Defteri) açıldığında, odak vardır ve PC'deki varsayılan konum ve boyutta açılır.

NS Kabuk beş seçenek daha sunar:

vbHide Pencereyi gizler ve odağı o pencereye ayarlar

vbMinimizedFocus Pencereyi odaklı bir simge olarak görüntüler

vbMaximizedFocus Programı, odakla büyütülmüş bir pencerede açar

vbNormalNoFocus Pencereyi en son konumuna ve boyutuna geri yükler

vbMinimizedNoFocus Pencereyi bir simge olarak görüntüler ve o anda etkin olan pencere etkin kalır

Kabuk Komutundan İşlem Kimliği Döndürme

çalıştırdığımızda Kabuk Komut, bir İşlem veya Görev Kimliği döndürür. İşlem Kimliğini bir değişkende saklayabilir ve bu İşlem Kimliğini başka bir komutu çalıştırırken kullanabiliriz - örneğin, Görev Öldür Not Defteri dosyasını kapatma komutu.

123456 Alt TestPIDProcessID'yi tamsayı olarak karartprocessID = Shell("not defteri", vbNormalFocus)Shell'i çağırın("Taskkill /F /PID" + CStr(processID))MsgBox ("Not Defteri İşlem Kimliği = " + CStr(işlem Kimliği))Alt Bitiş

İlk satırda NotePad açılır ve Process ID'ye Windows tarafından bir değer atanır. Bu değeri ProcessID değişkeninde saklıyoruz. Daha sonra, Notepad'i yeni açtığımız NotePad örneğini kapatmaya zorlamak için TaskKill'i kullanırız. NS /F güç değiştirme not defteri sona erdirmek ve /PID anahtar söyler Görev Öldür Not Defteri'ni aramak için İşlem Kimliği değer. CStr işlevi P'yi dönüştürürişlem kimliği Shell ve sonraki satırdaki MsgBox'ın her ikisinin de ihtiyaç duyduğu dize biçimine.

VBA Kodu Örnekleri Aramaktan Bıktınız mı? AutoMacro'yu deneyin!

VBA Programlama | Code Generator sizin için çalışıyor!

Shell ile Diğer Programları Çağırmak

Shell, başka herhangi bir Windows programını açacaktır. Örneğin, bu kod çağırır Excelve 'example_workbook.xlsx' Excel dosyasını açar:

1 Shell'i çağırın("Excel ""C:\DEMO\example_workbook.xlsx""", vbNormalFocus)

Bu, açılan dosyayı gösterir:

ShellExecute ve ShellExecuteEx, Shell Komutuna Karşı

Windows programlama alanı sunar KabukYürüt ve KabukYürütmeEx yazılım kodundan harici programları çağıran işlevler. VBA Shell işleviyle karşılaştırıldığında, bu Windows işlevleri daha fazla esneklik sunar, ancak VBA bunları desteklemez ve bu nedenle bu makale bunları kapsamaz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave