尝试连接到访问数据库的 vbscript 错误

vbscript error trying to connect to access database

这是脚本:

Option Explicit
'Supported in Access 2003 and newer versions
'Add a reference to "Microsoft Access xx.0 Object Library"
'or change code to do Late Binding to support multiple Access versions
Private Sub Command1_Click()
    Dim oApp As Access.Application
    Set oApp = CreateObject("Access.Application")
    oApp.OpenCurrentDatabase "C:\student_id_Ft Lupton.mdb", Exclusive:=False
    oApp.ExportXML ObjectType:=acExportTable, _
               DataSource:="Ft_lupton", _
               DataTarget:="C:\fortlupton.xml"
    oApp.CloseCurrentDatabase
    oApp.Quit acQuitSaveNone
    Set oApp = Nothing
End Sub

我收到以下错误:

script: forltuptontest.vbs line: 6 Char: 14 Error: expected end of statement Code: 800A0401 Source: Microsoft VBScript compilation error

不确定第 6 行字符 14 有什么问题

得到解答的精彩帮助后by:HansUp

这是我需要的脚本的工作版本。

更新后的代码如下所示:

Dim oApp
Set oApp = CreateObject("Access.Application")
Const acExportTable = 0
Const acQuitSaveNone = 2
oApp.OpenCurrentDatabase "C:\users\amoore19\desktop\Database\student_id_Ft Lupton.mdb", False
oApp.ExportXML 0, "Ft_lupton", "C:\users\amoore19\desktop\fortlupton.xml"
oApp.CloseCurrentDatabase
oApp.Quit 2
Set oApp = Nothing

Dim [variable name] As [something] 在 VBScript 中不受支持。所有变量都是变体,Dim ... As会触发错误。

您可以通过此更改消除错误...

'Dim oApp As Access.Application
Dim oApp

不幸的是,脚本宿主抱怨它遇到的第一个错误并停在那里。修复第一个错误后,您会看到更多。

VBScript 不了解 Access 命名常量,因此您必须提供每个常量的值而不是其名称。

  • 0 对于 acExportTable
  • 2 对于 acQuitSaveNone

或者您可以根据需要在脚本中定义常量,然后继续使用它们的名称。

Const acExportTable = 0
Const acQuitSaveNone = 2

VBScript 无法处理 Access 方法的命名选项。因此,您必须丢弃选项名称并按预期顺序传递选项值。

'oApp.OpenCurrentDatabase "C:\student_id_Ft Lupton.mdb", Exclusive:=False
oApp.OpenCurrentDatabase "C:\student_id_Ft Lupton.mdb", False
'oApp.ExportXML ObjectType:=acExportTable, _
'           DataSource:="Ft_lupton", _
'           DataTarget:="C:\fortlupton.xml"
oApp.ExportXML 0, "Ft_lupton", "C:\fortlupton.xml"

最后,修复错误后,您的脚本将不会执行任何操作,因为可执行语句位于子例程中:Command1_Click()

您可以通过在 End Sub 之后的行中添加 Call Command1_Click() 来 运行 子例程。但是,我不明白为什么这里需要一个子程序;你可以只丢弃 Private Sub Command1_Click()End Sub.

HansUp 的有效解决方案是:

Dim oApp
Set oApp = CreateObject("Access.Application")
Const acExportTable = 0
Const acQuitSaveNone = 2
oApp.OpenCurrentDatabase "C:\users\amoore19\desktop\Database\student_id_Ft Lupton.mdb", False
oApp.ExportXML 0, "Ft_lupton", "C:\users\amoore19\desktop\fortlupton.xml"
oApp.CloseCurrentDatabase
oApp.Quit 2
Set oApp = Nothing`