Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中打开csv文件,并将该数据粘贴到Access数据库表中_Excel_Vba_Ms Access_Outlook - Fatal编程技术网

在Excel中打开csv文件,并将该数据粘贴到Access数据库表中

在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

我有以下Outlook VBA,在收到电子邮件时运行,它将在Excel中打开csv文件,复制其中的数据(不包括标题行),打开Access数据库,打开表格,删除表格行并粘贴新数据,完成后关闭Access和Excel

我有几个规则运行这段代码,并不断得到一个91错误代码

代码如下:

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 
...