Cara membuat MS Access Database dari MS Excel menggunakan DAO

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 151566 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

Dalam beberapa kasus, Anda mungkin ingin untuk membuat sebuah database Microsoft Access dari Microsoft Excel untuk Windows 95 versi 7.0 buku kerja, tetapi tidak dapat Gunakan link akses. Sementara metode yang disukai bergerak Microsoft Excel buku kerja ke Microsoft Access untuk menggunakan akses link, Anda juga dapat menggunakan akses data objek (DAO).

PENYEBAB

Alasan tidak mampu menggunakan akses link termasuk (namun tidak terbatas) berikut:
  • Microsoft Access untuk Windows 95 versi 7.0 tidak diinstal pada komputer.
  • Ada tidak cukup sumber daya sistem untuk memiliki Microsoft Excel dan Microsoft Access dimuat pada waktu yang sama.

TEKNIK PEMECAHAN MASALAH

Anda dapat menggunakan data akses objek (DAO) untuk membuat versi Microsoft Akses database. Meskipun metode ini tidak lengkap sebagai akses link, Anda dapat menggunakannya untuk membuat sebuah database Microsoft Access dari Microsoft Excel buku kerja. Metode ini harus digunakan hanya jika Anda berpengalaman dengan Visual Basic untuk aplikasi dan cukup akrab dengan Microsoft Access database untuk mengedit Daftar Tabel yang dibuat oleh kode ini.

Beberapa hal yang Anda mungkin perlu mengubah adalah tipe data dari masing-masing bidang dan apakah Anda ingin 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-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 membuat prosedur untuk memenuhi kebutuhan spesifik Anda. Kode dalam artikel ini akan melalui setiap lembar di Microsoft Unggul versi 7.0 buku kerja dan membuat Daftar Tabel Microsoft Access sebagaimana ditentukan dalam kode. Ada beberapa persyaratan untuk kode ini ke fungsi dengan benar.

Catatan: Persyaratan ini sangat mirip dengan apa yang akan diperlukan jika Anda mentransfer data menggunakan akses link.

Pastikan bahwa buku kerja yang digunakan memiliki daftar pada setiap lembar terdiri dari setidaknya dua kolom.

Persyaratan adalah sebagai berikut:

  • Data harus dalam kolom formulir dengan nama kolom pada baris pertama. Sementara data mungkin mulai di setiap baris, subrutin ini mengasumsikan bahwa baris 1 berisi nama kolom dan apa-apa di bawah baris 1 data untuk Daftar Tabel.
  • Data harus bersebelahan. data hilang dalam catatan tidak akan mempengaruhi subrutin ini merugikan. Namun, setelah sebuah garis jatuh kosong Temui, subrutin akan menganggap bahwa itu telah diperoleh semua data di lembar kerja saat ini. Demikian juga, setelah kolom kosong Temui, subrutin akan menganggap bahwa ada tidak ada bidang untuk kanan-atas.
  • Setiap kolom akan dianggap sebagai lapangan dan setiap baris akan dianggap sebagai Catatan. Misalnya, data harus ditetapkan 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
    						
    Perlu diketahui bahwa catatan tidak lengkap diperbolehkan.
Subrutin yang dijelaskan di bawah ini akan lakukan hal berikut:
  • Menyatakan variabel. Sementara hal ini tidak diperlukan, sangat berguna untuk sintaks memeriksa dan mengurangi jumlah kehabisan memori yang Anda gunakan.
  • Mematikan layar memperbarui. Ini akan membuat subrutin berjalan lebih cepat, Plus Anda tidak akan melihat layar flash.
  • Buat database. Argumen pertama menentukan di mana database akan, dan apa yang akan menjadi nama. Subrutin menciptakan baru database di folder yang sama sebagai buku kerja dan dengan nama yang sama sebagai buku kerja (dengan .mdb). Jika sudah ada database dengan nama itu dalam folder, pesan kotak akan muncul meminta jika Anda ingin menghapus database yang ada. Hal ini dilakukan dengan menjebak "kesalahan 3294 Database sudah ada."
  • Mengatur loop untuk pergi melalui semua lembar kerja di buku kerja.

    Catatan: Karena modul, lembar bagan, dan dialog lembaran yang bukan bagian dari Koleksi lembar kerja, mereka tidak akan mempengaruhi subrutin.
  • Dalam loop lembar kerja, membuat Daftar Tabel berdasarkan nama lembar kerja.
  • Masukkan lingkaran yang berjalan melalui setiap kolom dalam kisaran data dan menciptakan lapangan dalam Daftar Tabel dengan nama yang sama dengan judul kolom. Dalam Menciptakan lapangan bagian subrutin, Anda perlu tahu jenis data untuk menetapkan bidang baru. Untuk melakukan ini, subrutin terlihat pada sel langsung di bawah dan menentukan properti NumberFormat sel.

    Pernyataan pilih kasus dimasukkan yang terlihat di sebelah kiri kebanyakan surat NumberFormat properti. tipe data dibuat, berdasarkan ini surat. Jika "m", "d", atau "y" dikembalikan, tipe data diatur ke "dbDate." Jika "G" kembali, sel di bawah ini diformat untuk "Umum." Jika hal ini terjadi, Anda harus menentukan jika sel berisi angka atau teks.

    Untuk menguji untuk melihat apakah sel berisi sejumlah atau teks, subrutin upaya untuk membagi isi sel dengan 2. Jika Divisi gagal, rutin tetes ke handler kesalahan, yang menentukan jika "Type ketidakcocokan" adalah kesalahan. Jika hal ini terjadi, lapangan diatur ke dbText. Jika Divisi ini berhasil, subrutin tetes ke sel berikutnya ke menentukan jika Divisi akan berhasil. Hal ini diperlukan karena Anda perlu menentukan bahwa semua catatan berisi nomor untuk itu lapangan sebelum menetapkan jenis data untuk format angka. Jika semua Divisi sukses, jenis data dbDouble ditugaskan.

    Karena memeriksa setiap sel dalam kolom adalah proses yang memakan waktu. The subrutin memeriksa keberadaan "Zip" atau "Pos" dalam kolom header. Alasan untuk ini adalah bahwa kode ZIP dan kode ZIP harus diformat sebagai dbText. Bahkan jika Anda memiliki semua 5-digit kode ZIP Anda lembar kerja, Anda mungkin ingin menambahkan kode Zip 9 digit beberapa hari. Jika Anda memiliki bidang yang diformat sebagai "dbDouble", Anda akan menerima pesan galat ketika mencoba untuk memasukkan Zip ditambah empat nilai. Telisik "Zip" atau "Pos" mengurangi waktu prosesor untuk menciptakan lapangan.

    Jika semua pernyataan pilih kasus gagal, lapangan diatur ke dbText.
  • Setelah semua bidang pada lembar kerja dibuat, semua data yang ditambahkan ke tabel atak.
  • Setelah semua data yang ditambahkan ke tabel atak, lembar kerja berikutnya dipilih dan proses dimulai lagi sampai semua lembar kerja telah dipilih dan disimpan sebagai tabel atak.
          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 Microsoft akses bantuan, ketik teks berikut:
Indeks, menciptakan
kemudian klik ganda teks yang dipilih untuk pergi ke "Buat indeks untuk menemukan dan semacam Catatan Cepat."

Microsoft Access 7.0

Untuk informasi lebih lanjut tentang pengindeksan, klik jawaban Wizard pada Help menu di Microsoft akses 7.0, ketik Indeks dalam kotak pencarian dan klik "memutuskan jika dan ketika menggunakan indeks."

Microsoft Access 2.0

Untuk informasi lebih lanjut tentang pengindeksan, klik pencarian pada menu Bantuan dalam Microsoft Access versi 2.0, jenis Indeks dalam kotak pencarian, klik "Index (lihat juga indeks)", dan kemudian klik "membuat sebuah indeks"di bawah topik.

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.

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com