VB6: Menampilkan Data dari Excel ke Datagrid


Back to VB6 dulu hehe...

Lagi pengen bahas gimana cara nya mengambil data dari excel kemudian memuatnya dalam ADODB recorset dan menampilkan pada datagrid.

Sebagai contoh kita punya file excel bernama sample.xls (inget .xls yah bukan .xlsx karena tahun 1998 excel 2007 belom lahir heuheu)



Buat sebuah project visual basic 6 standard, kemudian tambahkan common dialog dan datagrid control pada toolbox.

Tambahkan juga reference Microsoft ActiveX Data Object.

Design UI:
!!! UPDATE
Mohon maaf klo kurang jelas, lstTable itu control ListBox yang rani kasih nama lstTable

Code:
Option Explicit
Dim xConn As ADODB.Connection
Dim rsTable As ADODB.Recordset
Dim rsExcel As ADODB.Recordset
Dim strExcel As String

Private Sub Open_Excel(FilePath As String)
On Error GoTo err_Handler

    Set xConn = New ADODB.Connection
    With xConn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & FilePath & _
                            ";Extended Properties=Excel 8.0;"
        .Open
    End With

Exit Sub
err_Handler:
    MsgBox "Error on Open_Excel :" & Err.Number & " " & Err.Description
End Sub

Private Sub List_Table()
On Error GoTo err_Handler

    lstTable.Clear
    Open_Excel Me.txtFile.Text
    Set rsTable = xConn.OpenSchema(adSchemaTables)
    Do While Not rsTable.EOF
    lstTable.AddItem rsTable.Fields("TABLE_NAME").Value
    rsTable.MoveNext
    Loop
    Set rsTable = Nothing
    xConn.Close
    If Not Me.lstTable.ListCount = 0 Then
       Me.lstTable.ListIndex = 0
       Data_Excel Me.lstTable.Text
    End If

Exit Sub
err_Handler:
    MsgBox "Error on Open_Excel :" & Err.Number & " " & Err.Description
End Sub

Private Sub Data_Excel(Sheet As String)
Open_Excel Me.txtFile.Text

Set rsExcel = New ADODB.Recordset
strExcel = "SELECT * FROM [" & Sheet & "]"

With rsExcel
    .CursorLocation = adUseClient
    .Open strExcel, xConn, adOpenKeyset, adLockReadOnly
    .ActiveConnection = Nothing
End With
Set Me.grdExcel.DataSource = rsExcel
xConn.Close
End Sub

Private Sub cmdBrowse_Click()
dlgOpen.Filter = "Excel Files (*.xls)|*.xls"
dlgOpen.ShowOpen
Me.txtFile.Text = dlgOpen.FileName
End Sub
Untuk load data excel, me list table/sheet, dan menampilkan di datagrid.
Private Sub cmdLoad_Click()
If txtFile.Text = "" Then _
   MsgBox "Pilih file excel untuk proses import": Exit Sub
If LCase(Right$(txtFile.Text, 4)) <> ".xls" Then _
   MsgBox "File harus dalam format Excel(.xls)": Exit Sub
List_Table
End Sub

Private Sub lstTable_Click()
If Not Me.lstTable.ListCount = 0 Then
   Data_Excel Me.lstTable.Text
End If
End Sub

Private Sub txtFile_Change()
  lstTable.Clear
  Set grdExcel.DataSource = Nothing
End Sub

Private Sub cmdExit_Click()
Unload Me
End Sub


Runtime:

Click here if you like this article.


Baca Juga:
VB6: Export to Excel

Post a Comment

102 Comments

Ahmad Fadholi said…
Luar biasa mbak kita yang satu ini, sudah lama tidak pantengan blog ini. Sekali mantengin eh nambah ilmu lagi.

Sukses buat mbak rani irsan...
suriken said…
This comment has been removed by the author.
suriken said…
Mw nanya, saya udah buat tapi ketika di jalankan Error mas..
" error on open_excel;0 "
muncul kaya gitu..
Mohon bantuannya..
Terima kasih sangat membantu ilmunya
rani said…
waduh mba suriken, koq aku dipanggil mas :p

di pc atau laptop nya sudah terinstall excel belum?
suriken said…
Sory mba.. kirain cowo..
hhehehehhe..
Sudah lah mba..


Takutnya syntax nya yang salah..
Unknown said…
punya file nya gk? punya q eror
pada lst
rani said…
erroe nya gimana?
MussVersiPro said…
Private Sub txtFile_Change()
lstTable
Set grdExcel.DataSource = Nothing
End Sub
error nya dsini mbak...
gmna solusi nya mbak...
pnya aku ndk mau d browse...
mhon bntuan nya....
MussVersiPro said…
pnya saya ndk mau d browse mbak...
gmana solsi nya mbak..?
Private Sub txtFile_Change()
lstTable
Set grdExcel.DataSource = Nothing
End Sub
rani said…
error nya kayak gimana?message nya?
itu koq code baris kedua nya cuman "lstTable"?
I my me mine said…
mba, bisa bagi filenya?? gagal terus nih nyobanya
rani said…
klo boleh tau gagal nya gimana ya?
I my me mine said…
yg ad tulisan lsttable itu sebenarnya listbox, textbox, atau memang listtable.

kok d load ga bisa, tulisannya
"method or data member not found"
lalu oleh system d drag bagian .ListCount dibagian private sub listtable.

kalo misalkan memang menggunakan listtable, itu menambahkan pada tollbox dengan component yang mana? di tollbox standar tidak ada list table
rani said…
itu control ListBox yang aku kasih nama lstTable
faisal said…
tlg donk erorr disini
Private Sub cmdBrowse_Click()
dlgOpen.Filter = "Excel Files (*.xls)|*.xls"
dlgOpen.ShowOpen
Me.txtFile.Text = dlgOpen.FileName
End Sub

eror di dlgOpen
variable not define
rani said…
Jangan lupa buat nambahin control common dialog dan beri nama dlgOpen :)
faisal said…
error lagi disini mba

Private Sub txtFile_Change()
lstTable.Clear
Set grdExcel.DataSource = Nothing
End Sub

di grdExcel
faisal said…
udah sukses mba berhasil mkash sudah membantu
I my me mine said…
langsung sukses mba, terimakasih banyak,
Unknown said…
saya ingin nanya mbak, saya ingin menampilkan data gridview dari excel ke vb.net tetapi menggunakan adodb ... bagaiman ya mbak? ini listing saya :
Imports ADODB
Public Class Form1

Dim xConn As ADODB.Connection
Dim rsTable As ADODB.Recordset
Dim rsExcel As ADODB.Recordset
Dim strExcel As String
Private Sub Open_Excel(FilePath As String)

xConn = New ADODB.Connection
With xConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & FilePath & _
";Extended Properties=""Excel 8.0;HDR=YES"";"
.Open()
End With

Exit Sub

End Sub
Private Sub List_Table()

Open_Excel(Me.txt_Open.Text)
rsTable = xConn.OpenSchema(SchemaEnum.adSchemaTables)
Do While Not rsTable.EOF
lst_Table.Items.Add(rsTable.Fields("TABLE_NAME").ToString())
rsTable.MoveNext()
Loop
rsTable = Nothing
xConn.Close()
If Not Me.lst_Table.Items.Count = 0 Then
Me.lst_Table.Items.IndexOf(0)
Data_Excel(Me.lst_Table.Text)
End If

Exit Sub

End Sub
Private Sub Data_Excel(Sheet As String)
Open_Excel(Me.txt_Open.Text)

rsExcel = New ADODB.Recordset
strExcel = "SELECT * FROM [" & Sheet & "]"

With rsExcel
.CursorLocation = ADODB.CursorLocationEnum.adUseClient
.Open(strExcel, xConn, CursorTypeEnum.adOpenKeyset, LockTypeEnum.adLockReadOnly)
.ActiveConnection = Nothing
End With
Me.dgv_Sheet.DataSource = rsExcel
xConn.Close()

End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub btn_Browse_Click(sender As Object, e As EventArgs) Handles btn_Browse.Click
With dlg_Open
.FileName = String.Empty
.InitialDirectory = "C:\"
.Title = "Open Excel File"
'supaya tersaring file excel yang bisa dipilih.
.Filter = "Excel 97-2003|*.xls|Excel 2010|*.xlsx"
End With

dlg_Open.ShowDialog()
Me.txt_Open.Text = dlg_Open.FileName
End Sub

Private Sub btn_Load_Click(sender As Object, e As EventArgs) Handles btn_Load.Click
If txt_Open.Text = " " Then _
MsgBox("Pilih file excel untuk proses import") : Exit Sub

List_Table()
dgv_Sheet.DataSource = rsExcel
End Sub

Private Sub lst_Table_Click(sender As Object, e As EventArgs) Handles lst_Table.Click
Data_Excel(Me.lst_Table.Text)
End Sub
Private Sub txtFile_Change()
dgv_Sheet.DataSource = Nothing
End Sub
End Class

tetapi tidak bisa di buka mbak, ada masalah saat ditekan button load nya... property is not foud katanya mbak.. kiranya mbak mau bantu,, terima kasih..
faisal said…
mba,, klw eksport data ke excel gmn ya pake database mysql di vb6
Unknown said…
mba kalau datanya sudah berhasil tampil ke data grid terus aku mau simpan semuanya ke mysql server gmn mba?
aku pakai vb 6.0 databasenya mysql server..

mohon pencerahannya..
-Terima Kasih-
rani said…
@andi: rsExcel nya di looping aja trus masukin procedure buat insert nya dalam looping
klo insert nya mah udah tau kan?
Unknown said…
aku ga tau mba listing atau kodingnya itu gimana?
kan dimasukan kodingnya ditombol simpan tapi listingnya itu belum ketemu jadi belum bisa disimpan ke mysql server aku
rani said…
klo contoh code buat insert data ke mysql sih ada disini:
http://rani-irsan.blogspot.com/2012/01/5-pengolahan-data-input-data-baru.html

tapi artikel nya serial, jadi buat paham nya baca dari awal:
http://rani-irsan.blogspot.com/2014/06/tutorial-visual-basic-6-vb6-dan-mysql.html
Unknown said…
aku sudah baca dari awal tapi ko vb 6.0 aku untuk referencesnya tidak ada VB MySQL Direct v1.0?

aku copas codingnya tapi compile error: invalid outside procedure salahnya di server mba debug di ip servernya padahal IP sama id nya sudah sama..

Dim oConn As MYSQL_CONNECTION

'Lalu buat 4 buah variable string untuk memuat data-data koneksi ke database server
Option Explicit

Dim server As String 'variabel string untuk server database

Dim UserDB As String 'variabel string untuk user login mysql
Dim password As String 'variabel string untuk password mysql
Dim database As String 'variabel string untuk namadatabase

'Tentukan nilai-nilai 4 variable tersebut pada event Form_load
server = "10.120.205.20"
UserDB = "sa"
password = ""
database = "revisi"

'Buka koneksi dengan code berikut:
Set oConn = New MYSQL_CONNECTION
oConn.OpenConnection server, UserDB, password, database

'Tambahkan pesan yang menyatakan koneksi telah terbuka:
MsgBox "Anda telah terkoneksi dengan database " & database

'Tutup koneksi pada event Form_QueryUnload
oConn.CloseConnection
Set oConn = Nothing

dan yg pengolahan data=>input data baru itu kan kalau kita input di textbox klik simpan akan tampil ke datagrid..
kalau yg aku maksud ini gini mba..

blog inikan tentang "VB6: Menampilkan Data dari Excel ke Datagrid" nah itu aku sudah berhasil dan sekarang kalau data excel sudah tampil di datagrid mau aku simpan di mysql server aku gmn?
dan loopingnya bagaimana ya mba..

terima kasih sudah mau membalas, mohon pencerahannya ya mba :)
rani said…
oh ya ya.... maaf klo jawaban nya ga ke fokus ke artikel ^_^
klo gitu rani anggap aja Andi udah tau gimana cara saving ke database mysql yah
looping nya gini
Dim i As Integer
rsExcel.MoveFirst
For i = 0 to rsExcel.Recordcount-1
'Masukin code buat insert record nya disini
'buat ambil value dari recordset rsExcel!namafield
Next

Happy coding...
Unknown said…
aku biasanya save dari textbox ke database mba se3perti ini:

If ttgl.Text = "" Or tjam.Text = "" Or tmesin.Text = "" Or tid.Text = "" Or tnama.Text = "" Then
MsgBox "Data Belum Lengkap Terinput!", vbExclamation, ".:: Informasi ::."
Else
Adodc2.Recordset.AddNew
Adodc2.Recordset!urut = turut.Caption
Adodc2.Recordset!tgl = ttgl.Text
Adodc2.Recordset!jam = tjam.Text
Adodc2.Recordset!mesin = tmesin.Text
Adodc2.Recordset!ID = tid.Text
Adodc2.Recordset!nama = tnama.Text
Adodc2.Recordset.Update
MsgBox "Data Telah Tersimpan", vbOKOnly + vbInformation, "Info"
End If
tapi kalau datagrid ke mysql aku msh blm bisa mba salah terus mba..mohon pencerahannya maaf ya mba bawel aku gregetan soalnya kalau tidak ketemu hehe
rani said…
Adodc2.Recordset!urut = rsExcel!urut

rsExcel!urut ---> urut disini nama field recordset excel nya.
Unknown said…
aku sudah coba mba jadi begini:

Private Sub csimpan_Click()
Dim i As Integer
rsExcel.MoveFirst
For i = 0 To rsExcel.RecordCount - 1
'Masukin code buat insert record nya disini
'buat ambil value dari recordset rsExcel!namafield
Adodc2.Recordset.AddNew
Adodc2.Recordset!keypass = rsExcel!keypass
Adodc2.Recordset!UserId = rsExcel!UserId
Adodc2.Recordset!nama = rsExcel!nama
Adodc2.Recordset!password = rsExcel!password
Adodc2.Recordset!tgl = rsExcel!tgl
Adodc2.Recordset!hita = rsExcel!hita
Adodc2.Recordset!byk = rsExcel!byk
Adodc2.Recordset.Update
MsgBox "Data Telah Tersimpan", vbOKOnly + vbInformation, "Info"
Next
End Sub

tapi masih error mba coba kalau di artikel ini kan ada: kodewarna, namawarna kalau disimpan listingnya bagaimana?

terima kasih
rani said…
kodewarna dan namawarna itu nama field di contoh yang rani bikin, tinggal disesuaikan aja.
kayak nya error primary key ya?
setelah update mestinya nambah movenext supaya baca record sebelum nya
Adodc2.Recordset.Update
rsExcel.MoveNext
Unknown said…
sekarang compile errornya: for without next..

itu gmn mba?
rani said…
looping nya kan pake for next
cek lagi code nya
next nya kehapus ato gimana
Unknown said…
ini mba listing simpan aku:

Private Sub csimpan_Click()
Dim i As Integer
rsExcel.MoveFirst
For i = 0 To rsExcel.RecordCount - 1

'Masukin code buat insert record nya disini
'buat ambil value dari recordset rsExcel!namafield
Adodc2.Recordset.AddNew
Adodc2.Recordset!keypass = grdExcel.Columns(0)
Adodc2.Recordset!oto = grdExcel.Columns(1)
Adodc2.Recordset!UserId = grdExcel.Columns(2)
Adodc2.Recordset!nama = grdExcel.Columns(3)
Adodc2.Recordset!Password = grdExcel.Columns(4)
Adodc2.Recordset!team = grdExcel.Columns(5)
Adodc2.Recordset!jml = grdExcel.Columns(6)
Adodc2.Recordset!nama2 = grdExcel.Columns(7)
Adodc2.Recordset!noma = grdExcel.Columns(8)
Adodc2.Recordset!tgl = grdExcel.Columns(9)
Adodc2.Recordset!hita = grdExcel.Columns(10)
Adodc2.Recordset!byk = grdExcel.Columns(11)
Adodc2.Recordset!byk3 = grdExcel.Columns(12)
Adodc2.Recordset.Update
'MsgBox "Data Telah Tersimpan", vbOKOnly + vbInformation, "Info"
rsExcel.MoveNext
Next
End Sub

tapi masih debug object variable or with block variable not set

yang di artikel ini mau disave seperti apa mba listingnya agar semua datanya tersimpan semua di database.
rani said…
debug object variable or with block variable not set nya mengarah kemana?
code nya juga berubah ngga ambil lagi dari recodser rsExcel, rsExcel.MoveFirst dan move next nya jadi ga perlu klo ambil nilai dari grid

maaf klo untuk odbc mysql rani blom bisa bantu debuging, karena rani ga pake itu.
Unknown said…
kalau Koneksi Visual Basic 6 (VB6) MySQL itu ko aku referencenya gmn mba?
terus kalau aku mau membuat koneksi bagaimana dan dimana?
jadi kalau aku butuhkan koneksi tgl dipagil aja tanpa hrs ngetik kodingnya lagi..

dan koding sql untuk insert table di datagrid gmn ya mba?
rani said…
silahkan baca lagi
http://rani-irsan.blogspot.com/2011/04/koneksi-visual-basic-6-vb6-mysql.html
dan ikuti langkah nya dari awal artikel
Unknown said…
mba rani aku sudah ketemu listing simpannya kaya gini mba..

Dim rsExcel As ADODB.Recordset
Dim i As Integer

Private Sub csimpan_Click()
Dim i As Integer
rsExcel.MoveFirst
For i = 0 To rsExcel.RecordCount - 1

'Masukin code buat insert record nya disini
'buat ambil value dari recordset rsExcel!namafield
Adodc2.Recordset.AddNew
Adodc2.Recordset!termid = grdExcel.Columns(0)
Adodc2.Recordset!lokasi = grdExcel.Columns(1)
Adodc2.Recordset!total = grdExcel.Columns(2)
Adodc2.Recordset!out = grdExcel.Columns(3)
Adodc2.Recordset.Update
rsExcel.MoveNext
Next
MsgBox "Data Telah Tersimpan", vbOKOnly + vbInformation, "Info"
End Sub

makasih banyak ya mba pencerahannya..
Unknown said…
mba ko masih error on open_excel 424 object required
mohon pencerahannya
rani said…
kayak nya ada object yang belum ditambahkan, coba di cek lagi dan ikuti tahapan artikel nya dari awal :)
Hamdan Ritonga said…
mbak rani, ini aku udah bisa browse .csv cuma pas load gagal mbak. gimana ya solusinya, karna excel yang saya buka bukan .xls tapi .csv mbak. mohon bantuannya
Hamdan Ritonga said…
masih error mbak di fnum nya. saya ingin menampilkan csvnya saja
rani said…
oh gitu.... ^_^
Hamdan Ritonga said…
mohon bantuannya mbak hehe :)
rani said…
error nya gimana yah? soal nya rani ga bisa reproduce error nya.
dan code nya jalan baik2 aja
Hamdan Ritonga said…
setelah saya browse file excel (.csv) nya itu gak mau kebuka di datagrid1 mbak.
rani said…
maaf penjelasan nya blom bisa buat nge-trace error nya dimana...

browse file dengan commondialog memang hanya untuk memilih file.
jadi focus nya ke browse tapi ke procedure untuk menampilkan csv nya
dan procedure nya emang beda sama excel

coba dipahami fungsi dari masing2 codenya supaya tau salah nya dimana
tiap error juga ada error message nya kan? sebagai gambaran error nya kenapa
Hamdan Ritonga said…
sudah bisa ketampil mbak, sekarang yang gak bisa di bagian INSERT INTO nya .

Option Explicit

'Untuk menampilkan CSV
Dim rsTemp As ADODB.Recordset
Dim strFileName As String
Dim fnum As Integer
Dim strFileValue As String
Dim lines() As String
Dim one_line() As String
Dim num_rows As Long
Dim num_cols As Long
Dim r As Long
Dim c As Long

'Koneksi ADO Ms Access
Dim oConn As New ADODB.Connection
Dim strConn As String
Dim rsData As ADODB.Recordset
Dim SQL As String
Dim i As Integer


Sub Open_Connection()
Set oConn = New ADODB.Connection
oConn.ConnectionString = strConn
oConn.Open
End Sub


Sub Load_Data()
Open_Connection
Set rsData = New ADODB.Recordset
SQL = "SELECT * FROM Table1"
With rsData
.CursorLocation = adUseClient
.Open SQL, oConn, adOpenDynamic, adLockOptimistic
.ActiveConnection = Nothing
End With
Set DataGrid2.DataSource = rsData
oConn.Close
End Sub


Private Sub Form_Load()

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\latihan.mdb;" & _
"Persist Security Info=False"

Load_Data

Me.Caption = "Import Data Item"
Label1.Caption = "Delimiter"
With Combo1
.AddItem ","
.AddItem ";"
.ListIndex = 0
End With
Text1.Text = ""
Text1.Locked = True
Command1.Caption = "Browse..."
DataGrid1.Caption = "Data CSV"
Command2.Caption = "Begin Import!"
Command2.Enabled = False
DataGrid2.Caption = "Data Access"

End Sub


Sub Data_Temp(arr() As String)

Set rsTemp = New ADODB.Recordset

For i = 0 To UBound(arr)
rsTemp.Fields.Append arr(i), adVarChar, 255, adFldIsNullable
Next

rsTemp.Open
Set DataGrid1.DataSource = rsTemp

End Sub


Private Sub Command1_Click()

CommonDialog1.Filter = "Comma Delimited (*.csv)|*.csv"
CommonDialog1.ShowOpen

Text1.Text = CommonDialog1.FileName

If Me.Text1.Text = "" Then Exit Sub

strFileName = Text1.Text

' mengambil isi file
fnum = FreeFile
Open strFileName For Input As fnum
strFileValue = Input$(LOF(fnum), #fnum)
Close fnum

' memecah baris ke variable lines.
lines = Split(strFileValue, vbCrLf)

' jumlah baris
num_rows = UBound(lines)

'header/nama kolom
one_line = Split(lines(0), Me.Combo1.Text)
num_cols = UBound(one_line)
Data_Temp one_line

' input nilai ke recordset
For r = 1 To num_rows - 1
rsTemp.AddNew
one_line = Split(lines(r), Combo1.Text)
For c = 0 To num_cols
rsTemp.Fields(c).Value = one_line(c)
Next
rsTemp.Update
Next
rsTemp.MoveFirst
Command2.Enabled = True
End Sub


Sub RunQuery(sSQL As String)
Dim cmd As New ADODB.Command
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = strConn
.CommandType = adCmdText
.CommandText = sSQL
.Execute
End With
End Sub


Private Sub Command2_Click()
On Error GoTo errHandler
rsTemp.MoveFirst
For i = 0 To rsTemp.RecordCount - 5
RunQuery "INSERT INTO Table1 " & _
"(Tanggal, Waktu, Mode Inverse, Iset, I sistem, Waktu Trip) VALUES " & _
"('" & rsTemp.Fields(0).Value & "', " & _
"'" & rsTemp.Fields(1).Value & "', " & _
"'" & rsTemp.Fields(2).Value & "', " & _
"'" & rsTemp.Fields(3).Value & "', " & _
"'" & rsTemp.Fields(4).Value & "', " & _
"'" & rsTemp.Fields(5).Value & "')"
rsTemp.MoveNext
Next

rsTemp.MoveFirst
MsgBox "Proses Import Selesai"

Load_Data

Exit Sub
errHandler:
MsgBox "Error on Import: " & Err.Description
End Sub

mohon di koreksi mbak, masih baru pegang vb nih hehe
rani said…
oh kirain teh cuman pengen nampilin csv nya ajah heuheu...

coba lihat di bagian ini
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\latihan.mdb;" & _
"Persist Security Info=False"

nama database yang digunakan apa? disimpannya dimana?
klo rani nulis App.Path & "\latihan.mdb;"
karena file database access nya berada satu folder dengan file project/exe nya
dan nama file database nya latihan.mdb
Hamdan Ritonga said…
sudah dalam satu folder mbak, saya juga menamakan databasenya sama latihan.mdb.
Hamdan Ritonga said…
sudah bisa mbak, terima kasih banyak hehe
Unknown said…
mbak ada bisa kasih tutorial menampilkan data excel ke textbox VB 6 ga?
Unknown said…
file extensi nya erro
Unknown said…
mbak itu hanya bisa buat format .xls yaa?? saya pake .xlsx ko ga bisa siih mbak, format di scriptnya juga sudah saya ganti jadi :

Private Sub cmdBrowse_Click()
dlgOpen.Filter = "Excel Files (*.xlsx)|*.xlsx" <========
dlgOpen.ShowOpen
Me.txtfile.Text = dlgOpen.FileName
End Sub
Unknown said…
Mba koh error disini
Private_sub cmdBrowse_click
dlgOpen.filter "excel files(*.xls)|*.xls"
DlgOpen.showopen
Me.txtfile.text = dlgOpen.filename

Itu jalan keluarnya gimana mba?
Tolong bales:)

By:innarotun naja
Terima kasih,,:)
rani said…
@Arif Husein: VB6 nya belom support *.xlsx
rani said…
@Innarotun Naja: pesan error nya kayak gimana?
Unknown said…
Error on open_excel:-2147467259could not find installable ISAM
Error disini knapa ya mba?
rani said…
@Innarotun Naja: kemungkinan ada komponen yang diperlukan belum diinstall, apa di PC nya ada excel?
This comment has been removed by the author.
Mbak mau tanya..kalau kita mau buat databasenya Vb nya langsung masuk ke excel gt gmna ya mbak?jadi misalkan kita sudah membuat table di excel..lalu di Vb nya kita tekan save..secara otomatis akan masuk ketable yang ada di excel dan otomatis mengikuti penyimpanan table nya menurut urutan table excel nya..bisa ga seperti itu mbak? tolong solusi mbak..terimakasih..
I my me mine said…
mba rani ini aku mau tanya kalo data yang ada di form 1 itu mau kita filter gimana caranya, saya bisa filternya kalo data masternya format database kalo format excel saya kesulitan, tolong bantuannya mba
rani said…
itu kan data nya masuk ke recordset, filter aja pake recordset nya
Unknown said…
mau tanya, kalo saya punya matrik (4,4) kemudian mau saya masukkan ke datagrid di vb6 bagaimana ya?
masih baru belajar
terima kasih
Unknown said…
semisal matriknya (3,3)

Dim arr(3, 3) As String
Private Sub Command1_Click()
arr(0, 0) = 1
arr(0, 1) = 2
arr(0, 2) = 3
arr(1, 0) = 4
arr(1, 1) = 5
arr(1, 2) = 6
arr(2, 0) = 7
arr(2, 1) = 8
arr(2, 2) = 9

For i = 0 To 2
kal = ""
For j = 0 To 2
kal = kal & arr(i, j) & " "
Next j
List1.AddItem kal
Next i
End Sub

saya bisa tampilkan di list box. tapi kalo mau tampilkan di datagrid bagaimana?
rani said…
Coba pake temporary recordset, aku blom punya sih contoh spesifik nya di blog ini.
Cuman udah pake buat beberapa keperluan contoh nya waktu nampilin data mysql di artikel ini:
http://rani-irsan.blogspot.co.id/2011/04/2-menampilkan-data-di-datagrid.html
coba perhatikan di bagian ini:
Set rsData = New ADODB.Recordset
rsData.Fields.Append rsMySQL.Fields(0).Name, adVarChar, 10, adFldIsNullable
rsData.Fields.Append rsMySQL.Fields(1).Name, adVarChar, 50, adFldIsNullable
rsData.Open
Sugi Ak 45 said…
Mbak punya saya sudah nampil sperti di contoh. Trz kalau mau nambah langsng simpan ke dalam database gimana ya kodingnya
rani said…
looping aja data nya dari rsExcel terus masukin code untuk simpan di database, database nya apa?
koin said…
Mbak kalau mencari data duplikat dengan kriteria lebih dari kodingnya gimana ya?
rani said…
data duplikat di mana nya maksud nya? excel/database?
koin said…
This comment has been removed by the author.
koin said…
Datanya dari excel....
rani said…
coba diperjelas alur proses nya gimana? supaya masuk ke grid ga duplikat?
koin said…
Alurnya begini Mbak, saya ambil data dari excel kemudian ditampilkan di datagrid. Data yang ditampilkan oleh datagrid ini ada yang ganda. Caranya untuk mencari semua data ganda yang ada di dalam datagrid dan bisa ditampilkan ke datagrid yang lain rumusnya gimana ya Mbak. Terus data ganda itu bisa disimpan dalam format excel.
sindhu said…
Kalau pas file excelnya terbuka dan otomatis update bisa nggak di load dan dibaca dari vb nya?
rani said…
@koin:
data dari excel kemudian ditampilkan di datagrid contohnya ada di artikel ini
nah sebelum ditampilkan di grid kan data nya ditampung dulu ke sebuah recordset yang nama nya rsExcel
kita bisa otak atik data pakai recordset ini, sebagai pembanding buat lagi temporary recordset
cara nya disini: http://rani-irsan.blogspot.co.id/2017/01/vb6-temporary-recordset.html
sebagai contoh primary key buat cek double nya seperti artikel pakai "kodewarna"
kita buat 2 buah temporary recodset:
- rsClean --> untuk menampung data tanpa double
- rsDouble --> untuk menampung hanya data double

kemudian cek dan add dengan looping, kira2 code nya seperti ini
Dim r As Integer
rsExcel.MoveFirst
For r = 0 To rsExcel.RecordCount - 1
If rsClear.RecordCount = 0 Then
rsClear.AddNew
rsClear!kodewarna = rsExcel!kodewarna
rsClear!namawarna = rsExcel!namawarna
rsClear.Update
Else
rsClear.MoveFirst
rsClear.Find "kodewarna = '" & rsExcel!kodewarna & "'"
If Not rsClear.EOF Then
rsDouble.AddNew
rsDouble!kodewarna = rsExcel!kodewarna
rsDouble!namawarna = rsExcel!namawarna
rsDouble.Update
Else
rsClear.AddNew
rsClear!kodewarna = rsExcel!kodewarna
rsClear!namawarna = rsExcel!namawarna
rsClear.Update
End If
End If
rsExcel.MoveNext
Next
Set DataGrid2.DataSource = rsClear
Set DataGrid3.DataSource = rsDouble

silahkan disesuaikan
rani said…
@shindu: karena saat ditarik dari excel dimasukan dulu ke dalam recordset rsExcel maka bisa digunakan ulang untuk diotak atik dengan code VB nya
koin said…
Ok Mbak Rani, terima kasih
koin said…
This comment has been removed by the author.
Unknown said…
Nice mbak, tp kalo buka .xlsx + .xls gmn yak?? Udh ane coba rubah2...
Unknown said…
This comment has been removed by the author.
Unknown said…
Kok lstTable.AddItem ane error ya mbak, pesannya argument not optional
rani said…
@sancorp AP : karena ini masih VB6 jadi belum support .xlsx tampaknya
Unknown said…
Trus kalo mo search data dari datagrid ini d form lain gmn ya mbak??
Unknown said…
Ada kontak yg bisa d hubungin gk mbak, soalnya masih mo tanya2 lebih lanjut ini.. hehehe
marciano said…
Ass..terima kasih atas ilmunya mba...mba mau tanya..data yg ada ( hasil load dari excel ) di datagrid kemudian mau di simpan dalam table databasenya gimana mba...? Mohon bantuannya mba..terima kasih
Unknown said…
Saya sudah mikutin cara nya diatas tetapi gabisa saat browse ke file nya malah variable not defined dan ada waarna kuning di Private Sub cmdBrowse mohon bantuann ya
rani said…
@rizky fadilah: klo error nya "variable not defined" kemungkinan ada control yang belum ditambahkan. CommonDialog nya udah ditambahin blom?
coba lihat di gambar yang ini:
http://3.bp.blogspot.com/-WVDiaPV_j7A/U05H8b-oz9I/AAAAAAAAB6E/KSXk4k6KHUA/s1600/vbexcel4.png
di sudut kanan atas itu control CommonDialog yang diberi nama dlgOpen.
ruby said…
Mb rani, cara buat form datagridnya gimana?
Unknown said…
saya terbiasa memakai DbGrid, kalo menampilkan dari excel ke DbGrid, bukan ke datagrid.. gmn caranya ya? mhn bantuannya ya
rani said…
@ruby: control data grid mungkin ya? itu ada di step nya tambahin dulu komponen microsoft datagrid control nya baru tambahin kayak nambah kontrol lainnya.

@streetfire: saya belum pernah pake DbGrid.
ngerahumukan said…
Maaf mbak kalau ingin menampilkan datanya berdasarkan kriteria tertentu bagaimana ya?
Misal kolumn A diisi dengan kode barang, kolumn B dengan nama barang.
Kemudian hanya ingin menampilkan data kode barang yang ada huruf "G" saja
rani said…
@Septiyana: coba pakai fungsi filter nya recordset rsExcel kan recordset.
Contoh:
rsExcel.Filter = "kodewarna='K%'"
untuk memfilter kode warna yang diawali huruf K saja.
aufik said…
Mau nanya mbk..
Kenapa saat saya klik load ada eror disini
Private Sub cmdLoad_Click()
If txtFile.Text = "" Then _
MsgBox "Pilih file excel untuk proses import": Exit Sub
If LCase(Right$(txtFile.Text, 4)) <> ".xls" Then _
MsgBox "File harus dalam format Excel(.xls)": Exit Sub
List_Table
End Sub

Ada keterangan "block if without end if"
rani said…
@aufik :
coba dicek lagi penulisan underscore _ nya udah bener apa belum.
sebenernya rani pakai underscore itu supaya mudah copy paste code aja.
tapi copy paste pun tetep harus paham code itu buat apa.

klo aufik mau bikin satu baris aja langsung.
If txtFile.Text = "" Then MsgBox "Pilih file excel untuk proses import": Exit Sub
If LCase(Right$(txtFile.Text, 4)) <> ".xls" Then MsgBox "File harus dalam format Excel(.xls)": Exit Sub
Dwi said…
halo mbak saya ada error disini knp ya

Private Sub txtFile_Change()
lstTable.Clear
Set grdExcel.DataSource = Nothing
End Sub

di grdExcel errornya object variable or with block variable not set
rani said…
@Dwi: grdExcel itu nama datagrid untuk menampilkan data dari excel nya. Dan pesan error disitu dia ga bisa nemuin si grdExcel. Apa sudah ditambahkan? atau mungkin ada salah ketik?
DKK said…
untuk membuat pencarian didatagrid sehabis import excel bagaimana kak ?
Bobby Cool said…
halooo kak, maaf nich kalo excelnya 2013 utk ODODB nya pake connection string yg mana ya kak... karena excel saya pake yg Ms Excel 15.0 Object Lib. thank you kakak