【问题标题】:Transfer memo from Excel 2010 to Access 2010 using VBA and DAO使用 VBA 和 DAO 将备忘录从 Excel 2010 传输到 Access 2010
【发布时间】:2015-07-02 16:48:51
【问题描述】:

我正在尝试将文本从 Excel 2010 传输到 Access 2010。由于普通文本的 256 个字符的限制,我想使用备忘录。现在,经过数小时的搜索,我仍然无法解决我的问题。

更具体地说: 此代码读取数据(在本例中为文本)并将其写入 Access 数据库。由于文本的限制,我需要在 Access 数据库中使用备注字段,但在调整所有内容后,我找不到该语句 (sSQL) 的数据类型。

我要做的是更改以下代码:(稍微减少到相关位)

Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim sDb As String
Dim sSQL As String
Dim qdf As QueryDef

sDb = ActiveWorkbook.Path & "\DataBase.accdb"

Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(sDb)

sSQL = "Parameters" _
& " SomeText Text; " _                       <<== Here << ==
& "INSERT INTO IT_Ticker (SomeText)" _
& " Values ([ SomeText ])"

Set qdf = db.CreateQueryDef("", sSQL)

qdf.Parameters!SomeText = Worksheets("SomeSheet").Range("A1")

qdf.Execute dbFailOnError
Debug.Print qdf.RecordsAffected

qdf.Close
db.Close
ws.Close

Set qdf = Nothing
Set db = Nothing
Set ws = Nothing

我正在考虑用“备忘录”替换“文本”,但它不起作用。我也试过“LongText”和“String”。

【问题讨论】:

  • 不确定您的意思,但“移动文本”。是否要将 Excel 工作表作为表格放入 Access 中?

标签: vba excel dao


【解决方案1】:

我假设您要向其中追加数据 IT_Ticker 的表已经存在。您没有具体说明您正在使用的 Parameters,但下面的代码可以正常工作。

Option Explicit

Sub test()
    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim sDb As String
    Dim sSQL As String
    Dim qdf As QueryDef
    Dim userName As String
    Dim longText As String

    sDb = ActiveWorkbook.Path & "\DataBase2.accdb"

    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(sDb)

    'sSQL = "Parameters" _
    '& " SomeText Text; " _                       <<== Here << ==
    '& "INSERT INTO IT_Ticker (SomeText)" _
    '& " Values ([ SomeText ])"

    userName = Cells(2, 2).Value
    longText = Cells(3, 2).Value

    sSQL = "INSERT INTO IT_Ticker (UserName, ReallyLongText) Values (""" & _
           userName & """,""" & longText & """)"

    Set qdf = db.CreateQueryDef("", sSQL)

    'qdf.Parameters!SomeText = Worksheets("SomeSheet").Range("A1")

    qdf.Execute dbFailOnError
    Debug.Print qdf.RecordsAffected

    qdf.Close
    db.Close
    ws.Close

    Set qdf = Nothing
    Set db = Nothing
    Set ws = Nothing
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多