2016-07-05 39 views
2

我想做显示的MS-访问记录的Excel中的RTF格式

我有一个Access数据库是什么(C:\用户\ 289894 \桌面\ 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(“A1”)都有<div><strong>aaa</strong></div>写入它们。

如何更改我的代码以将格式发送到excel?我想在单元格A1中以粗体书写“aaa”,就像它在Access中一样。

编辑:解决方法 这解决了问题提出的直接问题,而没有真正回答问题本身。它使用Internet Explorer将文本粘贴为富文本格式,但没有标签。

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 
+1

这是一个有趣的问题。我没有直接解决设置或用户使用不同的导出方法,但是您可以使用的一种方法是在导入后循环行集并移除'html'标记并使单元格变为粗体或斜体,具体取决于在标签上。此外,标题似乎与这个问题无关。 –

+0

@ScottHoltzman冠军头衔很好,我不确定那里发生了什么。至于粘贴回HTML,我想过,但我发现最好的答案是http://stackoverflow.com/questions/9999713/html-text-with-tags-to-formatted-text-in-an-excel -cell,它会为我引发一个错误(编辑:它不再适用于较新的IE版本)。 –

+0

你试过这个答案吗? http://stackoverflow.com/a/14951531/3820271 – Andre

回答

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 
+0

不幸的是我的例子就是这样一个有限的例子。真正的最终目标是能够将我想要的字段发送到文本框(而不是用户表单文本框)并将其格式化。它可以包括字体粗体,斜体,大小和颜色等。我的想法是先让它在一个单元格中工作(我已成功完成,将添加我的答案),然后计算如何更改为代码,以便我可以将单元格中的富文本发送到文本框。由于这个特定的问题没有得到解答,所以我认为两个分片会更好,以供以后参考。 –

相关问题