当我通过Access VBA向其传输数据时,不会填充Excel列

时间:2014-02-12 17:55:40

标签: excel vba ms-access access-vba etl

我从Access设置数据传输 - > Excel使用VBA。

Access查询输出为9列,并返回动态行数。

正在将除第8列以外的所有列复制到Excel工作表中。第8列没有填充任何内容。

在数据传输过程中,不会抛出任何错误或警告。

我的VBA代码如下:

    ''Reference: Microsoft ActiveX Data Object x.x Library
    Dim rs4 As New ADODB.Recordset
    Dim xl4 As Object ''Excel.Application
    Dim wb4 As Object ''Workbook

    Set xl4 = CreateObject("Excel.Application")

    Set wb4 = xl4.Workbooks.Open(Path & fileName & Format(getAsOfDate(), "MMDDYYYY") & fileType)

    ''Connection relevant for 2007 or 2010
    rs4.Open "myQuery", CurrentProject.AccessConnection

    wb4.Sheets("myWorksheet").Cells(9, 3).CopyFromRecordset rs4     ''Cells(down, across)

    xl4.Visible = False

    wb4.Close SaveChanges:=1
    rs4.Close

    Set wb4 = Nothing
    Set xl4 = Nothing
    Set rs4 = Nothing

下面是Excel(启用宏)工作簿的屏幕截图。请注意 - 红色框标出了不接受数据的列。另请注意 - 此列的单元格有一个下拉框,用户可以在其中手动选择值。但是,右侧的列也包含具有下拉功能的单元格,并且数据可以成功传输到其中。

我也尝试从Access发送格式为(1)文本字符串,(2)int的数据。没有区别。

enter image description here

修改:我交换了Access查询中的最后2列(Col8< - > Col9),并将查询结果传输到Excel。现在我注意到Col8(以前的Col9)出现正确,并且col9(以前的Col8)没有出现。

这指向Access查询出错。

以下是生成错误Access列的代码:

Iif(table.ID like "9*","0",Iif(table.ID like "3*","1",NULL))

这会导致列输出在Excel中不兼容?在Access中,结果显示没有错误。

解决方案

由于某些原因,在sql中使用like运算符导致列传输失败。我将sql更新为以下内容,并成功传输数据:

IIf(left(table.ID,1) = "9","0", IIf(left(table.ID,1) = "3","1",NULL))

0 个答案:

没有答案