Bir makroyu zamanında çalıştırma

Uygulamada çok yaygın bir durum: belirli bir zamanda veya belirli bir sıklıkta makrolarınızdan birini veya daha fazlasını çalıştırmanız gerekir. Örneğin, yarım saat güncellenen büyük ve ağır bir raporunuz var ve güncellemeyi sabah işe gelmeden yarım saat önce çalıştırmak istiyorsunuz. Veya belirli bir sıklıkta çalışanlara otomatik olarak e-posta göndermesi gereken bir makronuz var. Veya bir PivotTable ile çalışırken, her 10 saniyede bir anında güncellenmesini istiyorsunuz vb.

Excel ve Windows'un bunu uygulayabilme yeteneğine sahip olduğuna bakalım.

Belirli bir frekansta bir makro çalıştırma

Bunu yapmanın en kolay yolu, yerleşik VBA yöntemini kullanmaktır. Uygulama.OnTimeBelirtilen makroyu belirtilen zamanda çalıştıran bir. Bunu pratik bir örnekle anlayalım.

Sekmede aynı adı taşıyan buton ile Visual Basic düzenleyicisini açın geliştirici (Geliştirici) veya klavye kısayolu Ara Toplam+F11, menüden yeni bir modül ekleyin Ekle – Modül ve aşağıdaki kodu oraya kopyalayın:

Dim TimeToRun 'bir sonraki çalışma süresinin depolandığı küresel değişken' bu ana makrodur Sub MyMacro() Application.Calculate 'Kitabı yeniden hesaplayın Range("A1").Interior.ColorIndex = Int(Rnd() * 56) 'dolgu rastgele bir renkle hücre A1 :) NextRun'u çağırın 'sonraki çalıştırma zamanını ayarlamak için NextRun makrosunu çalıştırın End Sub 'bu makro ana makronun bir sonraki çalıştırması için zamanı ayarlar Sub NextRun() TimeToRun = Now + TimeValue("00: 00:03") 'geçerli zamana 3 saniye ekleyin Application.OnTime TimeToRun, "MyMacro" 'tekrar sırasını başlatmak için bir sonraki çalışmayı planlayın End Sub 'makrosu Sub Start() Tekrar sırasını durdurmak için NextRun End Sub 'makrosunu çağırın Sub Finish() Application.OnTime TimeToRun, "MyMacro", , False End Sub  

Burada neyin ne olduğunu bulalım.

İlk olarak, makromuzun bir sonraki çalışmasının zamanını depolayacak bir değişkene ihtiyacımız var – ben onu aradım Koşma vakti. Lütfen bu değişkenin içeriğinin sonraki tüm makrolarımızda mevcut olması gerektiğine dikkat edin, bu yüzden bunu yapmamız gerekiyor. global, yani modülün en başında ilkinden önce beyan edin Alt.

Sırada ana makromuz geliyor Makrom, ana görevi gerçekleştirecek - yöntemi kullanarak kitabı yeniden hesaplamak Uygulama.Hesapla. Daha açık hale getirmek için, A1 hücresindeki tarih ve saati gösteren sayfaya =TDATE() formülünü ekledim - yeniden hesaplandığında içeriği gözlerimizin önünde güncellenecektir (hücredeki saniyelerin görüntüsünü açmanız yeterlidir). biçim). Ekstra eğlence için, makroya A1 hücresini rastgele seçilen bir renkle doldurma komutunu da ekledim (renk kodu, fonksiyon tarafından oluşturulan 0..56 aralığında bir tamsayıdır). rnd ve bir tamsayı işlevine yuvarlar Int).

Makro SonrakiÇalıştır önceki değere ekler Koşma vakti 3 saniye daha ve ardından ana makronun bir sonraki çalışmasını programlar Makrom bu yeni zaman için. Elbette pratikte fonksiyon argümanlarını ayarlayarak ihtiyacınız olan diğer zaman aralıklarını kullanabilirsiniz. Zaman değeri ss:dd:ss biçiminde.

Ve son olarak, kolaylık olması için daha fazla dizi başlatma makrosu eklendi. Ana Sayfa ve tamamlanması Bitiş. Sonuncusu, sırayı kırmak için dördüncü yöntem argümanını kullanır. Zamanında eşit Yanlış.

Makroyu çalıştırırsanız toplam Ana Sayfa, sonra tüm bu atlıkarınca dönecek ve sayfada aşağıdaki resmi göreceğiz:

Sırasıyla makroyu çalıştırarak diziyi durdurabilirsiniz. Bitiş. Kolaylık sağlamak için, komutu kullanarak her iki makroya da klavye kısayolları atayabilirsiniz. Makrolar – Seçenekler çıkıntı geliştirici (Geliştirici — Makrolar — Seçenekler).

Bir zamanlamaya göre bir makro çalıştırma

Tabii ki, yukarıda açıklanan her şey ancak Microsoft Excel'in çalışır durumda olması ve dosyamızın içinde açık olması durumunda mümkündür. Şimdi daha karmaşık bir duruma bakalım: Excel'i belirli bir programa göre çalıştırmanız, örneğin her gün saat 5:00'te çalıştırmanız, içinde büyük ve karmaşık bir rapor açmanız ve içindeki tüm bağlantıları ve sorguları güncellemeniz gerekir. işe vardığımızda hazır ol 🙂

Böyle bir durumda kullanmak daha iyidir. Windows Zamanlayıcı – herhangi bir Windows sürümüne özel olarak yerleştirilmiş, belirli eylemleri bir zamanlamaya göre gerçekleştirebilen bir program. Aslında, PC'niz düzenli olarak güncellemeleri kontrol ettiğinden, yeni anti-virüs veritabanlarını indirdiğinden, bulut klasörlerini senkronize ettiğinden, farkında olmadan zaten kullanıyorsunuz. Bunların hepsi Zamanlayıcı'nın işi. Bu nedenle görevimiz, mevcut görevlere Excel'i başlatacak ve içinde belirtilen dosyayı açacak bir tane daha eklemektir. Ve makromuzu etkinliğe asacağız Çalışma kitabı_Aç bu dosya – ve sorun çözüldü.

Zamanlayıcı ile çalışmanın gelişmiş kullanıcı hakları gerektirebileceği konusunda sizi hemen uyarmak istiyorum, bu nedenle aşağıda açıklanan komutları ve işlevleri ofisteki iş bilgisayarınızda bulamazsanız, yardım için BT uzmanlarınızla iletişime geçin.

Zamanlayıcıyı Başlatma

O halde Zamanlayıcıyı başlatalım. Bunu yapmak için şunları yapabilirsiniz:

  • Düğmeye sağ tıklayın Başlama Ve seç Bilgisayar Yönetimi (Bilgisayar yönetimi)
  • Denetim Masası'nda seçin: Yönetim – Görev Zamanlayıcı (Denetim Masası — Yönetimsel Araçlar — Görev Zamanlayıcı)
  • Ana menüden seçin Başlat – Aksesuarlar – Sistem Araçları – Görev Zamanlayıcı
  • Klavye kısayoluna basın kazanmak+R, girmek taskschd.msc ve basın Keşfet

Ekranda aşağıdaki pencere görünmelidir (İngilizce versiyonum var, ancak siz de bir versiyona sahip olabilirsiniz):

Bir makroyu zamanında çalıştırma

Görev oluştur

Basit bir adım adım sihirbaz kullanarak yeni bir görev oluşturmak için bağlantıya tıklayın Basit bir görev oluşturun (Temel Görev Oluştur) sağ panelde.

Sihirbazın ilk adımında, oluşturulacak görevin adını ve açıklamasını girin:

Bir makroyu zamanında çalıştırma

düğmesine tıklayın Sonraki (Sonraki) ve bir sonraki adımda bir tetikleyici seçiyoruz - başlatma sıklığı veya görevimizi başlatacak bir olay (örneğin, bilgisayarı açma):

Bir makroyu zamanında çalıştırma

Eğer seçersen Günlük (Günlük), ardından bir sonraki adımda belirli bir zaman, dizinin başlangıç ​​tarihi ve adımı (her 2 günde bir, 5 günde bir vb.) seçmeniz gerekecektir:

Bir makroyu zamanında çalıştırma

Bir sonraki adım bir eylem seçmektir - Programı çalıştır (Bir program başlatın):

Bir makroyu zamanında çalıştırma

Ve son olarak, en ilginç şey, tam olarak açılması gereken şeydir:

Bir makroyu zamanında çalıştırma

içinde Program veya komut dosyası (Program/komut dosyası) Microsoft Excel'in yolunu bir program olarak, yani doğrudan Excel yürütülebilir dosyasına girmeniz gerekir. Windows ve Office'in farklı sürümlerine sahip farklı bilgisayarlarda bu dosya farklı klasörlerde olabilir, bu nedenle konumunu öğrenmeniz için birkaç yol aşağıda verilmiştir:

  • Masaüstünde veya görev çubuğunda Excel'i başlatmak için simgeye (kısayol) sağ tıklayın ve komutu seçin Malzemeler (Özellikleri), ve ardından açılan pencerede satırdan yolu kopyalayın Hedef:

    Bir makroyu zamanında çalıştırma                      Bir makroyu zamanında çalıştırma

  • Herhangi bir Excel çalışma kitabını açın, ardından görev Yöneticisi (Görev Yöneticisi) itme Ctrl+Ara Toplam+Konum ve satıra sağ tıklayarak Microsoft Excel, bir komut seçin Malzemeler (Özellikleri). Açılan pencerede yolu kopyalayabilirsiniz, sonuna ters eğik çizgi ve EXCEL.EXE eklemeyi unutma:

    Bir makroyu zamanında çalıştırma              Bir makroyu zamanında çalıştırma

  • Excel'i açın, klavye kısayoluyla Visual Basic düzenleyicisini açın Ara Toplam+F11, paneli aç Acil kombinasyonu Ctrl+G, komutu içine girin:

    ? Uygulama.Yol

    … ve üzerine tıklayın Keşfet

    Bir makroyu zamanında çalıştırma

    Ortaya çıkan yolu kopyalayın, sonuna ters eğik çizgi ve EXCEL.EXE eklemeyi unutma.

içinde Bağımsız değişkenler ekle (isteğe bağlı) (Argüman ekleyin (isteğe bağlı)) açmak istediğimiz makro ile kitabın tam yolunu eklemeniz gerekiyor.

Her şey girildiğinde, ardından Sonraki ve sonra Bitiş (Bitiş). Görev genel listeye eklenmelidir:

Bir makroyu zamanında çalıştırma

Sağdaki butonları kullanarak oluşturulan görevi yönetmek uygundur. Burada görevi hemen çalıştırarak test edebilirsiniz. (koşmak)Belirtilen süreyi beklemeden. Bir görevi geçici olarak devre dışı bırakabilirsiniz (Devre dışı bırak)böylece tatiliniz gibi bir süre çalışmayı durdurur. Pekala, parametreleri (tarihler, saat, dosya adı) her zaman düğme ile değiştirebilirsiniz. Malzemeler (Özellikleri).

Bir dosyayı açmak için bir makro ekleyin

Şimdi, dosya açma olayında ihtiyacımız olan makronun lansmanını kitabımıza asmak kaldı. Bunu yapmak için kitabı açın ve klavye kısayolunu kullanarak Visual Basic düzenleyicisine gidin. Ara Toplam+F11 veya düğmeler Visual Basic çıkıntı geliştirici (Geliştirici). Sol üst köşede açılan pencerede, ağaçta dosyamızı bulmanız ve modülü açmak için çift tıklamanız gerekir. Bu kitap (BuÇalışma Kitabı).

Bu pencereyi Visual Basic düzenleyicisinde görmüyorsanız, menüden açabilirsiniz. Görünüm — Proje Gezgini.

Açılan modül penceresinde, en üstteki açılır listelerden seçerek bir kitap açma olay işleyicisi ekleyin. alıştırma kitabı и Açılış, sırasıyla:

Bir makroyu zamanında çalıştırma

Ekranda bir prosedür şablonu görünmelidir. Çalışma kitabı_Aç, satırlar arasında nerede Özel Sub и End Sub ve bu Excel çalışma kitabı açıldığında, Zamanlayıcı onu zamanlamaya göre açtığında otomatik olarak yürütülmesi gereken VBA komutlarını eklemeniz gerekir. Hız aşırtma için bazı yararlı seçenekler şunlardır:

  • ThisWorkbook.RefreshAll – Tüm dış veri sorgularını, Power Query sorgularını ve PivotTable'ları yeniler. En çok yönlü seçenek. Varsayılan olarak harici verilere bağlantılara izin vermeyi ve bağlantıları şu şekilde güncellemeyi unutmayın: Dosya – Seçenekler – Güven Merkezi – Güven Merkezi Seçenekleri – Harici İçerik, aksi halde kitabı açtığınızda karşınıza standart bir uyarı çıkacak ve Excel herhangi bir güncelleme yapmadan butona tıklamanız şeklinde lütfunuzu bekleyecektir. İçeriği etkinleştirmek (İçeriği etkinleştirmek):

    Bir makroyu zamanında çalıştırma

  • ActiveWorkbook.Connections(“Bağlantı_Adı”).Yenile — Connection_Name bağlantısındaki verilerin güncellenmesi.
  • Sayfalar(“Sayfa5“).PivotTables(“PivotTable1«).Özet Önbellek.Yenile - adlı tek bir pivot tablonun güncellenmesi Özet Tablo1 sayfada Sheet5.
  • Uygulama.Hesapla – tüm açık Excel çalışma kitaplarının yeniden hesaplanması.
  • Application.CalculateFullRebuild – tüm formüllerin zorunlu yeniden hesaplanması ve tüm açık çalışma kitaplarındaki hücreler arasındaki tüm bağımlılıkların yeniden oluşturulması (tüm formüllerin yeniden girilmesine eşdeğer).
  • Çalışma Sayfaları(“Rapor”).Yazdır - baskı sayfası Fotoğraflar.
  • MyMacro'yu Ara - adlı bir makro çalıştırın Makrom.
  • BuÇalışma Kitabı.Kaydet - mevcut kitabı kaydet
  • ThisWorkbooks.SaveAs “D:ArchiveRapor” & Replace(Şimdi, “:”, “-“) & “.xlsx” - kitabı bir klasöre kaydedin D:Arşiv adı altında Fotoğraflar isme eklenen tarih ve saat ile.

Makronun yalnızca Dosya Zamanlayıcı tarafından çalışma günü boyunca çalışma kitabını her açtığında değil, yalnızca Zamanlayıcı tarafından saat 5:00'te açıldığında yürütülmesini istiyorsanız, bir zaman denetimi eklemek mantıklıdır, örneğin:

Format(Şimdi, "ss:dd") = "05:00" ise ThisWorkbook.RefreshAll  

Bu kadar. Çalışma kitabınızı makro etkin bir biçimde (xlsm veya xlsb) kaydetmeyi unutmayın; bilgisayarınızı açık bırakarak Excel'i güvenle kapatıp eve gidebilirsiniz. Belirli bir anda (PC kilitli olsa bile), Zamanlayıcı Excel'i başlatacak ve içinde belirtilen dosyayı açacak ve makromuz programlanan eylemleri gerçekleştirecektir. Ve ağır raporunuz otomatik olarak yeniden hesaplanırken yatakta lüks olacaksınız - güzellik! 🙂

  • Makro nedir, nasıl kullanılır, Excel'de Visual Basic kodu nereye eklenir
  • Excel için kendi makro eklentinizi nasıl oluşturabilirsiniz?
  • Kişisel Makro Çalışma Kitabı, Excel'deki makrolarınız için kitaplık olarak nasıl kullanılır?

Yorum bırak