admin管理员组文章数量:1531663
2024年4月23日发(作者:)
利用ExcelVBA生成固定文本格式的PDF文件
我们在工作过程中会遇到需要填写一些固定文本格式的文档(例如固定模板的报告之
类)生成PDF文档保存,特别是文本内容一样,而具体的数值不一样的情况。或者是你希望
利用excel进行计算以后,根据参数自动生成相应的报告,那么就可以参照以下的思路。
一、利用Excel2013的文本框功能进行排版。
文本框的文本剪辑功能是和word一样的,可以让你在Excel中像word一样排版,进行文
本编辑,要在页面布局的视图下进行页面的调整,保证整体页面可以像word一样。文本框
中是不能插入表格的,我们可以利用多个文本框和Excel单元格结合着用。
姓名
日期
一句话
张三
2016/12/27
写下这句话
在表格填入一个名字、一个日期、一段话,
让这段话自动生成在文本内容
示例文件
二、利用ExcelVBA代码在文本框内特定位置实现替换功能。
将我们需要插入文本的位置做特殊标记,利用文本框的替换功能,将我们需要填入的
数据替换特殊标记。例如以下:
我的同事%Name%于%Date%在文本框内写下%Words%。
百分号及百分号内的东西就是我们要替换的东西,可以自己选择要用什么作为特殊标记。
接下来我们要在代码内容实现替换功能。
插入一个按钮,新建一个宏,把下面代码帖进去修改。
Sub 按钮1_Click()
yAlerts = False
Updating = False
Dim PatName As String
'工作表名称,我命名为“生成PDF”
PatName = "生成PDF"
Dim SteName As String
SteName = PatName & "副本"
On Error Resume Next
Sheets(SteName).Delete
'复制一个副本,在副本上替换,不破坏原表
Sheets(PatName).Copy after:=ActiveSheet
Sheets(PatName & " (2)").Name = SteName
'利用shapes(图表)对象中Replace方法替换文本,”textbox 2”是文本框的名称,不知道的可以利用
录制宏,拖动一下文本框,查看代码知晓。
'()是我们所引用数据的单元格位置,如姓名在sheet1表的C12,所以是(12,3)
Sheets(SteName).(Array("TextBox 2")).e
FindWhat:="%Name%", ReplaceWhat:=(12, 3), MatchCase:=msoFalse
Sheets(SteName).(Array("TextBox 2")).e
FindWhat:="%Date%", ReplaceWhat:=(13, 3), MatchCase:=msoFalse
Sheets(SteName).(Array("TextBox 2")).e
FindWhat:="%Words%", ReplaceWhat:=(14, 3), MatchCase:=msoFalse
Dim FileName01, FileName02 As String
Dim FileNum02 As Integer
Dim FileNum01 As Boolean
FileNum01 = True
FileNum02 = 1
'PDF文件要保存的位置,这里默认在D盘的生成PDF文件夹里
FileName01 = "D:生成PDF"
FileName02 = FileName01 & "" & PatName & FileNum02 & ".pdf"
If Dir(FileName01) = "" Then
MkDir FileName01
End If
Do While FileNum01
If Dir(FileName02) <> "" Then
FileNum02 = FileNum02 + 1
FileName02 = FileName01 & "" & PatName & FileNum02 & ".pdf"
Else: FileNum01 = False
End If
Loop
Sheets(SteName).ExportAsFixedFormat xlTypePDF, Filename:=FileName02, OpenAfterPublish:=True
'删除工作表的副本
Sheets(SteName).Delete
yAlerts = True
Updating = True
End Sub
三、注意
Excel必须是2013版本以上才支持,wps不行。VBA的代码水平不需要很高,按照上面注
释修改就可以了。如下是效果
版权声明:本文标题:利用ExcelVBA生成固定文本格式的PDF报告 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1713863051a375186.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论