2016-07-05 69 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

不幸的是我的例子就是這樣一個有限的例子。真正的最終目標是能夠將我想要的字段發送到文本框(而不是用戶表單文本框)並將其格式化。它可以包括字體粗體,斜體,大小和顏色等。我的想法是先讓它在一個單元格中工作(我已成功完成,將添加我的答案),然後計算如何更改爲代碼,以便我可以將單元格中的富文本發送到文本框。由於這個特定的問題沒有得到解答,所以我認爲兩個分片會更好,以供以後參考。 –

相關問題