
Banyak dari kita yang ingin menjalankan script VBA saat pertama kali File tersebut dibuka, misalnya seperti membuka Form login atau mengaktifkan Sheet tertentu pada saat file tersebut dibuka. Untuk Alasannya mungkin bermacam-macam.
Untuk menjalankan script VBA saat pertama kali dibuka, kita bisa memanfaatkan Event yang bernama Workbook_Open() . Namun selain itu, kita juga bisa menggunakan sebuah Subrutine yang bernama Auto_open .
Lalu mana yang harus digunakan? dan apa perbedaan dari keduanya?
Workbook_open VS Auto_open
Baik Workbook_open ataupun Auto_open sama-sama akan menjalankan script yang berada didalam subrutine tersebut saat pertama kali File dibuka. Walaupun demikian terdapat perbedaan dari kedua cara tersebut.
Namun sebelum kesana, kita lihat dulu bagaimana Sintaksis kedua Method diatas
Private Sub Workbook_Open() '---- 'kode disimpan disini '---- End Sub
Sub Auto_open() '---- 'kode disimpan disini '---- End Sub
Lebih detail lagi tentang perbedaan dari kedua Method diatas bisa dibaca pada table dibawah ini.
Workbook_open | Auto_open |
---|---|
Workbook_open adalah versi terbaru dari Auto_open | Auto_open adalah warisan dari Excel 4 Macro |
Workbook_open akan berjalan ketika File Excel dibuka secara manual ataupun melalui Script | Auto_open hanya akan berjalan ketika File dibuka secara manual. dan tidak akan berjalan ketika File dibuka secara script / via Code. |
Workbook_open berada pada Workbook Class Module (Event) | Auto_open berada pada Standar Module (Subrutine) |
Workbook_open tidak akan berjalan jika Application.EnableEvents = False | Auto_open tidak terpengaruh dengan Application.EnableEvents = False |
Workbook_open akan dijalankan pertamakali | Auto_open Akan dijalankan setelah Workbook_open |
Code Container
Perbedaan mendasar dari Workbook_open dan Auto_open adalah tempat dimana masing-masing code tersebut ditempatkan. Auto_open disimpan pada Standard Module sedangkan Workbook_open harus disimpan pada Thisworkbook Class Module. dan jika dibalik keduanya tidak akan bisa berjalan secara otomatis.

Application.EnableEvents
Perbedaan yang paling penting dari kedua teknik ini adalah keberadaan Application.EnableEvents
dimana ketika ini set False , Workbook_open akan terpengaruh, dan Code yang berada didalam Workbook_open tidak akan berjalan.
File Dibuka oleh User atau Script
Yang tidak kalah pentingnya dari perbedaan kedua teknik diatas adalah bagaimana cara File Excel tersebut dibuka. Dimana ketika File Excel dibuka secara terProgram, misalnya File excel dibuka melalui File Excel lain dengan VBA, maka Auto_open tidak akan jalan secara otomatis.
Jika ingin berjalan secara oromatis diperlukan sedikit baris kode tambahan yaitu
ActiveWorkbook.RunAutoMacros xlAutoOpen
Sedangkan Workbook_open tidak terpengaruh oleh kondisi ini, baik ketika file dibuka oleh User secara manual ataupun secara script atau terProgram.
Urutan Eksekusi
Jika di dalam File terdapat keduanya, workbook_open dan Auto_open. Maka urutan eksekusinya adalah Workbook_open yang akan dijalankan terlebih dahulu, baru setelah itu ke Auto_open.
Kesimpulan
Menjalankan script VBA pada saat File dibuka sangat bisa dilakukan. Tentang method mana yang akan digunakan, bisa di sesuaikan dengan kondisi yang diharapkan.
Jika kita lihat perbandingan diatas, Workbook_Open terlihat lebih unggul karena memang Event ini versi terbaru dari Auto_open.
Leave a Reply