2011-09-20 92 views
0

我想在Excel中打開一個HTML文件(來自VBA),以便保持HTML內聯樣式。是否有任何特殊的方法來做到這一點,因爲目前我已經嘗試創建HTML作爲字符串,並使用ActiveSheet.Range(「A10」)= HTMLStr插入到單元格中,但這不起作用,並且當我打開文件時Excel中使用:在Excel中打開HTML文件,保留HTML內聯樣式

Workbooks.Open

這也不會呈現HTML正確

(編輯我的最終結果是把HTML轉換成PDF)

+0

的複製粘貼HTML格式的文本是有點挑剔,並希望所有格式將被保留可能是過於樂觀了。我們可以問問你爲什麼要這麼做?有可能是一個替代路線... –

+0

你不能期望Excel呈現HTML的方式相同,因爲它只支持限制和舊版本的HTML和CSS – Slai

回答

0

爲什麼你需要打開在Excel中的頁面 - 它只是讓你可以做一個PDF(Excel 2007/10)?您可以嘗試將HTML傳遞給IE並自動從那裏複製/粘貼。作爲一個例子,下面的代碼將使用HTML選擇單元格,將每個單元格轉移到IE,然後將結果複製回來。

Sub FormatHtmlViaIE() 

Dim ie As Object, tr, c As Range 

    Set ie = CreateObject("internetexplorer.application") 
    With ie 

     .Visible = True 
     .Navigate "about:blank" 
     Do While .busy 
     Loop 

     For Each c In Selection 
      .document.body.innerHTML = c.Value 
      .document.body.createtextrange.execCommand "Copy" 
      Selection.Parent.Paste Destination:=c 
     Next c 

     .Quit 

    End With 

End Sub 
+0

問題是,當我手動將IE呈現的HTML複製到Excel並粘貼作爲HTML,它不會正確顯示它。因此,從IE進程複製和粘貼自動化將導致相同的? – dave

+0

只是粘貼 - 而不是HTML –

+0

好吧,我已經打開我的HTML文件在IE中,按ctrl + A,然後ctr + v在一個新的excel文件中,我單擊確定數據大小警告,它不保留HTML內聯粘貼時的造型... – dave

0

否則在excel中打開頁面。

對於實例

Sub OpenPage() 
'officevb.com 
Dim wb As Workbook 

Set wb = Workbooks.Open("http://www.stackoverflow.com") 

wb.SaveAs "c:\Your\Path\Here\NameOfFile", xlWorkbookDefault 

End Sub 

的[]

+0

正如OP所說,「[這不起作用]當我在Excel中打開文件使用:Workbooks.Open」。我很確定OP正在嘗試複製格式化文本,而不是其後面的HTML代碼。 –