Menjalankan VBA Saat Membuka File Excel

Workbook open vs Auto Open

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_openAuto_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 = FalseAuto_open tidak terpengaruh dengan Application.EnableEvents = False
Workbook_open akan dijalankan pertamakaliAuto_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.

Be the first to comment

Leave a Reply

Your email address will not be published.


*