2017-03-14 5 views
2

私のプログラムは基本的に.MDBファイルを開き、スプレッドシート内にファイルを表示しますが、このエラーは引き続き発生します。VBAはSQLデータベースを参照しようとするエラーを継続します

まで来るエラーがある「ファイル名を指定して実行時エラー429、アクティブXコンポーネントはオブジェクトを作成できません」

ここでは、私が持っているコードであると私はデバッグを打ったときに強調表示されます行の上に書き込みます。

Option Explicit 

Private Sub CommandButton1_Click() 

Dim strFileToOpen As String 
ChDir ThisWorkbook.Path 
strFileToOpen = Application.GetOpenFilename _ 
(Title:="Please choose a file to open", _ 
FileFilter:="All Files *.* (*.*),") 


Workbooks.Open fileName:=strFileToOpen 
frmMain.TextBox1.Text = strFileToOpen 

Exit Sub 

End Sub 

Private Sub CommandButton2_Click() 
Dim fileName As String 
Dim copyDestination As String 
Dim copyFile As String 
Dim fso 

If frmMain.TextBox1.Value = "" Then 
MsgBox "No File Selected" 
Else 
fileName = frmMain.TextBox1.Value 

copyDestination = ThisWorkbook.Path & "\Sales_Orders.mdb" 

Set fso = CreateObject("Scripting.FileSystemObject") 

fso.copyFile fileName, copyDestination, True 

Set fso = Nothing 

MsgBox "File copied to current workbook directory!" 
End If 

'SQL Statements 

Dim db As Database 
Dim qdef As QueryDef 
Dim td As TableDef 
Dim dbname As String 

' Open the database. replace "c:\DBfile.mdb" with your 
' database file name 

「SET DB = OpenDatabaseメソッドがコードで述べたように、私はDEBUG

Set db = OpenDatabase(copyDestination) 

' List the table names. 
For Each td In db.TableDefs 
' if you want to display also the system tables, replace the line 
' below with: List1.AddItem td.Name 
    If td.Attributes = 0 Then ListBox1.AddItem td.Name 
Next td 
db.Close 


End Sub 

Private Sub CommandButton3_Click() 
Unload Me 


End Sub 

を押すとハイライトDB = OpenDatabaseメソッド(コピー先の)私はデバッグを打ったときに強調表示されますラインで設定されますTHIS LINE 。それがどうして起こっているのか?

+0

'Set db = Workbooks.OpenDatabase(copyDestination)'として試しましたか? – Jeeped

+0

il今すぐ試してみてください – EricCarlson

+0

@Jeeped、これで私に新しいエラーが発生し、実行時エラー13、型の不一致が発生します。私がデバッグを押すと、ちょうど編集された行をポイントします。Set db = Workbooks.OpenDatabase(copyDestination) – EricCarlson

答えて

0

OpenDatabaseメソッドは、Workbooks objectのメンバーです。 Workbooksオブジェクトへの参照なしに、それを特別なものとして呼び出すことはできません。

Dim db as Object 
Set db = Workbooks.OpenDatabase(copyDestination) 

dbをデータベースではなく、オブジェクトとして宣言します。

+0

これは正常に動作していたようですが、この行がエラーを出してから別のデータベースを選択すると、実行時エラー438が発生し、オブジェクトはこのプロパティまたはメソッドをサポートしません。そして、違反行は次のとおりです:各tdのdb.TableDefs。 – EricCarlson

+0

一般的なオブジェクトは、それが実現されていることを認識していません。コメントに記載されているようにADOまたはDAOに切り替えることも、作成したワークシートのヘッダー行をループすることもできます。 – Jeeped

関連する問題