【问题标题】:Write and save HTML in Excel with VBA使用 VBA 在 Excel 中编写和保存 HTML
【发布时间】:2018-03-03 18:46:17
【问题描述】:

寻求帮助,因为我还没有找到关于这个特定主题的任何内容。

目标:我想直接在 Excel 中编写 HTML 样式,按一个按钮并打开生成的 html 文件并打开 writen 输出。

背景:我知道这听起来很奇怪,但我有很多来自 sql 查询的数据。然后在 Excel 中计算、排序和过滤这些数据。为了可视化这些,我会在电子表格中直接将输出转换为 html 格式(我知道这个任务可以用 php 更快地完成 - 但不幸的是,这在我的公司中不被允许)。

我的所有尝试都是编写 VBA 以将电子表格保存为 html。但 Excel 总是尝试将整个工作表可视化为 html,而不仅仅是写在工作表中的纯 html 代码。

非常简单,这是在 A1:A8 之间的常规 Excel 电子表格中输入的内容

<!DOCTYPE

<htm>

<body>


<img src="https://i.stack.imgur.com/oURrw.png" alt=stack" width="50" height="60">



</body> </html>

希望这听起来不是有线 :) 谢谢你的帮助! 克里斯

【问题讨论】:

  • 所以你在 A1:A8 范围内有上面的内容,你想要什么作为输出?
  • 是的 - 只是保存在文件中的纯代码,允许 g 以 html 格式保存/打开
  • alt=stack" 应该是 alt="stack"

标签: html vba excel


【解决方案1】:

试试这个代码

Sub Test()
Dim a           As Variant

a = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Value

a = Convert2DArrayTo1DArray(a)
ArrayToTextFile a, ThisWorkbook.Path & "\Sample.html"
End Sub

Function Convert2DArrayTo1DArray(arr As Variant)
Dim b()         As Variant
Dim s           As String
Dim i           As Long

ReDim b(1 To UBound(arr, 1))

For i = 1 To UBound(arr, 1)
    b(i) = arr(i, 1)
Next i

Convert2DArrayTo1DArray = b
End Function

Function ArrayToTextFile(a As Variant, strPath As String)
Dim fso         As Object
Dim fn          As Object
Dim i           As Long

Set fso = CreateObject("Scripting.FileSystemObject")
Set fn = fso.OpenTextFile(strPath, 2, True)

For i = LBound(a) To UBound(a)
    fn.writeline a(i)
Next i

fn.Close
End Function

【讨论】:

  • 抱歉,英语不是我的母语。该代码只是将A列中的数据导出到html文件我认为A1中的html行:A8
  • 这太棒了,谢谢亚瑟!根据需要工作。最后一个问题(对我来说是 VBA 菜鸟):如果我想在保存 sample.html 后打开它,我需要添加什么?再次感谢!
  • 不客气。看看这个LINK
猜你喜欢
  • 1970-01-01
  • 2010-09-16
  • 2020-07-07
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 2014-04-29
相关资源
最近更新 更多