|
很久没发帖了,那就来刷一下存在感吧。晚上看了下帖子,发现有一个比较有意思的提问:如何批量导出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批量导入文本文件》里应该有提到。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|