我想做什么
我有一个Access数据库(C:\ Users \ 289894 \ Desktop \ Database1.accdb) [表1]的一个字段是[备忘录]。
该字段属于Memo
数据类型,文本格式设置为rich text
。
例如,它可以将某些记录保存为粗体,并将一些记录另存为斜体。
我想从excel文件打开与此Access数据库的连接,以便读取/写入此富文本字段。
我使用的代码如下:
Dim datab As Database
Dim rs As Recordset
Dim path As String
path = "C:\Users\289894\Desktop\Database1.accdb"
Set datab = OpenDatabase(path)
Set rs = datab.OpenRecordset("SELECT * FROM [Table1]")
Debug.Print rs!Memo
Range("A1") = rs!Memo
我的问题
此代码可以很好地打开连接并读取普通文本字段,但富文本以令人惊讶的方式(对我来说)起作用。访问中的原始文本是" aaa "。那是" aaa"用粗体字。
运行代码后,debug.print和Range(&#34; A1&#34;)都会写入<div><strong>aaa</strong></div>
。
如何更改我的代码以将格式发送到excel?我想要&#34; aaa &#34;在单元格A1中以粗体显示,就像它在Access中一样。
编辑:解决方法 这解决了问题所提出的直接问题,而没有真正回答问题本身。它使用Internet Explorer将文本粘贴为Rich Text,而不使用标记。
Sub Sample()
Dim Ie As Object
Dim rng As Range
Set rng = Feuil1.Range("A1")
Set Ie = CreateObject("InternetExplorer.Application")
With Ie
.Visible = False
.Navigate "about:blank"
.Document.body.InnerHTML = rng.Value
.ExecWB 17, 0
'Select all contents in browser
.ExecWB 12, 2
'Copy them
ActiveSheet.Paste Destination:=rng
.Quit
End With
End Sub
答案 0 :(得分:0)
给它一个机会。循环范围是通用的。此外,函数假设HTML非常有限,如您的示例所示。
Sub Test()
Dim cel As Range
For Each cel In Range("A1:A100")
cel.Font.Bold = InStr(1, cel.Value, "<strong>")
cel.Font.Italic = InStr(1, cel.Value, "<i>")
cel.Value = RemoveHTML(cel.Value)
Next
End Sub
Function RemoveHTML(sHTML As String) As String
Dim sTemp As String
sTemp = sHTML
Dim bLeft As Byte, bRight As Byte
bRight = InStr(1, sTemp, "</")
bLeft = InStrRev(sTemp, ">", bRight)
RemoveHTML = Mid(sTemp, bLeft + 1, bRight - bLeft - 1)
End Function