2013-05-01 46 views
6

Chỉnh sửa: Câu trả lời cho câu hỏi này có thể được tìm thấy trong phần bình luận của câu trả lời được chấp nhận.Mở truy cập từ Excel VBA

Tôi đang cố gắng mở cơ sở dữ liệu Access từ một nút bấm trong tệp excel của tôi. Tôi hiện đang có mã này:

Private Sub bttnToAccess_Click() 

Dim db As Access.Application 

Set db = New Access.Application 
db.Application.Visible = True 
db.OpenCurrentDatabase "C:\Users\wcarrico\Desktop\wcarrico-CapstoneFinalSubmission.accdb" 

End Sub 

Điều này dường như hoạt động một thời gian ngắn và sau đó Access tắt gần như ngay lập tức. Nếu nó quan trọng, tệp Access có macro AutoExec chạy qua một vài thử nghiệm khi mở.

+0

Bạn đang cố gắng để chạy GUI truy cập bên trong Excel, hoặc chỉ cố gắng để kết nối với cơ sở dữ liệu và truy vấn dữ liệu bên trong? –

+0

Tôi chỉ cung cấp quyền truy cập dễ dàng vào cơ sở dữ liệu cho người dùng. Tôi là người mới làm quen với VBA và thậm chí không chắc chắn về Acess GUI là gì. Cơ sở dữ liệu về cơ bản là một công cụ riêng biệt để lập kế hoạch cho một đám cưới. Các tệp excel và truy cập cuối cùng sẽ liên kết thông qua một lần nhập. –

Trả lời

6

Đừng cố mở ứng dụng Access sau đó; chỉ cần tạo đối tượng kết nối bằng một trong các công nghệ Truy cập dữ liệu: - OLE-DB hoặc - ODBC.

"Chuỗi kết nối ODBC" của Google hoặc "Chuỗi kết nối OLE-DB" để nhận chi tiết tùy thuộc vào cấu hình cụ thể của bạn (và Loại tệp truy cập).

Có lẽ ADODB là thư viện hiện tại dễ sử dụng nhất để truy cập dữ liệu của bạn.

Cập nhật: Hãy thử Nhập dữ liệu từ Access sau đó sử dụng các dữ liệu -> Từ Truy cập wizard. Yu luôn có thể sử dụng cơ sở mã hóa Macro để tự động tạo một số mã VBA cho bạn, điều đó sẽ tạo ra một số cơ sở hạ tầng cho bạn; Tôi sử dụng điều này thường xuyên khi khám phá các phần mới của mô hình đối tượng VBA.

Cập nhật - Độ phân giải cuối cùng của vấn đề, từ ý kiến ​​dưới đây
Đó có thể là do biến đi ra khỏi phạm vi; di chuyển khai báo của db bên ngoài hàm, thành cấp mô-đun

+0

Tôi đã nhanh chóng xem xét một số kết quả trên Google và không biết bất kỳ điều gì đang nói về hoặc đi đâu từ đó. Dự án này dành cho giới thiệu về lớp VBA ở trường nên tôi mới bắt đầu học. Ngoài ra, tôi cho rằng nhận xét của tôi ở trên về việc nhập có thể đã làm lẫn lộn ý định của tôi. Tôi đã thiết kế một cơ sở dữ liệu cho kế hoạch đám cưới quản lý danh sách khách mời, nhà cung cấp và vài thứ khác. Các tập tin excel tôi đang làm việc trên bây giờ giao dịch nhiều hơn với mặt tài chính của đám cưới (mô hình hóa, tối đa chủ yếu là tính toán, vv). Tôi thực sự chỉ muốn có thể mở tệp truy cập và không có gì khác. –

+0

Điều hướng một recordset có thể là một chút khó khăn để nhai lúc đầu tiên nếu OP là rất mới làm quen tại VBA như ông nói. – ApplePie

+1

@ AlexandreP.Levasseur: Điểm lấy; bài cập nhật. –

1

Mã bắt đầu bằng cách tạo một cá thể ứng dụng được gán cho một biến đối tượng. Khi kết thúc thủ tục, biến đã nằm ngoài phạm vi để Access tắt.

Bạn đã chấp nhận câu trả lời để sử dụng biến cấp mô-đun cho phiên bản ứng dụng Access. Trong trường hợp đó, Access vẫn chạy sau khi thủ tục kết thúc. Tuy nhiên, nếu người dùng thoát khỏi Excel, Access cũng sẽ đóng.

Nếu mục tiêu là bắt đầu truy cập và để nó chạy cho đến khi người dùng quyết định đóng nó, chỉ cần bắt đầu truy cập trực tiếp mà không gán phiên bản ứng dụng cho biến đối tượng (Set db = New Access.Application). Biến số db sẽ hữu ích nếu mã Excel của bạn cần nó cho các mục đích khác. Tuy nhiên, nó thực sự chỉ được sử dụng để mở tệp db.

Bạn có thể sử dụng phương pháp Run của WScript.Shell để mở tệp db trong phiên Truy cập.

Private Sub bttnToAccess_Click() 
    Const cstrDbFile As String = "C:\Users\wcarrico\Desktop\wcarrico-CapstoneFinalSubmission.accdb" 
    Dim objShell As Object 
    Set objShell = CreateObject("WScript.Shell") 
    objShell.Run cstrDbFile 
    Set objShell = Nothing 
End Sub 
+0

Tôi đã thử phương pháp này và nó đã cho là một lỗi thời gian chạy "Phương pháp 'Chạy' của đối tượng 'IWshShell3' không thành công ... – SandPiper

0

Tôi biết đây là một chuỗi cũ, nhưng bạn sẽ gặp lỗi này trong Excel VBA nếu bạn đang cố mở cơ sở dữ liệu Access, nhưng bạn không có hai Tham chiếu cụ thể được nhấp. (Công cụ, Tài liệu tham khảo trên màn hình VBA Editor). Bạn cần phải bấm vào 'Microsoft Access 15.0 Object Library' và 'Microsoft ActiveX Data Objects 6.1 Library'.

0

Tháo khai New sau đó nó hoạt động

Các vấn đề liên quan