web-dev-qa-db-ja.com

ExcelはセルをHTMLとして解釈できますか?

Aspose.Cellsを使用して、プログラムでExcelドキュメントを作成しています。これはうまくいきます。ただし、セルの1つは生のHTMLのブロックです。セルを解析してHTMLとして表示するようにExcelに(GUIを含む任意の方法で-Aspose APIを知る必要はありません)指示できるかどうか疑問に思っています。現時点では、テキスト形式、タグなどすべての未加工のHTMLとして表示されます。

私はExcelにHTMLを貼り付けることができることを知っていますが、それはそれを単独で解析してからExcel化して、HTMLを保存しないので、実際には解析して表示しません。 HTMLとして。さらに、この貼り付け機能を複製する方法がとにかくわかりません。

ありがとう。

24
Greg Smalter

残念ながら答えはノーです。

Excelには2つのHTMLオプションがあります。

  • HTMLファイルを開きます。これにより、HTMLが並べ替えられますが、実際のHTMLはセルに含まれません。
  • HTMLをセルに保存しますが、書式なしテキストとして保存します。

おそらく、セルにHTMLを入力し、そのHTMLをドキュメントとして保存し、Excelの別のインスタンスで開き、そのフォーマットされたHTMLを取得して元のドキュメントに配置するマクロを考え出すことができます。このようにすると、HTMLと出力の2つの列ができます。 veryでも見苦しいでしょう。しないでください:0)

14
ScottF

ExcelにHTMLデータを貼り付けると、HTMLがExcelに正しく表示されます。これに関する1つの問題は、キャリッジリターンとタブが次のセルに貼り付けられることです。

Dim objData As New DataObject
objData.SetText(sHTML)
Clipboard.SetDataObject(objData)
objRange.PasteSpecial()

適切にフォーマットされたテキストでセルを埋めます

9
Rick

Webブラウザーコントロールを使用してMicrosoft Excelで簡単なHTMLインタープリター(VBA)を作成する方法を示す興味深いYouTubeビデオを見つけました。 HTMLおよびCSSコードをテキストボックスに入力すると、フォームによってHTMLがWebプレビューに変換されます。

Microsoft Excel 2010/2007のHTMLインタープリター-Webブラウザーに直接書き込み

0

このコードは1つのセルで機能しました(@Rickの回答に触発されましたが、Clipboard.SetDataObject(objData)がエラーを引き起こし、objRange.PasteSpecial()が機能しなかったため、ほとんど変更がありませんでした)。

Private Sub Worksheet_Change2(ByVal Target As Range, ByVal sht As Worksheet)
     Dim objData As DataObject 'Set a reference to MS Forms 2.0'
     Dim sHTML As String
     Dim sSelAdd As String
     Application.EnableEvents = False     
     objData = New DataObject
     sHTML = Target.Text
     objData.SetText sHTML
     objData.PutInClipboard
     sht.PasteSpecial Format:="Unicode Text"
     Application.EnableEvents = True
End Sub

Sub test()
     Dim rng As Range
     Set rng = ActiveSheet.Range("F15") 'cell to change'
     Worksheet_Change2 rng, ActiveSheet 
End Sub

詳細については、この post を参照してください

特定の1つのセルだけでなく、ワークシート全体で機能することを少し微調整することはそれほど難しくないと思います。エラーを防ぐために、このコードをラップするif条件をいくつか追加する必要があります。 この投稿 詳細については

0
BornToCode