【发布时间】:2017-06-15 17:41:54
【问题描述】:
我在这个主题上进行了广泛的搜索,但无法找到我一直在寻找的东西......所以我开始了!
基本上,我有 2 个 HTML 文件。 1、我每天都从excel导出到HTML。第二个文件,添加了表格标题和格式的代码/CSS,以及滚动条和搜索功能。我所做的是将导出文件中的必要位复制到第二个文件中,以便使用最新数据进行更新。然后,第二个文件链接到公司内部网上的一个更大的网页,供员工查看他们的结果。
我有一个完整的自动化系统,我目前的实现方式是使用 VBA 打开 Notepad++(用作我的 HTML 编辑器),然后手动进行这些更改。我在 Notepad++ 中记录了一个宏,以使用“CTRL F1”作为命令自动进行更改,但是当我使用 shell 命令打开 Notepad++ 时,VBA 不能很好地与 Sendkeys 功能配合使用,所以它不是一个可行的解决方案用于自动化。
然后我进行了更多研究,发现了以下代码,我已经修改了这些代码以满足我的需要,完全绕过 Notepad++ 并将 HTML 转换为字符串。问题是,我需要查找和替换的不仅仅是 1 个单词,它是 2 个完整且独立的代码部分。我以为我可以使用通配符,但它似乎不想工作。任何可以让我用另一个 HTML 代码替换整个 HTML 代码块的帮助,使用 excel VBA 将是绝对的救星。提前致谢!
PS:下面的代码可以正常工作,因为我删除了通配符,所以它只是在 1 行上找到几个单词并将其替换为源文件中的整个代码。我需要能够用源文件中的指定部分替换整个部分
Sub Find_Replace2()
Dim sTempSource As String, sTempDest As String
'Dim sTemp As String
Dim sBuf As String
Dim iFileNum As Integer
Dim sFileName As String
'locations of html files, sourcefile goes into destfile
Dim htmlSourcefile As String: htmlSourcefile = "I:\The Hub\Pages\Statistics\Incentive\STB Incentive\STB League2.html"
Dim htmlDestfile As String: htmlDestfile = "I:\The Hub\Pages\Statistics\Incentive\STB League - Copy.html"
sFileName = htmlDestfile
'Opens the above files, and converts them to big long strings
iFileNum = FreeFile
Open htmlDestfile For Input As iFileNum
Do Until EOF(iFileNum)
Line Input #iFileNum, sBuf
sTempDest = sTempDest & sBuf & vbCrLf
Loop
Close iFileNum
iFileNum = FreeFile
Open htmlSourcefile For Input As iFileNum
Do Until EOF(iFileNum)
Line Input #iFileNum, sBuf
sTempSource = sTempSource & sBuf & vbCrLf
Loop
Close iFileNum
'find and replace on string
sTempDest = Replace(sTempDest, "<!--Start of VBA insert -->", "<!--Start of VBA insert -->" & sTempSource & "<!--End of VBA insert -->")
'saves string back off as original file
iFileNum = FreeFile
Open sFileName For Output As iFileNum
Print #iFileNum, sTempDest
Close iFileNum
End Sub
【问题讨论】:
-
excel 输出的结构如何,如表?
-
是的。这就像一个各种统计数据的排行榜,其中每个员工及其各种统计数据都在一行上。我需要将大约 100 行 HTML 格式化代码复制并替换到目标文件中(其中 CSS 代码设置为滚动等),然后为所有个人复制另外 10000 行实际的新数据和更新数据跨度>
-
也许你的方法不对,最好不要调整 CSS 文件来从工作簿本身获取数据?我建议查看
document.getlementsbytagname("TABLE"),然后插入类似document.getlementsbytagname("TABLE")(0).innerHtml -
你好。我想你不能详细说明一下吗?在 HTML 编码方面,我非常初级。这是我长期以来一直在做的事情,终于在这里寻求帮助。这是让我的每日更新完全定时和自动化的最后一块拼图
标签: html string vba replace notepad++