Minggu, 11 Januari 2015

Membuka Sheet Excel Yang Diproteksi

"Oh tidak!!!! aku lupa passwordnya!!!" pernah mengalami berteriak seperti itu, saat lupa password yang dibuat sendiri untuk memproteksi sheet di Excel Gan?
Maksud hati ingin mengamankan rumus yang dibuat untuk menghindari human erorr alias tidak sengaja teredit, tapi akhirnya ketika butuh untuk mengembangkan aplikasi, justru lupa password yang dibikin sendiri.
Jangan khawatir Gan, yang pertama harus agan lakukan adalah mengambil teh atau kopi dan cemilan hehe. Setelah itu duduk di depan PC dan lakukan langkah-langkah berikut :


1. Klik kanan pada sheet yang diproteksi lalu pilih view code (jika sheet sudah dihidden tekan Alt+F11)

Gambar 1. Klik kanan Sheet-View Code


2. Jika sudah, silahkan masukkan kodedi bawah ini :


Sub InternalPasswords()

Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer

On Error Resume Next

For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

ActiveWorkbook.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) _
& Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) _
& Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

If ActiveWorkbook.ProtectStructure = False Then

If ActiveWorkbook.ProtectWindows = False Then

If ActiveSheet.ProtectContents = False Then

Exit Sub

End If

End If

End If

Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next


End Sub


Gambar 2. Masukkan Code


3. Setelah code dimasukkan, silahkan klik Run.



Gambar 3. Klik Run


4. Minum kopi/teh yang sudah agan sediakan, dan nikmati cemilan sambil menunggu proses berjalan hehe. Jika excel muncul tulisan "Not Responding" jangan segera ditutup Gan. Biarkan saja prosesnya berjalan.

5. Setelah proses selesai (tanda loading berhenti) maka silahkan close halaman makro, dan coba edit sheet agan tadi. Insya Alloh berhasil.

Silahkan dicoba, semoga secoret tulisan ini bermanfaat. ^_^.

Belajar Operator dan Tipe Data di Delphi (Kalkulator Sederhana)

Belajar operator bilangan dan tipe data kadang dianggap membosankan dan membuat pusing bagi sebagian calon progamer khususnya pejuang-pejuang tercinta saya. Tapi kalau belajarnya sambil bermain-main membuat kalkulator sederhana, akan terasa jadi lebih mudah diingat dan menyenangkan kan? kan? kan?

Ok, untuk langkah awal silahkan membuat design kalkulator sederhana yang terdiri dari :
a. 4 label
b. 3 edit (dalam VB namanya text field Gan) untuk menempatkan bilangan pertama, kedua, dan hasil operasi bilangan
c. 4 button untuk tombol penjumlahan, pengurangan, perkalian, dan pembagian.
Contoh designnya seperti di bawah ini (agan bisa membuat design sendiri yang lebih menarik) :
Gambar 1. Design Kalkulator

  • Edit 1 ubah name-nya menjadi EdBil1, Edit 2 ubah name-nya menjadi EdBil2, Edit 3 ubah name-nya menjadi EdHasil. Kemudian untuk Text-nya dikosongkan semua ya Gan? (Name dan Text dicari di object inspector ya Gan?)
  • Button 1 ubah caption-nya menjadi "Jumlah", Button 2 ubah caption-nya menjadi "Kurang", Button 3 ubah caption-nya menjadi "Bagi" dan Button 4 ubah caption-nya menjadi "Kali" (Caption dicari di object inspector masing-masing object ya Gan?)
  • Label 1 ubah caption-nya menjadi Bilangan A, Label 2 ubah caption-nya menjadi Bilangan B, Label 3 ubah caption-nya menjadi Hasil

Sekarang kita akan mulai memberikan koding. Jangan sampai salah menempatkan koding ya Gan? Ntar pas user pakai kalkulator agan dan diklik button yang ada caption penjumlahan tapi hasilnya jadi perkalian kan bisa gawat (kesalahan yang terlihat kecil tapi berakibat besar)

1. Double klik Button 1 (caption Jumlah), kita isikan koding penjumlahan seperti di bawah ini Gan :


procedure TForm1.Button1Click(Sender: TObject);
var bil_a:integer;
bil_b:integer;
hasil:integer;
begin
bil_a:=strtoint(EdBil1.Text);
bil_b:=strtoint(EdBil2.Text);
hasil:=bil_a+bil_b;
EdHasil.Text:=inttostr(hasil);
end;

*Penjelasan koding :
a. koding warna biru :

  • Kita harus mendefinisikan objek yang akan diproses. Dalam hal ini kita ibaratkan bil_a, bil_b, dan hasil
  • Bilangan yang akan kita proses di latihan kita adalah bilangan bulat jadi tipe data yang digunakan adalah "integer" yang merupakan tipe data untuk bilangan bulat. Kita variabel-kan bil_a, bil_b, dan hasil dengan integer

b. koding warna merah :
  • Dalam delphi, semua yang diinputkan pada Form, bertipe data String (tipe data untuk huruf) , sehingga jika suatu program membutuhkan proses perhitungan, harus ada konversi data dari string ke dalam bentuk tipe data numerik
  • Kita akan mengkonversi tipe data string input di EdBil1 dan EdBil2 menjadi integer jadi kita menggunakan konversi strtoint. Syntaxnya adalah nama_variabel :=konversi(komponeninput)
  • bil_a merupakan konversi string ke integer dari semua bilangan yang diinputkan di EdBil1.Text dan bil_b merupakan konversi string ke integer dari semua bilangan yang diinputkan di EdBil2.Text


c. koding warna hijau :

  • Setelah input, saatnya membuat koding untuk prosesnya
  • hasil merupakan penjumlahan bil_a dan bil_b

d. koding warna ungu :

  • Kalau tadi pada saat mengolah input kita menggunakan bilangan jadi membutuhkan tipe data integer, maka sekarang kita menampilkan hasil input yang sudah diproses ke dalam EdHasil.Text yang berupa huruf (tipe data string)
  • Konversi yang digunakan adalah integer ke string (inttostr). Syntax-nya adalah komponen_output:=konversi(nama_variabel)
  • EdHasil.Text adalah hasil konversi output dari integer ke string hasil

e. koding warna hitam :

  • itu sih koding utama Gan hehehehe.... ^_^



2. Sekarang klik di Button 2 (caption Kurang). Masukkan koding di bawah ini :


procedure TForm1.Button2Click(Sender: TObject);
var bil_a,bil_b,hasil:integer;
begin
bil_a:=strtoint(EdBil1.Text);
bil_b:=strtoint(EdBil2.Text);
hasil:=bil_a - bil_b;
EdHasil.Text:=inttostr(hasil);
end; 


*Penjelasan  :
kodingnya hampir sama dengan koding penjumlahan Gan, tapi lihat di koding proses warna hijau. Penjumlahan diganti pengurangan.

3. Klik Button 4 (caption Kali). Masukkan koding di bawah ini :


procedure TForm1.Button4Click(Sender: TObject);
var bil_a,bil_b,hasil:integer;
begin
bil_a:=strtoint(EdBil1.Text);
bil_b:=strtoint(EdBil2.Text);
hasil:=bil_a * bil_b;
EdHasil.Text:=inttostr(hasil);
end;

*Penjelasan :
kodingnya hampir sama juga Gan, bedanya di bagian proses koding warna hijau diganti tanda (*) yang berarti kali

4. Klik Button 3 (caption Bagi). Masukkan koding di bawah ini :


procedure TForm1.Button3Click(Sender: TObject);
var bil_a, bil_b:integer;
hasil:real;
begin
bil_a:=strtoint(EdBil1.Text);
bil_b:=strtoint(EdBil2.Text);
hasil:=bil_a / bil_b;
EdHasil.Text:=floattostr(hasil);
end;

*Penjelasan :
Ternyata ada beberapa perbedaan ya Gan? Pada variabel hasil koding warna merah, proses warna hijau, dan koversi output koding warna ungu. Berikut saya uraikan :
a. Pada pembagian, tidak mungkin jika hasilnya selalu bulat. Contohnya 1 dibagi 2 hasilnya adalah 0,5 (bilangan pecahan atau desimal) Sehingga kita harus memberi tipe data untuk bilangan desimal atau pecahan pada hasil yaitu dengan variabel real (variabel untuk pecahan atau desimal).
b. Pada proses warna hijau, karena kita akan membuat koding pembagian maka tandanya diganti menjadi (/) yang berarti bagi.
c. Pada hasil, karena dia merupakan tipe data real maka pada saat akan ditampilkan konversinya dari tipe data real ke string. Kita gunakan konversi floattostr.

Sekarang saatnya kita run program kita. Hasilnya seperti di bawah ini :
Gambar 2. Hasil Kalkulator Sederhana
Bagaimana? Mudah dan menyenangkan kan Gan? Agan juga bisa menambahkan operator yang lain untuk membuat kalkulator agan lebih lengkap. Berikut Jenis operator yang bisa agan tambahkan :
* Derajat Operator :
1.  @, not
2.  *,/,div,mod,and,shl,shr,as
3.  +,-,or,xor
4.  =,<,>,<=,>=,<>,in,is

* Operator Assigment:

Operator Fungsi Tipe yang diproses Tipe hasil proses
* >> Perkalian >> Integer, real Integer, Real
/  >> Pembagian >> real Integer, real Integer, Real
+ >> Penjumlahan >> Integer, real Integer, Real
- >> Pengurangan >> Integer, real Integer, Real
Div >> Pembagian >> integer Integer Integer
Mod >> Sisa hasil bagi >> Integer integer
//Contoh penerapan :
Angka : = 15 * 2, {Hasil 30}
Angka : = 18 / 2, {Hasil 9}
Angka : = 5 + 2, {Hasil 7}
Angka : = 5 - 2, {Hasil 3}
Angka : = 10 Div 2; {Hasil 5}
Angka : = 10 mod 2; {Hasil 0}

* Operator Relasi :

Operator relasi berfungsi untuk membandingkan suatu nilai (ekspresi) dengan nilai (ekspresi) lain yang akan menghasilkan suatu nilai logika (boolean) yaitu True atau False. Kedua data nilai yang dibandingkan tersebut harus memiliki tipe data yang sama.

*Operator Logika :

AND >> Dan >> Integer Boolean
OR >> Atau >> Integer Boolean
Not >> Tidak >> Integer Boolean
Xor >> Exclusive Or >> Integer Boolean
Shl >> Geser Ke kiri >> Integer Boolean
Shr >> Geser ke Kanan >> Integer Boolean

*Operator Boolean :

And >> Dan >> Boolean Boolean
Or >> Atau >> Boolean Boolean
Not >>Tidak >> Boolean Boolean
Xor >> Exclusive Or >> Boolean Boolean

*Berikut contoh konversi tipe data dalam delphi.
• String ke Integer Strtoint
• String ke Real strtofloat
• String ke currency strtocurr
• Integer ke String inttostr
• Real ke String floattostr
• Currency ke String currtostr

Demikian Game kita kali ini. Silahkan dicoba.... ^_^

referensi : Pemrograman Delphi, Agus Sunarso, S. Kom