在Excel中打开csv文件,并将该数据粘贴到Access数据库表中
我有以下Outlook VBA,在收到电子邮件时运行,它将在Excel中打开csv文件,复制其中的数据(不包括标题行),打开Access数据库,打开表格,删除表格行并粘贴新数据,完成后关闭Access和Excel 我有几个规则运行这段代码,并不断得到一个91错误代码 代码如下:在Excel中打开csv文件,并将该数据粘贴到Access数据库表中,excel,vba,ms-access,outlook,Excel,Vba,Ms Access,Outlook,我有以下Outlook VBA,在收到电子邮件时运行,它将在Excel中打开csv文件,复制其中的数据(不包括标题行),打开Access数据库,打开表格,删除表格行并粘贴新数据,完成后关闭Access和Excel 我有几个规则运行这段代码,并不断得到一个91错误代码 代码如下: Public Sub CopyPasteIAFeed(itm As Outlook.MailItem) Dim objAtt As Outlook.Attachment Dim ExApp As Excel.Applic
Public Sub CopyPasteIAFeed(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim ExApp As Excel.Application
Dim ExWbk As Workbook
On Error GoTo CopyPasteIAFeed_Error
Set ExApp = CreateObject("Excel.Application")
Set ExWbk = ExApp.Workbooks.Open("C:\Users\" & Environ("UserName") & "\Documents\NCR\Data Feeds\Report NCR - Daily New Activity Requests.csv")
' Open Feed in Microsoft Excel window.
ExApp.Visible = True
ExApp.ScreenUpdating = True
ExApp.ActiveSheet.Range("A2").Select
ExApp.ActiveSheet.Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Dim oApp As Access.Application
Dim LPath As String
LPath = "C:\Users\" & Environ("UserName") & "\Documents\NCR\Database\SP - Link to KM - Non-Critical Request Repository.accdb"
Set oApp = CreateObject("Access.Application")
' Open database in Microsoft Access window.
oApp.OpenCurrentDatabase LPath
oApp.Visible = True
oApp.DoCmd.OpenTable "ReportNCRDailyNewActivity", acViewNormal, acEdit
oApp.DoCmd.RunSQL "DELETE * FROM ReportNCRDailyNewActivity"
oApp.DoCmd.RunCommand acCmdPasteAppend
oApp.CloseCurrentDatabase
oApp.Quit acQuitSaveAll
ExApp.CutCopyMode = False
ExApp.Quit
Set objAtt = Nothing
Set oApp = Nothing
Set ExApp = Nothing
MsgBox "InStream Activity Feed Imported. Continue"
On Error GoTo 0
Exit Sub
CopyPasteIAFeed_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure CopyPasteIAFeed of Module Module10"
End Sub
甚至不需要使用Excel,因为MS Access可以使用Excel充分上传csv文件
顺便说一句,Access默认随Jet/ACE SQL引擎一起提供,可以迁移并连接到其他关系数据库管理系统(RDM)。考虑使用这个健壮的软件作为任何数据迁移需求的中心点。作为一个数据库客户端,它可以处理各种文件类型:csv、txt、tab、xlsx、sql、xml、甚至html,以及ODBC/OLEDB源。因此,Outlook宏将很好地用作Access VBA模块 您在哪一行得到错误?它没有说,但似乎一旦打开Excel工作簿并选择(A2),它就停止在那里。为清楚起见,这里是我在模块10的过程CopySpasteIafeed中得到错误91(对象变量或未设置块变量)的错误。我的代码中是否缺少某些内容。这只运行了一次,但此后没有运行。您正在使用
ActiveSheet
和Selection
-非常不可靠的数据寻址方式,请参阅。如果您解决了这个问题,错误还会发生吗?您的建议是什么?
...
Dim oApp As Access.Application
Dim LPath As String
LPath = "C:\Users\" & Environ("UserName") & "\Documents\NCR\Database\SP - Link to KM - Non-Critical Request Repository.accdb"
Set oApp = CreateObject("Access.Application")
' Open database in Microsoft Access window.
oApp.OpenCurrentDatabase LPath
oApp.DoCmd.RunSQL "DELETE * FROM ReportNCRDailyNewActivity"
oApp.DoCmd.TransferText acImportDelim, , "ReportNCRDailyNewActivity", LPath, True
oApp.CloseCurrentDatabase
oApp.Quit
...