无人问津,就自己来吧。把我自己硬逼上梁山学超级文件的历程写出来吧: 超级文本(Html)的编码规则 所有代码由三类构成:标签符、属性值、元素。
标签符通过<></>这种格式成对出现,无斜杠的叫启始标签,后面有斜杠的叫结束标签。所有被成对标签夹住的内容都可以视为一个对象,这些对象的通用属性值(如边框线、线的宽度、颜色等)代码写在启始标签中,至于哪些是单元属性,哪些是行通用属性,哪些是表格通用属性,则根据用户的喜好和程序的限制来,不是你想象的那样,只能自己去一次次测试。实在不知道的属性就可以去百度搜,懂了超级文本的语法基础,搜起来就容易些,比如我想知道表格底色的属性怎么写?因为有VB的基础,所以我会立马想到Background=各颜色值,但超级文本中是这样的:Background-color: Lightskyblue。那么在搜百度时你可以搜“超级文本表格背景颜色属性”,否则会搜得很辛苦。下面内容请认真读完: 新手训练方法:所有超级文本的代码写在“文本文件”中,写完代码将后缀改成“.html”打开就是网页效果。 表格标签:<table></table> 表格行标签:<tr></tr> 每个最小表格(也可以叫元素)标签:<td></td> 书写规则(下面代码中的单元格内容就是最小的元素): <table><tr><td>单元格首行内容1</td><td>单元格首行内容2</td></tr></table>这个表格只有一行,两个单元格 <table><tr><td>单元格首行内容1</td><td>单元格首行内容2</td></tr><tr><td>单元格第二行内容1</td><td>单元格第二行内容2</td></tr></table>这个表格有两行,四个单元格 代码:<table><tr><td>姓名</td><td>性别</td></tr></table> 显示效果如下:
代码:<tableBorder='1'><tr><td>姓名</td><td>性别</td></tr></table> 显示效果如下:
代码:<tableBorder='1'><tr><td>姓名</td><td>性别</td></tr><tr><td>张三</td><td>男</td></tr></table> 显示效果如下:
文本段落标签<p></p> 文本行标签<br></br> 文本书写跟上面表格的书写规则一样,唯一不同的是,单元格内容换成你要输出的文本的全部内容,你唯一要做的是在哪里分段?在哪里换行?分段与换行显示效果不一样,换行行间距紧密一些,分段后段与段之间差不多隔了一行的宽度。
好了,我们不是专业编程,不需要了解太多。有继续想知道的请在网上自学,因为上面是我本人的学习全过程,代码只有测试修改重复测试才能领悟,师傅领进门,修行就各靠各了。对于我们VB做点小工具,上面的基础知识就足够了。
下面我们回到如何发工资条的问题上来,
网上搜的那些都会通过自定义函数的方式来转化你的表格,首先我们看不懂,再次搬别人的来用,一出问题自己解决不了。而且每个人的需求风格不一样,不能完全照搬,自己掌握了就最好,所以咱们就用最熟悉最笨最原始最有效最简单的方法。
自己直接编译超级文本代码,将代码以string变量传输给.HTMLBody,前提别忘了这句:.BodyFormat= olFormatHTML
别看超级文本的代码又臭又长,很容易把自己搞混,但是如果你有清晰的方法和逻辑一样不会乱。
比如工资条,我们可以让程序一个一个单元格去读取表格的数据,我们有一个标题行在行循环时不动,动的只是每个人的表体行,这个用For可以解决,再次,不论表体行还是标题行,都要进行列循环(根据每家公司工资表的列数定),这个也用For解决,不论我们如何进行行列循环,我们始终要得到一段完整的超级文本代码,这个代码有些代码是动态的,有些代码是静态的,如何解决?我们可以这样,将这个代码分割。
注意:以下代码我写在一行,但并不一定是一行,VBA基础不懂的我就没法教了。还有,VBA是双引号确定文本,所以超级文本的中双引号,全部换成单引号,否则程序如何知道你的文本界定在哪呢?这一点在网上可坑爹了,我是自己运行报错悟出来的,网上没见一个人提醒。
1、开始公用部分(GY):dim GY as string GY="<TableBorder='1' Bordercolor='#000000' Cellspacing='0' Cellpadding='2' Style='Border-collapse:collapse;'>"
2、结束说明部分(SM):dim SM as string SM ="</Table><P>温馨提示:如您对工资信息有疑问,项目部请和直接上司核实,其他后勤部门请直接与财务部联系。</P>"
3、工资标题部分(TI):dim TI as string TI="<TRSpan style='Font-size:12px;Background-color: Lightskyblue;'>"
4、工资表体部分(BT):dim BT as string BT="<TR Span style='Font-size:12px;'>"
前面两个是不需要参与循环的,只需要在每次发送邮件时用&符号连入就行。后面两个需要参与循环:
1、在进行列循环时,每次读到一个单元格数据都在后面连上一个单元结束标签〈/td〉
表头:TI = TI &"<Td Align='Center'>" & Cells(2, i) &"</TD>"
表体:BT =BT&"<Td Align='Center'>" & Cells(UCSI2, UCEI) &"</TD>"
2、在进行行循环时,每结束一行,都连上一个行结束标签〈/TR〉
表头:TI = TI &"</TR>"
表体:BT =BT&"</TR>"
最后是不是所有单元格读完了要加上一个表格结束标签</Table>呢?当然,不过这个不用循环,我在上面的表格结尾说明的字符里已经有了,不信上去看看。
最后我们就得到了.HTMLBody=GY & TI & BT & SM成功了!
真的很开心,虽然当时已经是晚上一点多,很开心。开心就想到分享,但当时太困,等有空了一定分享出去。 于是就等到了今天。
|