Tag: adodb

Excel VBA – 如何强制closures一个ADO连接?

我试图通过VBA将Excel工作表连接到本地Access数据库,并且遇到了Access数据库被从上一个debugginglocking的问题,并且在尝试执行时会引发错误3704或3709(请参见下文)debugging。 现在我是VBA的新手,所以我很有可能没有正确地将它连接到数据库。 有没有办法强制数据库closures? 以下是连接的代码: Dim objAccess As Object Dim strFile, strConnection As String strFile = "Address of SampleDB.accdb" Set objAccess = CreateObject("Access.Application") Call objAccess.OpenCurrentDatabase(strFile) 'get the connection string strConnection = objAccess.CurrentProject.Connection.ConnectionString objAccess.Quit Set cn = CreateObject("ADODB.Connection") cn.ConnectionString = strConnection 所以为了检查状态是否打开,我写了一个if块来检查,但这是当我在cn.CloseConnection行发现“运行时错误3074:当对象closures时不允许操作”: If cn.State = adStateOpen Then cn.Close Else MsgBox "The connection is already open." End If […]

使用范围超出65536行的Excel 2013中的问题

我正试图在Excel 2013工作簿中的命名范围上执行ADODB查询。 我的代码如下: Option Explicit Sub SQL_Extract() Dim objConnection As ADODB.Connection Dim objRecordset As ADODB.Recordset Set objConnection = CreateObject("ADODB.Connection") ' dataset query object Set objRecordset = CreateObject("ADODB.Recordset") ' new dataset created by the query objConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" objConnection.Open objRecordset.Open "SELECT * FROM […]

ADODB SQL语法 – 访问表内部使用Excel工作表join

我有一个项目,用户将需要填写一个Excel文件,然后将数据导出到Access数据库。 在Excel文件中收集的数据需要分三步输出:(1)导出数据集1logging;(2)查询新导入logging的主键(自动编号)的访问;(3)导出数据设置2个logging,其中包括填充为外键的主键。 我能够通过build立和打开一个ADODB连接来完成第一步。 但是,我在第二步遇到麻烦,我需要在Access表和Excel中进行内部连接。 wlodb.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\" &userSID & "\Desktop\WLO R&C Database_10-4-16.accdb" sqlFindREMPK = "Select ID " _ & "FROM [test1] a " _ & "INNER JOIN [Excel 8.0;HDR=YES;IMEX=2;DATABASE=C:\User\RED-WIP.xlsm].[REM Upload$] b " _ & "ON a.[REM_ID_Database] = b.[REM_ID_Database] " _ & "WHERE (((a.[REM_ID_Database])=""REM9811044""));" WLOrs.Open sqlFindREMPK, wlodb ActiveSheet.Range("A10").CopyFromRecordset (WLOrs) 表和工作表名称具有相同的字段名称。 问题在于SELECT子句。 如果我按原样离开,我会收到一个错误消息,说该字段可能引用FROM子句中的多个表。 如果我添加如[test1]。[ID]这样的表名,那么我会收到消息说没有给出所需的参数值。 如果我将Excel字段名称稍微更改为ID1,并将SELECT子句保留为ID,则代码运行良好。

Excel中的ADODB查询中的VBA函数

我在Excel 2007中打开一个ADODB连接来查询当前工作簿的工作表之一。 当试图添加一个自定义的VBA函数时,错误会引发“未定义的函数名称”。 连接: Dim connection As String Dim records As ADODB.Recordset Dim query As String Dim fileName As String fileName = ThisWorkbook.FullName connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";" query = "select t.[Col1] from [Sheet1$] As t" Set records = New ADODB.Recordset records.Open query, connection Sheets(2).Range("A1").CopyFromRecordset records 我想实现的是在select另一列,比如 query = […]

ADODB查询将Excel单元格更新为转义文本

我正在尝试更新Excel 2003电子表格中的一个单元格,但是我遇到的问题是Excel向我的值的前面添加了一个单引号。 有没有办法input一个整数的值,而不是一个转义的string? 谢谢!! Const filePath = "C:\1.xls" Dim ado: Set ado = CreateObject("ADODB.Connection") ado.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _ & filePath & """;Extended Properties=""Excel 8.0;HDR=No"";" ado.CursorLocation = 3 ado.Open ado.Execute "UPDATE [Sheet1$A1:A1] SET F1 = 1;" ado.Close 上面的代码将单元格A1更新为'1

由于驱动程序认为我使用整数/数字并显示空值而不是文本,所以无法使用ADO从CSV读取数据

我正在尝试使用ADO将一系列文本文件读入工作表中。 当特定列中的大多数数据是整数时,我遇到了问题。 当它到达一个string时,它会给出空值(空白单元格)。 根据微软的支持( Ado混合数据tyes )这是一个常见的事情,解决的办法是设置IMEX = 1 。 我试过这个,但它没有工作。 我一直在寻找其他线程寻找答案,碰到这个答案( 其他线程 )作者说,改变TypeGuessRows “让Jet检测是否存在混合types的情况,并诱使Jet检测到某种数据types。 “ 但是,这也没有奏效。 以下是我的VBA代码。 任何帮助,将不胜感激 Sub query_text_file(WorkingSheet As String, Col As String, Row As Integer, fileName As String, firstOrLast As Integer) Dim strPath As String Dim ws As Worksheet strToolWkbk = fileName strPath = ThisWorkbook.Path & "\Excel_Barcode_Files" Set ws = Worksheets(WorkingSheet) 'Need […]

使用ADODB访问打开的xls文件

尽pipe我一直在使用VBA for Excel很长一段时间,但有一个问题是我自己无法解决的。 我已经在下面描述了,希望得到一些帮助或build议。 我正在使用Excel 2007和Windows XP,全部使用最新的补丁更新。 我经常使用下面的代码从另一个工作簿中获取数据: Set conn = New ADODB.Connection conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=g:\source.xls;Extended Properties=Excel 8.0;" Sql = "SELECT Field1, Field2 FROM [Sheet1$]" Set rst = New ADODB.Recordset rst.Open Sql, conn, adOpenForwardOnly Worksheets("Results").Range("A2").CopyFromRecordset rst rst.Close Set rst = Nothing conn.Close Set conn = Nothing 就像可以 – 只需连接到文件并从中获取一些数据。 因为位于通用networking驱动器(g:\ source.xls)中的源文件在另一台计算机上未打开,所以它工作得很好。 当另一台计算机上的某个用户打开该文件并尝试执行以下代码时,我注意到一件事情,我想摆脱: 我的计算机上打开源Excel文件(在只读模式)并且在closures该文件的连接之后它不closures 。 […]

Excel中的VBAmacros来运行SQL插入语句

嗨,我很新的VBA,我希望有人能帮我最后一点的代码。 我试图从电子表格中取出单元格并将它们添加到SQL表中,但是我正在运行SQL语句。 这是我到目前为止的代码。 Private Sub ConnectDB() Dim oConn As Object Set oConn = CreateObject("ADODB.Connection") oConn.Open = "DRIVER={SQL Server};" & _ "SERVER=SERVER02;" & _ "DATABASE=platform;" & _ "USER=5y5t3mus3r;" & _ "PASSWORD=*******;" & _ "Option=3;" If oConn.State = adStateOpen Then MsgBox "Welcome to Database!" Else MsgBox "Sorry No Database Access." End If Dim rs As ADODB.Recordset Dim […]

从ADODBlogging集复制数据时,Excel表格丢失数字格式

我正在使用CopyFromRecordset方法从ADODBlogging集更新Excel表。 更新后,数字显示为有数字列的date。 我到目前为止使用的解决方法是通过VBA将列格式化为数字,但这不是一个好的解决scheme,因为需要花费更多时间来完成报告。 此外,我必须编写代码来容纳很多表。 有一个快速解决? 任何帮助是极大的赞赏。 'Delete old data and copy the recordset to the table Me.ListObjects(tblName).DataBodyRange.ClearContents Me.Range(tblName).CopyFromRecordset rst tblName – 引用一个现有的表,它保存与第一个数据相同格式/数据types的数据

来自VBA的ADODB连接停止工作

我们有一个用于pipe理工作时间以外的支持工程师的Rota电子表格。 前一段时间,我添加了一些VBA代码,可以自动将支持电话号码转移到工程师的电话号码。 它通过连接到由电话提供商运行的数据库并更新转接号码来完成。 今天下午,突然没有在中央服务器上工作: Dim Db As ADODB.Connection Sub ConnectDatabase() Set Db = New ADODB.Connection Db.Open "SupportMobileDb" End Sub 代码停在New ADODB.Connection行,并报告: Run-time error '430': Class does not support Automation or does not support expected interface 我仍然可以运行我的笔记本电脑上的macros,它可以正常工作。 而在中央服务器上,我仍然可以使用Excel,并正确连接到数据源。 在这台服务器上不再需要使用VBA。 macros上午9时正确运行,并将所有电话转移到办公室,但下午5点转移到工作人员macros没有工作。 我看不到Windows今天已经更新,或者真的有任何其他更改。 有没有人见过这个问题?