VBA代码中的字符更改

VBA代码中的字符更改,vba,ms-access,dao,Vba,Ms Access,Dao,我正在用VBA打开一个记录集,它有一些特殊字符,比如复选标记、项目符号,以及从Word中提取的其他东西。这个过程将把字段添加回word书签,但我对fomatting有一个问题。我从富文本备忘录字段中提取,即使字符显示在表中,当我将鼠标悬停在代码中的值上时,它们也不会显示。我在代码框中得到问号,当它导出到我的word文档中时。项目符号出现在代码中的mouseover值和导出到word中的值中,但当我在代码中打开记录集时,其他字符会发生变化 我假设这是某种UTF转换问题,但我不知道为什么在表中它会很

我正在用VBA打开一个记录集,它有一些特殊字符,比如复选标记、项目符号,以及从Word中提取的其他东西。这个过程将把字段添加回word书签,但我对fomatting有一个问题。我从富文本备忘录字段中提取,即使字符显示在表中,当我将鼠标悬停在代码中的值上时,它们也不会显示。我在代码框中得到问号,当它导出到我的word文档中时。项目符号出现在代码中的mouseover值和导出到word中的值中,但当我在代码中打开记录集时,其他字符会发生变化

我假设这是某种UTF转换问题,但我不知道为什么在表中它会很好,但在使用DAO.Database.OpenRecordset时会出现问题。这些是Word固有的符号,出现在access表中。一旦我把它放进DAO.recordset,我似乎就失去了一切


我尝试过创建一个querydef并打开它,在OpenRecordset中查询表,直接在OpenRecordset中打开表,但它们都不起作用。

不要被VBA编辑器中的鼠标悬停行为误导。它根本无法显示多字节字符,也就是说,基本上不能显示Windows ANSI字符集之外的任何字符。DAO确实可以处理多字节字符,例如Unicode字符,但VBA编辑器无法在工具提示文本、即时窗口或监视窗口中显示它们

举例来说,对于名为[词汇表]的访问表中的以下测试数据

ID单词语言英语 - --- ---- ------- 希腊宴会 下面的代码

选项比较数据库 选项显式 次级RST测试 Dim cdb作为DAO.Database,rst作为DAO.Recordset 将strm调暗为ADODB.Stream 设置cdb=CurrentDb Set rst=cdb.openrecordset从ID=3的词汇表中选择单词,dbOpenSnapshot 调试.打印rst0.值 设置strm=newadodb.Stream strm.Type=adTypeText 标准字符集=utf-8 标准开启 strm.WriteText rst0.Value strm.SaveToFile C:\Users\Gord\Desktop\foo.txt 端接头 在VBA编辑器的即时窗口中显示以下内容

T 但生成的文本文件确实包含正确的希腊字符


所以不要为这件事烦恼?VBA编辑器中的字符将显示并集中于Word文档中的实际结果。

您是否尝试过使用ADODB而不是DAO?谢谢,这对大多数字符都有效,谁知道其他字符集是什么。现在,我必须将HTML标记和备注字段转换为可使用的内容,以便将它们添加到书签中。谢谢你的帮助!