- Tham gia
- 18/3/08
- Bài viết
- 8,306
- Được thích
- 15,849
- Giới tính
- Nam
- Nghề nghiệp
- Làm ruộng.
Chào các anh chị GPE thân mến !
Cho em hỏi là làm cách nào để lấy thông tin (Tên bảng, trường) của tất cả các bảng trong 1 file Access vào Excel.
Em xin cám ơn trước
Sub LayTen()
Dim DB As Database
Dim i, j, n, m, k As Byte
Dim TenFile As String
TenFile = ThisWorkbook.Path & "\GPE.mdb"
Set DB = DBEngine.Workspaces(0).OpenDatabase(TenFile)
n = DB.TableDefs.Count
k = 1
For i = 0 To n - 1
If Left(DB.TableDefs(i).Name, 4) <> "MSys" Then
Sheet1.Cells(1, k) = DB.TableDefs(i).Name
m = DB.TableDefs(i).Fields.Count
For j = 0 To m - 1
Sheet1.Cells(j + 2, k) = DB.TableDefs(i).Fields(j).Name
Next
k = k + 1
End If
Next
MsgBox "Xong"
Set DB = Nothing
End Sub
Rất chính xác anh à, bây giờ cho em hỏi thêm là làm sao mình có thể nhận biết được trường nào là khoá chính vậy anh (Ví dụ in đậm những trường là khoá chính)Bạn chép đoạn code sau vào một modul của Excel rồi chạy nó. Chú ý thay tên file cho đúng đường dẫn
PHP:Sub LayTen() Dim DB As Database Dim i, j, n, m, k As Byte Dim TenFile As String TenFile = ThisWorkbook.Path & "\GPE.mdb" Set DB = DBEngine.Workspaces(0).OpenDatabase(TenFile) n = DB.TableDefs.Count k = 1 For i = 0 To n - 1 If Left(DB.TableDefs(i).Name, 4) <> "MSys" Then Sheet1.Cells(1, k) = DB.TableDefs(i).Name m = DB.TableDefs(i).Fields.Count For j = 0 To m - 1 Sheet1.Cells(j + 2, k) = DB.TableDefs(i).Fields(j).Name Next k = k + 1 End If Next MsgBox "Xong" Set DB = Nothing End Sub
Bạn nhớ chọn thư viện DAO 3.6 nhé
Thân
Rất chính xác anh à, bây giờ cho em hỏi thêm là làm sao mình có thể nhận biết được trường nào là khoá chính vậy anh (Ví dụ in đậm những trường là khoá chính)
Cám ơn anh
Rất chính xác anh à, bây giờ cho em hỏi thêm là làm sao mình có thể nhận biết được trường nào là khoá chính vậy anh (Ví dụ in đậm những trường là khoá chính)
Cám ơn anh
Dim DB As Database
Dim i, n, m, k, j, x As Byte
Dim tdf As TableDef
Dim strField As String
Dim ind As Index
Dim fld As Field
Dim TenFile As String
Sub LayTen()
TenFile = ThisWorkbook.Path & "\GPE.mdb"
Set DB = DBEngine.Workspaces(0).OpenDatabase(TenFile)
n = DB.TableDefs.Count
k = 1
For i = 0 To n - 1
If Left(DB.TableDefs(i).Name, 4) <> "MSys" Then
Sheet1.Cells(1, k) = DB.TableDefs(i).Name
m = DB.TableDefs(i).Fields.Count
For j = 0 To m - 1
Sheet1.Cells(j + 2, k) = DB.TableDefs(i).Fields(j).Name
Next
k = k + 1
End If
Next
Call LoaiTruong
MsgBox "Xong"
Set DB = Nothing
End Sub
Sub LoaiTruong()
TenFile = ThisWorkbook.Path & "\GPE.mdb"
Set DB = DBEngine.Workspaces(0).OpenDatabase(TenFile)
n = DB.TableDefs.Count
k = 1
For i = 0 To n - 1
If Left(DB.TableDefs(i).Name, 4) = "MSys" Then
i = i + 1
Else
Set tdf = DB.TableDefs(i)
m = tdf.Fields.Count
For j = 0 To m - 1
strField = tdf.Fields(j).Name
For Each ind In tdf.Indexes
For Each fld In ind.Fields
If fld.Name = strField Then
If ind.Primary Then
For x = 2 To m + 1
If strField = Sheet1.Cells(x, k) Then Sheet1.Cells(x, k).Font.Bold = True
Next
End If
End If
Next
Next
Next
k = k + 1
End If
Next
Set DB = Nothing
End Sub
Rất chính xác anh à, bây giờ cho em hỏi thêm là làm sao mình có thể nhận biết được trường nào là khoá chính vậy anh (Ví dụ in đậm những trường là khoá chính)
Cám ơn anh
Dim DB As Database
Dim i, n, m, k, j, x As Byte
Dim tdf As TableDef
Dim strField As String
Dim ind As Index
Dim fld As Field
Dim TenFile As String
Sub XacDinh()
TenFile = ThisWorkbook.Path & "\GPE.mdb"
Set DB = DBEngine.Workspaces(0).OpenDatabase(TenFile)
n = DB.TableDefs.Count
k = 1
For i = 0 To n - 1
If Left(DB.TableDefs(i).Name, 4) = "MSys" Then
i = i + 1
Else
Set tdf = DB.TableDefs(i)
Sheet1.Cells(1, k) = tdf.Name
m = tdf.Fields.Count
For j = 0 To m - 1
strField = tdf.Fields(j).Name
Sheet1.Cells(j + 2, k) = strField
For Each ind In tdf.Indexes
For Each fld In ind.Fields
If fld.Name = strField Then
If ind.Primary Then
For x = 2 To m + 1
If strField = Sheet1.Cells(x, k) Then Sheet1.Cells(x, k).Font.Bold = True
Next
End If
End If
Next
Next
Next
k = k + 1
End If
Next
MsgBox "Xong"
Set DB = Nothing
End Sub
Các bạn chỉ giúp mình cách nào lấy (export) danh sách các table (gồm các cột và thuộc tính của nó) trong access ra excel được không ạ?
Mình muốn có 1 cái nhìn tổng quan về cấu trúc các table của csdl access, để điều chỉnh hay thay đổi thì cũng tiện hơn. Với lại cũng dễ kết nối với excel khi muốn import hay export dữ liệu giữa excel và access, tránh lỗi dữ liệu không phù hợp.
Bạn xem bài viết sau nhé:[URL=
Bạn chép đoạn code sau vào một modul của Excel rồi chạy nó. Chú ý thay tên file cho đúng đường dẫn
PHP:Sub LayTen() Dim DB As Database Dim i, j, n, m, k As Byte Dim TenFile As String TenFile = ThisWorkbook.Path
Bạn sửa cái đuôi .mdb thành .accdb thử.Cho mình hỏi tí, nếu dùng Access 2007, thì file có định dạng là accdb, khi chạy thì nó báo lỗi. Để đoạn code trên chạy với access 2007, phải dùng thư viện nào vậy ạ?
TenFile = ThisWorkbook.Path & "\GPE.mdb"
Thành TenFile = ThisWorkbook.Path & "\GPE.accdb"
Bạn sửa cái đuôi .mdb thành .accdb thử.
Xin lỗi chưa test
Thử tham chiếu đến Microsoft Office 12 access database engine object trong reference xem thế nào nhé.Mình đã làm rồi, nhưng bị lỗi Run-time error '3343' Unrecognized database formar
Bạn nào giúp mình cách khắc phục với
Thử tham chiếu đến Microsoft Office 12 access database engine object trong reference xem thế nào nhé.