Sebagai pembuat sebuah template laporan, mungkin kita tidak menginginkan user melakukan tindakan tertentu. Misalnya melakukan save as, print, insert sheet, dan sebagainya. Dengan menambahkan sedikit code vba, kita bisa me-manage interaksi antara user dengan spreadsheet yang kita buat. Nah, jex-cel telah mencatat beberapa contoh code yang dapat digunakan untuk mencegah user menjalankan command tertentu di excel.
1. Mencegah Save As
2. Mencegah print
3. Mencegah print sheet tertentu
4. Mencegah insert sheet
Atas dasar alasan tertentu, mungkin kita tidak ingin user melakukan save as dan mengganti nama file template yang kita buat. Untuk itu, kita bisa menyisipkan code pada module workbook.
Letak code dalam modul VBA dapat dilihat dalam screenshot berikut:
Setelah code di copy paste atau diketik di modul object thisworkbook, silahkan coba lakukan proses Save As
Maka akan muncul pesan seperti pada gambar di bawah ini:
Jika user menekan tombol ok, maka file akan disimpan biasa (bukan save as) dan tidak ada perubahan nama file. Jika user menekan cancel, maka perubahan tidak akan tersimpan.
Karena melihat banyak kertas print berakhir di tempat sampah atau tercecer / menumpuk di bawah meja kerja, kita bisa berinisiatif untuk membantu menghemat kertas dengan cara mencegah user untuk melakukan print. Untuk itu kita bisa menyisipkan code pada event before print di module thisworkbook.
Silahkan test dengan cara menjalankan command print (File --> Print --> Tombol Print)
Maka user akan melihat pesan pemberitahuan tidak bisa print, seperti gambar di bawah ini.
Kita bisa saja menyisipkan code tanpa code pesan (msgbox) seperti berikut:
Code tersebut sebenarnya sudah cukup untuk mencegah user melakukan print. Namun jika tidak ada pesan pemberitahuan, maka kemungkinan besar user akan menyangka ada error dan mengejar orang IT untuk memperbaikinya. Dengan kata lain, msgbox meski opsional tetapi sangat penting untuk memberitahu user mengenai apa yang tidak boleh dilakukan maupun yang harus dilakukan sehingga bisa mencegah adanya kesalahpahaman.
Jika kita ingin mencegah user melakukan print sheet tertentu saja maka gunakan code berikut:
Catatan: dalam contoh di atas, nama sheet yang dicegah untuk diprint adalah "Sheet1", "Sheet2". Kita dapat merubah dan menambah sheet sesuai keperluan.
Misalnya:
Case "data 1", "data 2", "data 3"
Excel sebenarnya sudah menyediakan fiture Protect Workbook’s Structure yang dapat mencegah user untuk bisa men-delete worksheet, merubah susunan sheet, merubah nama sheet dan sebagainya. Namun adakalanya kita hanya ingin mencegah user untuk menambahkan sheet baru dan tetap mengizinkan perubahan struktur lainnya.
Untuk mencegah user menambahkan sheet baru, lakukan langkah seperti contoh sebelumnya. Bedanya hanya pada code yang digunakan.
Silahkan lakukan test dengan cara mencoba tambahkan sheet baru. Maka akan tampil pesan seperti screenshot di bawah ini.
Sekian dulu catatan mengenai contoh-contoh code untuk mencegah user melakukan tindakan tertentu pada excel, yaitu: mencegah save as, mencegah print dan mencegah insert sheet. Semoga bermanfaat.
Artikel terkait:
Teknik Find & Replace Text dalam Comment Box
Cara Entri Data Pada Beberapa Sheet Sekaligus
Cara Membuat Daftar Isi Otomatis
Referensi:
David Raina & Hawley 2007, Excel Hack, Tips & Tools for Streamlining Your Spreadsheet, 2nd edition. O’Reilly Media, Inc
1. Mencegah Save As
2. Mencegah print
3. Mencegah print sheet tertentu
4. Mencegah insert sheet
Mencegah User Melakukan Save As
Atas dasar alasan tertentu, mungkin kita tidak ingin user melakukan save as dan mengganti nama file template yang kita buat. Untuk itu, kita bisa menyisipkan code pada module workbook.
- Jika kita membuat file baru, maka save dulu file tersebut sebelum disisipkan code. Jika workbook baru belum di save, dan kemudian kita menyisipkan code cegah save as maka file tersebut tidak akan bisa di-save sama sekali.
- Tekan Alt F11 untuk masuk ke VBA editor.
- Masuk ke module object Thisworkbook (dengan cara double klik object thisworkbook di jendela project explorer)
- Copy code berikut pada module object thisworkbook.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim responUser As Long
If SaveAsUI = True Then
responUser = MsgBox("Maaf, file tidak bisa di save as dengan nama lain" _
& Chr(10) & "Apakah anda akan menyimpan saja?", vbQuestion + vbOKCancel)
Cancel = (responUser = vbCancel)
If Cancel = False Then Me.Save
Cancel = True
End If
End Sub
Letak code dalam modul VBA dapat dilihat dalam screenshot berikut:
Setelah code di copy paste atau diketik di modul object thisworkbook, silahkan coba lakukan proses Save As
Maka akan muncul pesan seperti pada gambar di bawah ini:
Jika user menekan tombol ok, maka file akan disimpan biasa (bukan save as) dan tidak ada perubahan nama file. Jika user menekan cancel, maka perubahan tidak akan tersimpan.
Mencegah User Melakukan Print.
Karena melihat banyak kertas print berakhir di tempat sampah atau tercecer / menumpuk di bawah meja kerja, kita bisa berinisiatif untuk membantu menghemat kertas dengan cara mencegah user untuk melakukan print. Untuk itu kita bisa menyisipkan code pada event before print di module thisworkbook.
- Tekan Alt F11 untuk masuk ke VBA editor
- Masuk ke module object Thisworkbook (dengan cara double klik object thisworkbook di jendela project explorer)
- Copy code berikut pada module object thisworkbook.
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox "Maaf anda tidak bisa print buku kerja ini", vbInformation
End Sub
Silahkan test dengan cara menjalankan command print (File --> Print --> Tombol Print)
Maka user akan melihat pesan pemberitahuan tidak bisa print, seperti gambar di bawah ini.
Kita bisa saja menyisipkan code tanpa code pesan (msgbox) seperti berikut:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
End Sub
Code tersebut sebenarnya sudah cukup untuk mencegah user melakukan print. Namun jika tidak ada pesan pemberitahuan, maka kemungkinan besar user akan menyangka ada error dan mengejar orang IT untuk memperbaikinya. Dengan kata lain, msgbox meski opsional tetapi sangat penting untuk memberitahu user mengenai apa yang tidak boleh dilakukan maupun yang harus dilakukan sehingga bisa mencegah adanya kesalahpahaman.
Mencegah print sheet tertentu
Jika kita ingin mencegah user melakukan print sheet tertentu saja maka gunakan code berikut:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Select Case ActiveSheet.Name
Case "Sheet1", "Sheet2"
Cancel = True
MsgBox "Maaf anda tidak bisa print " & ActiveSheet.Name, vbInformation
End Select
End Sub
Catatan: dalam contoh di atas, nama sheet yang dicegah untuk diprint adalah "Sheet1", "Sheet2". Kita dapat merubah dan menambah sheet sesuai keperluan.
Misalnya:
Case "data 1", "data 2", "data 3"
Mencegah Insert Sheet
Excel sebenarnya sudah menyediakan fiture Protect Workbook’s Structure yang dapat mencegah user untuk bisa men-delete worksheet, merubah susunan sheet, merubah nama sheet dan sebagainya. Namun adakalanya kita hanya ingin mencegah user untuk menambahkan sheet baru dan tetap mengizinkan perubahan struktur lainnya.
Untuk mencegah user menambahkan sheet baru, lakukan langkah seperti contoh sebelumnya. Bedanya hanya pada code yang digunakan.
- Masuk ke VBA editor dengan cara tekan Alt + 11
- Selanjutnya Masuk ke module object Thisworkbook dengan cara double klik object thisworkbook di jendela project explorer
- Selanjutnya pada module object thisworkbook, copy code di bawah ini:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Application.DisplayAlerts = False
MsgBox "Maaf, anda tidak bisa menambahkan sheet baru", vbInformation
Sh.Delete
Application.DisplayAlerts = True
End Sub
Silahkan lakukan test dengan cara mencoba tambahkan sheet baru. Maka akan tampil pesan seperti screenshot di bawah ini.
Sekian dulu catatan mengenai contoh-contoh code untuk mencegah user melakukan tindakan tertentu pada excel, yaitu: mencegah save as, mencegah print dan mencegah insert sheet. Semoga bermanfaat.
Artikel terkait:
Teknik Find & Replace Text dalam Comment Box
Cara Entri Data Pada Beberapa Sheet Sekaligus
Cara Membuat Daftar Isi Otomatis
Referensi:
David Raina & Hawley 2007, Excel Hack, Tips & Tools for Streamlining Your Spreadsheet, 2nd edition. O’Reilly Media, Inc
mantap bro
ReplyDeleteThanks for sharing this helpful information. Its really work.
ReplyDeleteMS Excel Course