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的代码水平不需要很高,按照上面注

释修改就可以了。如下是效果

本文标签: 文本框替换生成利用功能