Vba 将Excel工作表上载到AS400
我有一个包含多个工作表的Excel工作簿。第一个工作表包含用户的登录信息,并且有一个按钮用于上传AS400中不同表对应的所有工作表。工作表名称与AS400表名称相同 我的上传按钮代码如下: 代码:Vba 将Excel工作表上载到AS400,vba,excel,ibm-midrange,Vba,Excel,Ibm Midrange,我有一个包含多个工作表的Excel工作簿。第一个工作表包含用户的登录信息,并且有一个按钮用于上传AS400中不同表对应的所有工作表。工作表名称与AS400表名称相同 我的上传按钮代码如下: 代码: Dim objConn作为新的ADODB.Connection,objRs作为新的ADODB.Recordset Dim WS_计数为整数 作为整数的Dim I 将WS_名称设置为字符串 objConn.ConnectionString=“DSN=MYAS400;DRIVER=客户端访问ODBC驱动程
Dim objConn作为新的ADODB.Connection,objRs作为新的ADODB.Recordset
Dim WS_计数为整数
作为整数的Dim I
将WS_名称设置为字符串
objConn.ConnectionString=“DSN=MYAS400;DRIVER=客户端访问ODBC驱动程序(32位);”&_
“系统=;UID=;PWD=”
对象打开
WS\u Count=ActiveWorkbook.Worksheets.Count
对于I=2到w_计数
WS_Name=ActiveWorkbook.Worksheets(I).Name
objConn.Execute“DELETE FROM MYAS400LIB.”&WS\u Name&“
objConn.Execute“INSERT INTO MYAS400LIB.”&WS_Name&“SELECT*FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=“&thishworkbook.FullName&“HDR=YES;IMEX=1”,“SELECT*FROM[”&WS_Name&“$”)”
接下来我
结束
Set objConn=Nothing
端接头
如何将每个工作表(带列标题)插入AS400?如果不深入实际编码的细节,代码示例的问题是无法将电子表格的select SQL发送到AS/400。AS/400无法查看您的电子表格,因此无法在单个SQL中从中加载数据。相反,您必须通读电子表格的所有行,并将这些记录一次插入AS/400表中。最好是参数化SQL 这是需要执行的代码部分:
objConn.Execute "INSERT INTO MYAS400LIB. " & WS_Name & " SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=" & ThisWorkbook.FullName & ";HDR=YES;IMEX=1', 'SELECT * FROM [" & WS_Name & "$]')"
这行不通。替换为循环阅读工作簿中的行。您可以使用Excel OLEDB集或逐行读取电子表格。在循环内部,对于读取的每一个电子表格行,您必须编写一个INSERT INTO语句,通过ODBC执行到AS/400。如果不深入实际编码的细节,代码示例的问题是您无法将电子表格的select SQL发送到AS/400。AS/400无法查看您的电子表格,因此无法在单个SQL中从中加载数据。相反,您必须通读电子表格的所有行,并将这些记录一次插入AS/400表中。最好是参数化SQL 这是需要执行的代码部分:
objConn.Execute "INSERT INTO MYAS400LIB. " & WS_Name & " SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=" & ThisWorkbook.FullName & ";HDR=YES;IMEX=1', 'SELECT * FROM [" & WS_Name & "$]')"
这行不通。替换为循环阅读工作簿中的行。您可以使用Excel OLEDB集或逐行读取电子表格。在循环内部,对于读取的每个电子表格行,您必须将INSERT INTO语句写入AS/400,以通过ODBC执行。我将尝试使用iSeries Access中的.NET数据提供程序。打开一个记录集。为工作表中的每一行添加新内容。更新记录集。接近
这将一次性插入工作表中的所有记录,而不是一次插入一条。我将尝试使用iSeries Access中的.NET数据提供程序。打开一个记录集。为工作表中的每一行添加新内容。更新记录集。接近 这应该一次插入工作表中的所有记录,而不是一次插入一个记录