Minggu, 08 Juni 2014

Memaksa Pengguna Mengaktifkan Macro Security Excel

Tombol On Off
Ada saat dimana anda mungkin menginginkan pengguna file excel yang anda buat untuk mengaktifkan Macro agar file bisa dijalankan sebagaimana mestinya. Dengan kata lain, sebuah file yang didalamnya terdapat kode Macro - mengharuskan pengaturan Macro Security menjadi aktif, karena jika tidak maka file tersebut sudah pasti tidak dapat bekerja sesuai keinginan.

Pada dasarnya dalam Aplikasi Microsoft Office Excel tidak ada sebuah kode untuk mengaktifkan Macro secara otomatis, namun Anda dapat memaksa pengguna untuk mengaktifkan Macro 'secara otomatis' saat sebuah file excel terbuka.

Cara kerja konsep
Ketika Macro Dalam Keadaan MATI (disable)
» Menyembunyikan Sheet utama yang berisi file
» Menampilkan Sheet informasi agar pengguna mengaktifkan macro Ketika Macro Dalam Keadaan NYALA (enable)
» Menampilkan kembali sheet utama
» Menyembunyikan sheet informasi macro

Penting :
» Sebelum memasang kode pastikan MACRO Security dalam keadaan aktif
» Sheet tambahan tidak berada di awal atau di akhir.
» Yang paling penting adalah Berdoa agar kode berhasil……

Mempersiapkan Lembar Kerja
Saya berasumsi bahwa dalam lembar kerja excel anda terdapat 3 buah sheet, dengan masing-masing nama sheet antara lain; Sheet1, Sheet2, dan Sheet3.

Sheet1 dan Sheet3 adalah sheet utama yang berisi data excel anda, sedangkan
Sheet2 adalah Sheet informasi yang Anda dapat mengisinya dengan sebuah informasi agar pengguna mengaktifkan Macro Security.
Memasang Kode VBA
Aktifkan dulu Microsoft Visual Basic, kemudian buatlah sebuah Module dengan cara
klik Menu Insert » Module. dan selanjutnya copy paste kode berikut di Module yang sudah anda buat.
Public bIsClosing As Boolean
Dim wsSheet As Worksheet

Sub HideAll()
Application.ScreenUpdating = False
For Each wsSheet In ThisWorkbook.Worksheets
    If wsSheet.CodeName = "Sheet2" Then
       wsSheet.Visible = xlSheetVisible
    Else
       wsSheet.Visible = xlSheetVeryHidden
    End If
Next wsSheet
Application.ScreenUpdating = True
End Sub

Sub ShowAll()
bIsClosing = False
For Each wsSheet In ThisWorkbook.Worksheets
    If wsSheet.CodeName <> "Sheet2" Then
       wsSheet.Visible = xlSheetVisible
    End If
Next wsSheet
Sheet2.Visible = xlSheetVeryHidden
End Sub

Langkah berikutnya adalah pilih ThisWorkbook dan paste kode berikut di dalamnya
Private Sub Workbook_BeforeClose(Cancel As Boolean)
bIsClosing = True
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Cancel = True Or bIsClosing = False Then Exit Sub
Run "HideAll"
End Sub

Private Sub Workbook_Deactivate()
If bIsClosing = False Then Exit Sub
Run "HideAll"
End Sub

Private Sub Workbook_Open()
Run "ShowAll"
End Sub

Finalizing
Agar kode diatas dapat bekerja dengan baik, simpan file dengan type Excel Macro-Enabled Workbook.
Lihat perubahan dengan cara mengaktifkan atau menonaktifkan pengaturan Macro Excel

Tidak ada komentar:

Posting Komentar