Adakalanya, karena satu dan lain hal, seperti misalnya kemampuan membuat jenis report yang terbatas, bentuk format tidak seperti yang diinginkan, informasi yang diperoleh tidak optimal, dan sebagainya, kita ingin mengolah data dengan menggunakan aplikasi spreadsheet semacam Excel. Dengan Excel, bentuk report yang memanjang ke kanan akan lebih mudah dicetak sesuai dengan keinginan, karena spreadsheet itu menyediakan fasilitas colum to repeat at left, sehingga kolom disebelah kiri bisa dicetak ulang di halaman berikutnya, mirip seperti row to repeat at top atau header di Access yang mencetak ulang bagian atas di setiap halaman kertas.
Buatlah form dengan Blank Form dan simpanlah dengan nama frmEksporDialog. Atur properti Modal=Yes pada form ini sehingga form ini hanya akan tampil di atas form lain.
Setelah itu, pada bagian form detail, sisipkan text box kosong (unbound) dengan Name=nmFile. Di bawah text box nmFile, sisipkan label dengan Caption= Nama file akan disimpan dengan Excel versi lama (Excel 2000), jadi jangan lupa untuk menambahkan ekstensi .xls di akhir nama file. File itu dapat dibuka dengan Excel versi terbaru. Dibawah label ini, kita dapat menyisipkan text box atau label, yang fungsinya untuk memberi contoh penulisan seperti tersaji pada Gambar 1.
Di bawah label contoh penulisan, sisipkan tombol perintah dengan properti Name= OKEkspor dan Caption=OK. Setelah itu, sisipkan 2 buah label yang berfungsi untuk memberitahu bahwa data sudah diekspor ke Excel sesuai dengan text box nmFile di atas dan pengguna diminta mengekliknya untuk membuka file Excel itu. Label pertama mempunyai properti Name=lblEkspor, Caption= Data sudah diekspor ke Excel dengan nama:, visible=No. Label kedua mempunyai properti Name= LokasiTarget, Caption=Nama file, dan Visble=No. Kedua label ini hanya muncul saat ekspor data berhasil dilakukan.
Salinlah kode VBA ini dapa modul form frmEkporDialog:
EksporKeExcel(strNamaObyek, strSumber, [strSubSumber])
Variabel strNamaObyek adalah nama target file pada Excel. Kita dapat memberikan default nama sesuai dengan yang diinginkan seperti kombinasi dari berbagai macam kriteria yang mungkin ada, mengambil nama judul form, dan sebagainya. Variabel strSumber adalah nama form yang aktif terbuka, digunakan untuk membaca record source dari form itu. Bila tidak ada record source dalam form yang terbuka dan record source yang kita inginkan ada di subform, maka kita harus menambahkan variabel lain. Variabel lain itu adalah strSubSumber yang merupakan nama subform yang aktif terbuka (bila di form tidak ada).
Sebagai misal, data laporan pertanggungjawaban biaya pada frmResponBiaya di atas. Tambahkan tombol perintah dengan properti Name=Ekspor dan Caption=Ekspor ke Excel. Lalu pada properti On Click, sisipkan expression builder sebagai berikut:
=EksporKeExcel([Caption]&[Deriv1]&[Bulan]&[Tahun],[Name],"frmResponBiayaDetail")
Target file di Excel itu adalah kombinasi dari caption (judul) dari form, control source untuk Deriv1, Bulan, dan Tahun yang ada di form itu. Form yang terbuka dapat diidentifikasi melalui control Name yang berarti frmResponBiaya, di mana di situ tidak terdapat record source. Jadi kita harus menambahkan variabel lain, "frmResponBiaya Detail" yang mempunyai record source. Record source ini yang akan diolah menjadi data yang siap diekspor ke Excel. Bila tombol OKEkspor diklik, maka data dari record source itu akan diekspor ke Excel dengan nama default sama dengan target file ditambahkan dengan ekstensi .xls yang merupakan ekstensi default dari Excel 2000. Kita bisa mengubah nama target sesuai dengan keinginan, yang penting ekstensinya harus .xls (Excel 2000).
Gambar 1 |
Setelah itu, pada bagian form detail, sisipkan text box kosong (unbound) dengan Name=nmFile. Di bawah text box nmFile, sisipkan label dengan Caption= Nama file akan disimpan dengan Excel versi lama (Excel 2000), jadi jangan lupa untuk menambahkan ekstensi .xls di akhir nama file. File itu dapat dibuka dengan Excel versi terbaru. Dibawah label ini, kita dapat menyisipkan text box atau label, yang fungsinya untuk memberi contoh penulisan seperti tersaji pada Gambar 1.
Di bawah label contoh penulisan, sisipkan tombol perintah dengan properti Name= OKEkspor dan Caption=OK. Setelah itu, sisipkan 2 buah label yang berfungsi untuk memberitahu bahwa data sudah diekspor ke Excel sesuai dengan text box nmFile di atas dan pengguna diminta mengekliknya untuk membuka file Excel itu. Label pertama mempunyai properti Name=lblEkspor, Caption= Data sudah diekspor ke Excel dengan nama:, visible=No. Label kedua mempunyai properti Name= LokasiTarget, Caption=Nama file, dan Visble=No. Kedua label ini hanya muncul saat ekspor data berhasil dilakukan.
Gambar 2 |
Option Compare Database Private Sub Form_Open(Cancel As Integer) Me.Caption = "Ekspor Data ke Excel " & Nz(IdPerusahaan("Nama"), "") If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True Me.nmFile.DefaultValue = "'" & BacaLokasiFolder & globNamaObyek & ".xls'" End Sub Private Sub nmFile_GotFocus() Me.LblEkspor.Visible = False Me.LokasiTarget.Visible = False End Sub Private Sub OKEkspor_Click() Dim qdfTemp As QueryDef If Not AdaFolder(Me.nmFile) Then MsgBox "Tidak ada folder/directory ini: " & NamaFolder(Me.nmFile) Exit Sub End If If Right(Me.nmFile, 4) <> ".xls" Then MsgBox "Nama file harus berekstensi .xls" Exit Sub End If If Right(Me.nmFile, 1) = "\" Then MsgBox "Tidak ada nama file/directory di folder ini: " & Me.nmFile Exit Sub End If If AdaTabelQuery(globSumberRecord) Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, globSumberRecord, Me.nmFile, True Else DoCmd.SetWarnings False If AdaTabelQuery("qdfEkspor") Then DoCmd.DeleteObject acQuery, "qdfEkspor" CurrentDb.CreateQueryDef "qdfEkspor", globSumberRecord DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "qdfEkspor", Me.nmFile, True DoCmd.DeleteObject acQuery, "qdfEkspor" DoCmd.SetWarnings True End If Me.LblEkspor.Visible = True Me.LokasiTarget.HyperlinkAddress = Me.nmFile Me.LokasiTarget.Caption = Me.nmFile Me.LokasiTarget.Visible = True End SubSupaya form frmEksporDialog bisa ditampilkan, maka kita harus membuat tombol perintah ekspor di form yang datanya akan diekspor. Lalu, untuk membuka form itu, gunakan fungsi yang telah kita buat di modul mdlGlobal, yaitu:
EksporKeExcel(strNamaObyek, strSumber, [strSubSumber])
Variabel strNamaObyek adalah nama target file pada Excel. Kita dapat memberikan default nama sesuai dengan yang diinginkan seperti kombinasi dari berbagai macam kriteria yang mungkin ada, mengambil nama judul form, dan sebagainya. Variabel strSumber adalah nama form yang aktif terbuka, digunakan untuk membaca record source dari form itu. Bila tidak ada record source dalam form yang terbuka dan record source yang kita inginkan ada di subform, maka kita harus menambahkan variabel lain. Variabel lain itu adalah strSubSumber yang merupakan nama subform yang aktif terbuka (bila di form tidak ada).
Sebagai misal, data laporan pertanggungjawaban biaya pada frmResponBiaya di atas. Tambahkan tombol perintah dengan properti Name=Ekspor dan Caption=Ekspor ke Excel. Lalu pada properti On Click, sisipkan expression builder sebagai berikut:
=EksporKeExcel([Caption]&[Deriv1]&[Bulan]&[Tahun],[Name],"frmResponBiayaDetail")
Target file di Excel itu adalah kombinasi dari caption (judul) dari form, control source untuk Deriv1, Bulan, dan Tahun yang ada di form itu. Form yang terbuka dapat diidentifikasi melalui control Name yang berarti frmResponBiaya, di mana di situ tidak terdapat record source. Jadi kita harus menambahkan variabel lain, "frmResponBiaya Detail" yang mempunyai record source. Record source ini yang akan diolah menjadi data yang siap diekspor ke Excel. Bila tombol OKEkspor diklik, maka data dari record source itu akan diekspor ke Excel dengan nama default sama dengan target file ditambahkan dengan ekstensi .xls yang merupakan ekstensi default dari Excel 2000. Kita bisa mengubah nama target sesuai dengan keinginan, yang penting ekstensinya harus .xls (Excel 2000).
Contoh aplikasi jadinya bisa di share...?
ReplyDeleteMohon maaf, tidak bisa, tetapi kalau mengikuti daftar isi dari awal sd akhir seharusnya bisa di-copy dan paste. Atau, beli yang sudah jadi di toko buku Gramedia..
Delete