设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1674|回复: 3
打印 上一主题 下一主题

[模块/函数] 批量导出网页文件

[复制链接]
跳转到指定楼层
1#
发表于 2018-1-19 03:21:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很久没发帖了,那就来刷一下存在感吧。晚上看了下帖子,发现有一个比较有意思的提问:如何批量导出HTML文件
Access里本身是有个功能可以直接导出HTML文件的,只是格式很丑,可能也基于此,楼主给了一个模板(虽然也是很丑)。
导出HTML文件,有几种方法,前面已经提到一种了。

第二种是在模板中通过对DOM节点进行增删改(如何处理?),从而达到修改的目的。大体思路是先根据节点修改innerText,然后读取outerHTML,得到源码,再用其它方式写入,保存为HTML即可(由于时间关系,暂未处理)。

第三种则相对简单些,通过拼凑HTML源码字符串,替换掉模板中的文字信息,然后保存为HTML。如果非要说有什么复杂的话,那么可能就是HTML源码中含有双引号,很多新手刚开始学时,容易被绕晕。

  1. Sub cmdExport()
  2.     Dim rst As New ADODB.Recordset
  3.     Dim strFileName As String
  4.     Dim strHTML1 As String
  5.     Dim strHTML2 As String
  6.     Dim strHTML3 As String
  7.     Dim strHTML4 As String
  8.     Dim strHTML5 As String
  9.     Dim strHTML6 As String
  10.    
  11.     strHTML1 = "<HTML><HEAD><META HTTP-EQUIV=""""Content-Type"""" CONTENT=""""text/html;charset=gb_2312-80""""><TITLE>"
  12.     strHTML2 = "</TITLE></HEAD><BODY><TABLE BORDER=1 BGCOLOR=#c7edcc CELLSPACING=0>" _
  13.             & "<FONT FACE=""""宋体"""" COLOR=#000000><CAPTION><B></B></CAPTION></FONT><THEAD><TR><TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 >" _
  14.             & "<FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>ID</FONT></TH><TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 >" _
  15.             & "<FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>Brand</FONT></TH><TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 >" _
  16.             & "<FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>Descrption</FONT></TH><TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 >" _
  17.             & "<FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>P/N</FONT></TH></TR></THEAD><TBODY><TR VALIGN=TOP>"
  18.     strHTML3 = "<TD BORDERCOLOR=#eeece1  ALIGN=RIGHT><FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>"
  19.     strHTML4 = "</FONT></TD>"
  20.     strHTML5 = "<TD BORDERCOLOR=#eeece1 ><FONT style=FONT-SIZE:11pt FACE=""""宋体"""" COLOR=#000000>"
  21.     strHTML6 = "</TR></TBODY><TFOOT></TFOOT></TABLE></BODY></HTML>"
  22.     rst.Open "表1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  23.     Do Until rst.EOF
  24.         
  25.         Debug.Print Replace(Replace(rst(1), Chr(32), ""), vbCrLf, "")
  26.         strFileName = IIf(IsEmpty(rst(1)), "", replaceChar(rst(1))) & "-" & _
  27.                     IIf(IsEmpty(rst(2)), "", rst(2)) & "-" & _
  28.                     IIf(IsEmpty(rst(3)), "", rst(3))

  29.         Open CurrentProject.Path & "" & strFileName & ".html" For Append As #1
  30.         Print #1, strHTML1
  31.         Print #1, Replace(strFileName, "-", " ")
  32.         Print #1, strHTML2 & strHTML3 & rst(0) & strHTML4 _
  33.                     & strHTML5 & Nz(rst(1), "") & strHTML4 _
  34.                     & strHTML5 & Nz(rst(2), "") & strHTML4 _
  35.                     & strHTML5 & Nz(rst(3), "") & strHTML4 _
  36.                     & strHTML6
  37.         Close #1
  38.         rst.MoveNext
  39.     Loop
  40.             
  41. End Sub

  42. Function replaceChar(ByVal str As String)
  43.     Dim str1 As String
  44.     Dim str2 As String
  45.     Dim i As Long
  46.     '只保留字母、数字和短横线。其它则替换为空字符串
  47.     For i = 1 To Len(str)
  48.         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
  49.             str1 = Mid(str, i, 1)
  50.         Else
  51.             str1 = ""
  52.         End If
  53.         str2 = str2 & str1
  54.     Next
  55.     replaceChar = str2
  56.         
  57. End Function
复制代码
值得一提的是,由于原来的附件中含有不可见特殊字符,命名时容易报错,就简单写了一点点。另外,记录集为空时,也有各种意外…这里只是针对这个特殊的例子写的语句,就没有进一步完善了。——总之一句话,尽量在Excel处理好字符串,再导入Access,容易处理一些。或者说,Access不是用来清洗数据的。

代码都是很简单一些语句,这里就不再写注释了。不懂For循环?点这里。不懂ADO的则点这里。open As的写法,在《浅谈Excel批量导入文本文件》里应该有提到。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2018-1-19 06:19:02 来自手机 | 只看该作者
roych 发表于 2018-1-19 03:21
很久没发帖了,那就来刷一下存在感吧。晚上看了下帖子,发现有一个比较有意思的提问:如何批量导出HTML文件 ...

支持支持,字符串拼接的确灵活的。。。

点击这里给我发消息

3#
发表于 2018-1-19 09:26:55 来自手机 | 只看该作者
不错不错
来自: 微社区
回复

使用道具 举报

4#
发表于 2018-1-21 18:45:31 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-7 16:19 , Processed in 0.084552 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表