在excel2010 VBA找不到预定义的Ado对象

为了将Excel单元格中的包含汉字的字符串A$ 输出到一个使用UTF-8编码格式的外部文件,我打算用下面的函数来实现转换,但VBA运行时报告没有对象类型AdoStream,导致转换无法进行。
例如:
A$=cells(1,1)
B$= tran_ado(A$)

我在VBA中自定义了如下函数,其中AdoStream是网上说由VBA预先定义的对象类型(是真的吗?)
Function tran_ado(ByVal strA As String) As String
'这个函数利用所谓的 AdoStream对象 将保存在strA中的普通编码格式的字串转换成UTF-8格式编码的字符串,以便后边输出给VCF文件

Dim Stm As New AdoStream
Stm.Type = adTypeText
Stm.Mode = adModeUnknown
Stm.Open
Stm.Charset = "utf-8"
Stm.WriteText strA
Stm.Position = 0
Stm.Type = adTypeText
Stm.Charset = "gb2312"
tran_ado = Stm.ReadText()
Stm.Close
End Function
1, 能否说明一下 怎样连接Microsoft Jet OLE DB Provider 和 ODBC Drivers两种方式连接到 Excel 数据文件?
2. 我在Exce2010 VBA的help环境下搜索不到对 ADODB.Stream 的描述, ADODB.Stream 是EXCEL2010 中预定义的对象吗?

1楼的根本就不懂, 在网上复制过来的


有2中方法

 方法1:  在VBE 窗口    工具---引用

MICROSOFT ACTIVEX DATA OBJECTS 6.1

然后定义 变量类型 Dim Stm As New ADODB.Stream

你的程序的定义 也写错了




法法2:创建对象

这个无需添加引用

 Set stm = CreateObject("Adodb.Stream")

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-09
ADO:ActiveX数据对象(ActiveX Data Object)的缩写,它提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。
ADO 有 Microsoft Jet OLE DB Provider 和 ODBC Drivers两种方式连接到 Excel 数据文件。
(注意:要先连接,才能操作ADO)

********下面是网上找到的例子,供参考*******
'* ************************************** *
'* 模块名称:modCharset.bas
'* 模块功能:GB2312与UTF8相互转换函数
'* 作者:lyserver
'* ************************************** *

Option Explicit

'- ------------------------------------------- -
' 函数说明:GB2312转换为UTF8
'- ------------------------------------------- -
Public Function GB2312ToUTF8(strIn As String, Optional ByVal ReturnValueType As VbVarType = vbString) As Variant
Dim adoStream As Object

Set adoStream = CreateObject("ADODB.Stream")
adoStream.Charset = "utf-8"
adoStream.Type = 2 'adTypeText
adoStream.Open
adoStream.WriteText strIn
adoStream.Position = 0
adoStream.Type = 1 'adTypeBinary
GB2312ToUTF8 = adoStream.Read()
adoStream.Close

If ReturnValueType = vbString Then GB2312ToUTF8 = Mid(GB2312ToUTF8, 1)
End Function

'- ------------------------------------------- -
' 函数说明:UTF8转换为GB2312
'- ------------------------------------------- -
Public Function UTF8ToGB2312(ByVal varIn As Variant) As String
Dim bytesData() As Byte
Dim adoStream As Object

bytesData = varIn
Set adoStream = CreateObject("ADODB.Stream")
adoStream.Charset = "utf-8"
adoStream.Type = 1 'adTypeBinary
adoStream.Open
adoStream.Write bytesData
adoStream.Position = 0
adoStream.Type = 2 'adTypeText
UTF8ToGB2312 = adoStream.ReadText()
adoStream.Close
End Function追问

1, 能否说明一下 怎样连接Microsoft Jet OLE DB Provider 和 ODBC Drivers两种方式连接到 Excel 数据文件?
2. 能否请您对两个示范转换函数中对adoStream对象进行操作的每行代码加上注释文字? 我在Exce2010 VBA的help环境下搜索不到对 ADODB.Stream 的描述。

本回答被网友采纳

在excel2010 VBA找不到预定义的Ado对象
方法1: 在VBE 窗口 工具---引用 MICROSOFT ACTIVEX DATA OBJECTS 6.1 然后定义 变量类型 Dim Stm As New ADODB.Stream 你的程序的定义 也写错了 法法2:创建对象 这个无需添加引用 Set stm = CreateObject("Adodb.Stream")

excel2010 VBA 赋值时报错:“应用程序定义或对象定义错误”
你的 k=i ,所以你这相当于 Ax=Ax

excel表格2010版里面的VBA工程管理器没有对象是不是设置的问题?求大神...
EXCEL插入行和列,使用Insert方法将在指定行的上面或指定列的左侧插入一列。其语法:表达式.Insert(Shift,CopyOrigin)。4\/6 设置行高和列宽。用户有时候要对工作表的格式进行设置,RANGE的属性RowHeight和ColumnWidth分别设置行高和列宽。5\/6 设置工作表的标签颜色,Tab对象有ColorIndex属性,可以通过设置Colo...

excel VBA 运行时错误1004 应用程序定义或对象定义错误
Range("C1:C[-7]")这个错了吧

Excel VBA应用程序定义或对象定义错误
应该是这样:Sub AutoClone()Dim GetDay As LongDim iGetDay = Sheets("report").[T4]For i = 3 to 367 if range("C" & i).Value = GetDay Then Range("D" & i & "AO" & i) = Range("D" & i & "AO" & i).Value End IfNext End Sub你测试一下,我没测试...

Excel 2010怎么调用VBA?excel调用vba方法介绍
从07版开始,这个功能就被隐藏了,但隐藏方法还不太一样。步骤 1、默认情况下,打开Excel 2010的菜单栏是这样的。2、找到VBA之前,你需要把开发工具菜单调出来,选择文件,找到选项。3、在Excel选项对话框,切换到自定义功能区。4、勾选开发工具,然后点下面的确定。5、好了,如图,VBA在这里了。

excel2010怎么打开vba文件呢?
需要勾选信任VBA。解决这个问题的方法如下:1、先打开电脑上面的excel,然后点击左上角的文件。2、之后选择弹窗中的选项;3、然后点击信任中心;4、之后点击信任中心设置;5、然后点击宏设置;6、之后点击勾选上信任对VBA工程对象模型的访问,之后点击确定就可以解决这个问题了。

excel2010怎么打开vba编写的代码?
1、打开excel软件,点击左上角“文件”;2、点击选项;3、在excel选项界面点击自定义功能区,勾选开发工具,点击确定;4、开启开发工具后就可以在主菜单上看到开发工具选项卡了,需要打开VBA就在开发工具选项卡点击visual basic即可;5、写一个简单代码,在VBA窗口选择插入-模块,新建一个模块。点击模块1...

这段VBA在excel2010中运行提示‘无效的过程名’求修改
你好!对于楼主的问题,无图无真相,也就发表一下俺的看法:①程序中不含未定义的过程函数名称,如下图所示:②使用工作表时,不论是否在当前的工作表上面,最好还是声明一下。

excel宏运行找不到工程或库
1、首先检查宏中引用的对象或库文件的路径是否正确,确保路径名拼写正确,文件确实存在于指定的位置。2、其次,宏中引用的对象是其他工作簿中的内容,则确保相应的工作簿已经打开,工作簿处于关闭状态,excel无法找到其中的对象。3、然后检查宏中使用的库文件是否存在或已正确安装,在vba编辑器中,点击工具...

相似回答