Office中国论坛/Access中国论坛
标题:
批量导出网页文件
[打印本页]
作者:
roych
时间:
2018-1-19 03:21
标题:
批量导出网页文件
很久没发帖了,那就来刷一下存在感吧。晚上看了下帖子,发现有一个比较有意思的提问:
如何批量导出HTML文件
。
Access里本身是有个功能可以直接导出HTML文件的,只是格式很丑,可能也基于此,楼主给了一个模板(虽然也是很丑)。
导出HTML文件,有几种方法,前面已经提到一种了。
第二种是在模板中通过对DOM节点进行增删改(
如何处理?
),从而达到修改的目的。大体思路是先根据节点修改innerText,然后读取outerHTML,得到源码,再用其它方式写入,保存为HTML即可(由于时间关系,暂未处理)。
第三种则相对简单些,通过拼凑HTML源码字符串,替换掉模板中的文字信息,然后保存为HTML。如果非要说有什么复杂的话,那么可能就是HTML源码中含有双引号,很多新手刚开始学时,容易被绕晕。
Sub cmdExport()
Dim rst As New ADODB.Recordset
Dim strFileName As String
Dim strHTML1 As String
Dim strHTML2 As String
Dim strHTML3 As String
Dim strHTML4 As String
Dim strHTML5 As String
Dim strHTML6 As String
strHTML1 = "<HTML><HEAD><META HTTP-EQUIV=""""Content-Type"""" CONTENT=""""text/html;charset=gb_2312-80""""><TITLE>"
strHTML2 = "</TITLE></HEAD><BODY><TABLE BORDER=1 BGCOLOR=#c7edcc CELLSPACING=0>" _
& "<FONT FACE=""""宋体"""" COLOR=#000000><CAPTION><B></B></CAPTION></FONT><THEAD><TR><TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 >" _
& "<FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>ID</FONT></TH><TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 >" _
& "<FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>Brand</FONT></TH><TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 >" _
& "<FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>Descrption</FONT></TH><TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 >" _
& "<FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>P/N</FONT></TH></TR></THEAD><TBODY><TR VALIGN=TOP>"
strHTML3 = "<TD BORDERCOLOR=#eeece1 ALIGN=RIGHT><FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>"
strHTML4 = "</FONT></TD>"
strHTML5 = "<TD BORDERCOLOR=#eeece1 ><FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>"
strHTML6 = "</TR></TBODY><TFOOT></TFOOT></TABLE></BODY></HTML>"
rst.Open "表1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Do Until rst.EOF
Debug.Print Replace(Replace(rst(1), Chr(32), ""), vbCrLf, "")
strFileName = IIf(IsEmpty(rst(1)), "", replaceChar(rst(1))) & "-" & _
IIf(IsEmpty(rst(2)), "", rst(2)) & "-" & _
IIf(IsEmpty(rst(3)), "", rst(3))
Open CurrentProject.Path & "" & strFileName & ".html" For Append As #1
Print #1, strHTML1
Print #1, Replace(strFileName, "-", " ")
Print #1, strHTML2 & strHTML3 & rst(0) & strHTML4 _
& strHTML5 & Nz(rst(1), "") & strHTML4 _
& strHTML5 & Nz(rst(2), "") & strHTML4 _
& strHTML5 & Nz(rst(3), "") & strHTML4 _
& strHTML6
Close #1
rst.MoveNext
Loop
End Sub
Function replaceChar(ByVal str As String)
Dim str1 As String
Dim str2 As String
Dim i As Long
'只保留字母、数字和短横线。其它则替换为空字符串
For i = 1 To Len(str)
If Mid(str, i, 1) Like "[0-9]" Or Mid(str, i, 1) Like "[a-z]" Or Mid(str, i, 1) Like "[A-Z]" Or Mid(str, i, 1) = "-" Then
str1 = Mid(str, i, 1)
Else
str1 = ""
End If
str2 = str2 & str1
Next
replaceChar = str2
End Function
复制代码
值得一提的是,由于原来的附件中含有不可见特殊字符,命名时容易报错,就简单写了一点点。另外,记录集为空时,也有各种意外…这里只是针对这个特殊的例子写的语句,就没有进一步完善了。——总之一句话,尽量在Excel处理好字符串,再导入Access,容易处理一些。或者说,Access不是用来清洗数据的。
代码都是很简单一些语句,这里就不再写注释了。不懂For循环?
点这里
。不懂ADO的则
点这里
。open As的写法,在《
浅谈Excel批量导入文本文件
》里应该有提到。
[attach]62429[/attach]
作者:
zpy2
时间:
2018-1-19 06:19
roych 发表于 2018-1-19 03:21
很久没发帖了,那就来刷一下存在感吧。晚上看了下帖子,发现有一个比较有意思的提问:如何批量导出HTML文件 ...
支持支持,字符串拼接的确灵活的。。。
作者:
tmtony
时间:
2018-1-19 09:26
不错不错
作者:
access新新新手
时间:
2018-1-21 18:45
谢谢分享
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3