Cara membuat MS Access Database dari MS Excel menggunakan DAO
Pada Halaman ini
GEJALA
Dalam beberapa kasus, Anda mungkin ingin membuat sebuah database
Microsoft Access dari Microsoft Excel untuk Windows 95 versi 7.0
workbook, tetapi tidak dapat menggunakan akses link. Selain
menggunakan metoda memindahkan Microsoft Excel workbook ke Microsoft
Access menggunakan akses link, Anda juga dapat menggunakan data akses
objek (DAO).
PENYEBAB
Alasan alasan dari tidak bisanya menggunakan akses link (namun tidak terbatas pada) adalah sebagai berikut:
- Microsoft Access untuk Windows 95 versi 7.0 tak terinstal pada komputer.
- Tidak ada cukup sumber daya sistem untuk menjalankan Microsoft Excel dan Microsoft Access pada saat yang sama.
TEKNIK PEMECAHAN MASALAH
Anda dapat menggunakan data akses objek (DAO) untuk membuat Access Database pada semua versi Microsoft Access. Meskipun
metode ini tidak lengkap sebagai akses link, Anda dapat menggunakannya
untuk membuat sebuah database Microsoft Access dari Microsoft Excel
Workbook. Metode ini harus digunakan hanya jika
Anda berpengalaman dengan Visual Basic untuk aplikasi dan cukup akrab
dengan Microsoft Access database untuk mengedit tabel yang dibuat oleh
kode ini.
Beberapa hal yang Anda mungkin perlu ubah adalah tipe data dari masing-masing bidang dan apakah anda ingin atau tidak melakukan pengindeksan.
Beberapa hal yang Anda mungkin perlu ubah adalah tipe data dari masing-masing bidang dan apakah anda ingin atau tidak melakukan pengindeksan.
INFORMASI LEBIH LANJUT
Microsoft menyediakan pemrogaman hanya untuk ilustrasi, tanpa garansi baik tersurat maupun tersirat. Ini mencakup, namun tidak terbatas pada, jaminan tersirat dapat diperjualbelikan atau kesesuaian untuk tujuan tertentu. Artikel
ini mengasumsikan bahwa Anda sudah terbiasa dengan bahasa pemrogaman
yang ditunjukkan dan dengan alat yang digunakan untuk membuat dan
memperbaiki prosedur. Teknisi Microsoft dapat
membantu menjelaskan fungsionalitas prosedur tertentu, tetapi mereka
tidak akan mengubah contoh tersebut untuk menyediakan fungsionalitas
tambahan atau menyusun prosedur untuk memenuhi persyaratan khusus. Kode
dalam artikel ini akan disampaikan melalui setiap lembar kerja di buku
kerja Microsoft Excel versi 7.0 dan membuat tabel Microsoft Access yang
ditentukan dalam kode. Ada beberapa persyaratan untuk kode ini agar berfungsi dengan baik.
Catatan: Persyaratan ini serupa dengan apa yang akan diperlukan jika Anda telah mentransfer data menggunakan akses link.
Pastikan bahwa buku kerja yang digunakan memiliki daftar pada setiap lembar kerja yang terdiri dari setidaknya dua kolom.
Persyaratan sebagai berikut:
Catatan: Persyaratan ini serupa dengan apa yang akan diperlukan jika Anda telah mentransfer data menggunakan akses link.
Pastikan bahwa buku kerja yang digunakan memiliki daftar pada setiap lembar kerja yang terdiri dari setidaknya dua kolom.
Persyaratan sebagai berikut:
- Data harus dalam bentuk kolom dengan nama kolom pada baris pertama. Sementara data mungkin mulai di setiap baris, subrutin ini mengasumsikan bahwa baris 1 berisi nama kolom dan segala sesuatu yang berada di bawah baris 1 adalah data untuk tabel.
- Data harus berdekatan. Data yang hilang dalam catatan tidak akan merugikan subrutin ini . Namun, setelah sebuah baris kosong dijumpai, subrutin akan menganggap bahwa semua data telah diperoleh pada lembar kerja saat ini. Demikian pula, setelah kolom kosong dijumpai, subrutin akan menganggap bahwa Tidak ada lagi bidang di sebelah kanan.
- Setiap kolom akan dianggap sebagai field dan setiap baris akan dianggap sebagai Record. Misalnya, data harus diatur sebagai berikut:
Lname Fname EmpNum SpouseName Ebbeson Frida 12 Dave Edelstein Alex 15 Edmonds Cora 18 Paul Eliasen Deborah 22 Tom Erickson Gregory J 25 Lisa Fallon Scott 23 Feig Wayne A. 35 Laurie Fetty Ellen M. 54 James
- Deklarasi variabel. hal ini tidak terlalu diperlukan, sangat berguna untuk memeriksa sintaks dan mengurangi jumlah memori yang Anda gunakan.
- Mematikan screen updating. hal Ini akan membuat subrutin berjalan lebih cepat, kelebihan lainnya adalah Anda tidak akan melihat layar flash.
- Membuat database. Argumen pertama akan menunjukkan di mana database akan berada , dan namanya akan menjadi apa. Subrutin menciptakan database baru dalam folder yang sama sebagai buku kerja dan dengan nama yang sama sebagai buku kerja (dengan ekstensi .mdb). Jika sudah ada database dengan nama itu dalam folder, kotak pesan akan muncul meminta jika Anda ingin menghapus database yang sudah tersedia. Hal ini dilakukan dengan menampilkan "Database Error 3294 sudah ada."
- Mengatur loop untuk menuju semua lembar kerja di buku kerja .
Catatan: Karena modul, bagan lembar dan dialog lembar tidak bagian dari koleksi lembar kerja, mereka tidak akan mempengaruhi subrutin. - Dalam loop lembar kerja, membuat tabel berdasarkan nama worksheet.
- Masukkan
loop yang berjalan melalui setiap kolom dalam kisaran data dan
menciptakan field dalam tabel dengan nama yang sama dengan judul kolom. Di bagian membuat Field dari subrutin, Anda perlu tahu jenis data untuk menetapkan bidang baru. Untuk melakukan ini, subrutin terlihat pada sel secara langsung di bawah ini dan menentukan properti NumberFormat sel.
Select Case statement telah dimasukkan dimana terlihat di sebelah kiri hampir semua surat dari NumberFormat properti. Jenis data dibuat, berdasarkan Surat ini. Jika mengembalikan data "m", "d", atau "y" , tipe data akan diset ke "dbDate." Jika mengembalikan nilai "G" , sel di bawah ini akan diformat ke format "Umum." Jika hal ini terjadi, Anda perlu menentukan jika sel berisi angka atau teks.
Untuk menguji dan melihat apakah sel berisi angka atau teks, subrutin mencoba untuk membagi isi sel menjadi 2. Jika Divisi gagal, rutin akan masuk ke handler kesalahan, yang menentukan apakah kesalahannya adalah "Type Mismatch" . Jika hal ini terjadi, bidang diatur ke dbText. Jika divisi berhasil, subrutin turun ke sel berikutnya untuk menentukan jika divisi itu akan berhasil. Hal ini diperlukan karena Anda perlu menentukan bahwa semua catatan berisi nomor untuk bidang itu sebelum Anda menetapkan tipe data ke format angka. Jika semua divisi berhasil, akan di tetapkan sebagai jenis data dbDouble .
Karena memeriksa setiap sel dalam kolom merupakan proses yang memakan waktu. Subroutine akan mengecek kehadiran "Zip" atau "Postal" di header kolom. Alasan untuk ini adalah bahwa ZIP pos dan kode pos harus diformat sebagai dbText. Bahkan jika Anda memiliki semua 5 digit kode pos di lembar kerja Anda, Anda mungkin ingin menambahkan lagi 9-digit kode pos suatu saat nanti. Jika Anda memiliki bidang yang diformat sebagai "dbDouble", Anda akan menerima pesan galat ketika mencoba empat nilai pada Zip Pos. Mencari "Zip" atau "Pos" mengurangi waktu prosesor untuk membuat bidang.
Jika semua Select Case statements gagal, bidang diatur ke dbText. - Setelah semua bidang pada lembar kerja dibuat, semua data yang ditambahkan ke table.
- Setelah
semua data ditambahkan ke table, lembar kerja berikutnya akan dipilih
dan proses dimulai lagi sampai semua lembar kerja telah dipilih dan
disimpan sebagai table.
Sub DataToAccess() ' Declare variables. Dim Db As database Dim Rs As Recordset Dim Td As TableDef Dim Fd As Field Dim x As Integer Dim i As Integer Dim f As Integer Dim r As Integer Dim c As Integer Dim Message As String Dim Title As String Dim LastColumn As Integer Dim NumberTest As Double Dim StartCell As Object Dim LastCell As Object Dim Response Dim CreateFieldFlag As Integer Dim Flag As Integer CreateFieldFlag = 0 Flag = 0 ' Turn off Screen Updating. Application.ScreenUpdating = False On Error GoTo ErrorHandler ' Create the database. ' This line will create an Microsoft Access 2.0 database. To vary the ' version of the database, change the "dbVersion" constant. ' See "CreateDatabase" in online Help for more information. ' The database will be created in the same folder as the ' activeworkbook. Set Db = workspaces(0).CreateDatabase(ActiveWorkbook.Path & "\" & _ Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) _ & ".mdb", dbLangGeneral, dbVersion20) ' Loop through all the worksheets in the workbook. For i = 1 To Worksheets.Count ' Select the "i th" worksheet and Cell "A1." ' In this example, you need column headers in the first row. ' These headers will become field names. Worksheets(i).Select Range("A1").Select ' If the ActiveCell is blank, open a message box. If ActiveCell.Value = "" Then Message = "There is no data in the active cell: " & _ ActiveSheet.Name & "!" & ActiveCell.Address & Chr(10) & _ "Please ensure that all your worksheets have data on " & _ "them " & Chr(10) & _ "and the column headers start in cell A1" & Chr(10) & _ Chr(10) & "This process will now end." Title = "Data Not Found" MsgBox Message, , Title Exit Sub End If ' Create a new Table, and use the Worksheet Name as the ' Table Name. Set Td = Db.CreateTableDef(Worksheets(i).Name) ' Find the number of fields on the sheet and store the number ' of the last column in a variable. Selection.End(xlToRight).Select LastColumn = Selection.Column ' Select the current region. Then find what the address ' of the last cell is. Selection.CurrentRegion.Select Set LastCell = Range(Right(Selection.Address, _ Len(Selection.Address) - _ Application.Search(":", Selection.Address))) ' Go back to cell "A1." Range("A1").Select ' Enter a loop that will go through the columns and ' create fields based on the column header. For f = 1 To LastColumn Flag = 0 ' Enter a select case statement to determine ' the cell format. Select Case Left(ActiveCell.Offset(1, 0).NumberFormat, 1) Case "G" 'General format ' The "General" format presents a special problem. ' See above discussion for explanation If ActiveCell.Value Like "*Zip*" Then Set Fd = Td.CreateField(ActiveCell.Value, _ dbText) Fd.AllowZeroLength = True r = LastCell.Row - 1 Flag = 1 Else If ActiveCell.Value Like "*Postal*" Then Set Fd = Td.CreateField(ActiveCell.Value, _ dbText) Fd.AllowZeroLength = True r = LastCell.Row - 1 Flag = 1 End If End If ' Set up a text to determine if the field contains ' "Text" or "Numbers." For r = 1 To LastCell.Row - 1 If Flag = 1 Then r = LastCell.Row CreateFieldFlag = 1 NumberTest = ActiveCell.Offset(r, 0).Value / 2 Next r ' If we get all the way through the loop without ' encountering an error, then all the values are ' numeric, and we assign the data type to be "dbDouble" If Flag = 0 Then Set Fd = Td.CreateField(ActiveCell.Value, dbDouble) End If ' Check to see if the cell below is formatted as a date. Case "m", "d", "y" Set Fd = Td.CreateField(ActiveCell.Value, dbDate) ' Check to see if the cell below is formatted as currency. Case "$", "_" Set Fd = Td.CreateField(ActiveCell.Value, dbCurrency) ' All purpose trap to set field to text. Case Else Set Fd = Td.CreateField(ActiveCell.Value, dbText) End Select ' Append the new field to the fields collection. Td.Fields.Append Fd ' Move to the right one column. ActiveCell.Offset(0, 1).Range("A1").Select ' Repeat the procedure with the next field (column). Next f ' Append the new Table to the TableDef collection. Db.tabledefs.Append Td ' Select Cell "A2" to start the setup for moving the data from ' the worksheet to the database. Range("A2").Select ' Define the StartCell as the Activecell. All record addition ' will be made relative to this cell. Set StartCell = Range(ActiveCell.Address) ' Open a recordset based on the name of the activesheet. Set Rs = Db.OpenRecordset(Worksheets(i).Name) ' Loop through all the data on the sheet and add it to the ' recordset in the database. For x = 0 To LastCell.Row - 2 Rs.AddNew For c = 0 To LastColumn - 1 Rs.Fields(c) = StartCell.Offset(x, c).Value Next c Rs.Update Next x ' Repeat the process for the next worksheet in the workbook. Next i Application.ScreenUpdating = True Exit Sub ErrorHandler: Select Case Err Case 3204 ' Database already exists. Message = "There has been an error creating the database." & _ Chr(10) & _ Chr(10) & "Error Number: " & Err & _ Chr(10) & "Error Description: " & Error() & _ Chr(10) & _ Chr(10) & "Would you like to delete the existing" & _ "database:" & Chr(10) & _ Chr(10) & ActiveWorkbook.Path & "\" & _ Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & _ ".mdb" Title = "Error in Database Creation" Response = MsgBox(Message, vbYesNo, Title) If Response = vbYes Then Kill ActiveWorkbook.Path & "\" & _ Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) -4) _ & ".mdb" Message = "" Title = "" Resume Else Message = "In order to run this procedure you need" & _ Chr(10) & "to do ONE of the following:" & _ Chr(10) & _ Chr(10) & "1. Move the existing database to a " & _ "different directory, or " & _ Chr(10) & "2. Rename the existing database, or" & _ Chr(10) & "3. Move the workbook to a different " & _ "directory, or" & _ Chr(10) & "4. Rename the workbook" Title = "Perform ONE of the following:" MsgBox Message, , Title Message = "" Title = "" Exit Sub End If ' Check to see if the error was Type Mismatch. If so, set the ' file to dbText. Case 13 ' Type mismatch. If CreateFieldFlag = 1 Then Set Fd = Td.CreateField(ActiveCell.Value, dbText) Fd.AllowZeroLength = True Flag = 1 r = LastCell.Row - 1 CreateFieldFlag = 0 Resume Next Else Message = "You have a ""Type Mismatch"" in the code" _ & Chr(10) _ & Chr(10) & "Error Number: " & Err _ & Chr(10) & "Error Description: " & Error() _ & Chr(10) _ & Chr(10) & "This procedure will close." Title = "Type Mismatch" MsgBox Message, , Title Message = "" Title = "" End If ' For any other error, display the error. Case Else Message = "An error has occured in the procedure." _ & Chr(10) _ & Chr(10) & "Error Number: " & Err _ & Chr(10) & "Error Description: " & Error() Title = "An error has occured" MsgBox Message, , Title Message = "" Title = "" End Select End Sub
REFERENSI
Microsoft Access 97
Untuk informasi lebih lanjut tentang cara membuat indeks, klik tab indeks di menu Help pada Microsoft akses, ketik teks berikut:
Indexes, creating
kemudian klik dua kali teks yang dipilih untuk pergi ke "Create an index to find and sort records faster" Microsoft Access 7.0
Untuk informasi lebih lanjut tentang pengindeksan, klik Answer Wizard pada menu bantuan di Microsoft akses 7.0, ketik indeks dalam kotak pencarian dan klik "Decide if and when to use an index."Microsoft Access 2.0
Untuk informasi lebih lanjut tentang pengindeksan, klik pencarian pada menu bantuan di Microsoft akses versi 2.0, ketik indeks di kotak pencarian, klik "Index (see also indexes),", dan kemudian klik "Creating an Index" di bawah topik tersebut.Properti
ID Artikel: 151566 - Kajian Terakhir: 28 Juni 2012 - Revisi: 13.0
Berlaku bagi:
- Microsoft Excel 97 Standard Edition
- Microsoft Excel 95 Standard Edition
Kata kunci: | kbdtacode kbhowto kbprogramming kbmt KB151566 KbMtid |
Penerjemahan Mesin
PENTING:
Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah
Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan
artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang
diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke
seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan
(Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang
diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut
mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa,
hampir sama seperti orang asing yang berbicara dalam bahasa Anda.
Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau
kerusakan yang disebabkan karena kesalahan penerjemahan konten atau
penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui
perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini: 151566
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel
ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh
karena itu, artikel ini disajikan “sebagaimana adanya” dan tidak akan
diperbarui.
Terima kasih Atas Info yang anda berikan. Semoga Sukses Selalu :)
BalasHapusKONTES SEO July 2016
Poker Online
Agen Poker Online
Agen Poker Terpercaya
Poker uang Asli