|
本帖最后由 百度不到去谷歌 于 2014-5-12 20:12 编辑
前几天人问了个问题,就是他需要另存excel为htm文件 这样没装excel的也可以打开
另外因为行数很多 所以想让htm文件也具有和excle一样的首行冻结的功能
因为以前学过一点htm 百度了一下htm冻结首行的原理 功夫不负有心人 花了一整晚的时间
采取了移花接木的方法 将excel另存的文件 添加修改了部分htm代码 使之具备了冻结首行的功能
应该还可以做到冻结首列 只是略嫌麻烦
另外这个只能用于IE浏览器 其他内核的浏览器可能会无法正常冻结首行 待以后再完善了
代码中 很多都是以前写好的通用函数 实际只有主过程是另外写的
希望需要的人可以用得到
- Option Explicit
- Sub 发布HTM文件(target As Range)
- '发布锁定表头的HTM文件
- Dim fname$, i&, s$, myHtml$
- fname = ActiveWorkbook.Path & "" & target.Worksheet.name & ".htm"
- Call saveAsHtml(fname, target.Worksheet.name, target.Address) '待转换区域另存htm
- myHtml = getFileText(fname) '读取htm字符串
- For i = 1 To 3 '写入css元素 替换原表头及div标签
- myHtml = Replace(myHtml, [参数].Cells(i, 2), [参数].Cells(i, 1))
- Next
- i = InStr(myHtml, "</tr>") '第一个tr结束位置即表头位置
- s = Mid(myHtml, i + 1) '取出表头后面的数据暂存
- myHtml = Replace(Left(myHtml, i), "<td", "<th") '取出表头前面的用以替换tr为th
- myHtml = myHtml & s '合并网页字符串
- writeToFile fname, myHtml '写入转换后Html文件
- End Sub
- Sub saveAsHtml(ByVal fname$, shtname$, rngAddress$)
- 'sheet中的rngAddress另存在htm文件fname
- With ActiveWorkbook.PublishObjects.Add(xlSourceSheet, _
- fname, shtname, rngAddress, xlHtmlStatic, _
- "工作簿1_18861", "")
- .Publish (True)
- .AutoRepublish = False
- End With
- End Sub
- Sub writeToFile(ByVal filename$, ByVal text$)
- '将字符串写入文件中
- Dim sFile As Object, Fso As Object
- Set Fso = CreateObject("Scripting.FileSystemObject")
- Set sFile = Fso.CreateTextFile(filename$, True)
- sFile.Write (text)
- sFile.Close
- Set sFile = Nothing
- Set Fso = Nothing
- End Sub
- Function getFileText(ByVal filename$) As String
- '读取文件所有字符串
- Const ForReading = 1, ForWriting = 2, ForAppending = 3
- Dim fs, f 'fs文件对象,f为TextStream对象
- Set fs = CreateObject("Scripting.FileSystemObject")
- Set f = fs.OpenTextFile(filename$, ForReading, 0) '打开文件为TextStream对象
- getFileText = f.readall
- f.Close
- Set f = Nothing: Set fs = Nothing
- End Function
- Public Sub test()
- 发布HTM文件 Sheet1.Range("A:M")
- End Sub
- Public Sub 全部发布() '导出活动工作簿中所有sheet为htm
- Dim sh As Worksheet
- For Each sh In ActiveWorkbook.Sheets
- 发布HTM文件 sh.UsedRange
- Next
- End Sub
- Public Sub 发布当前表() '导出活动工作表sheet为htm
- 发布HTM文件 ActiveSheet.UsedRange
- End Sub
复制代码
1EXCEL另存为首行冻结HTM文件.rar
(25.77 KB, 下载次数: 137)
|
评分
-
5
查看全部评分
-
|