(vba)excel表批量生成 PDF文件时如何自动将表中的某一列数据作为文件名

PrivateSubCommandButton1_Click()Dimstr1,str2,str3AsString'ForI=Sheet1.Cells(1,12).Val... Private Sub CommandButton1_Click()
Dim str1, str2, str3 As String
'For I = Sheet1.Cells(1, 12).Value + Sheet2.Cells(4, 6).Value - 1 To Sheet1.Cells(1, 12).Value + Sheet2.Cells(4, 6).Value - 1 + (Sheet2.Cells(5, 6).Value - Sheet2.Cells(4, 6).Value)
For I = 5 To 10
If Sheet1.Cells(I, 3).Value = "" Then Exit Sub
Sheet2.Cells(4, 3).Value = Sheet1.Cells(I, 3).Value
Sheet2.Cells(5, 3).Value = Sheet1.Cells(I, 4).Value
Sheet2.Cells(6, 3).Value = Sheet1.Cells(I, 5).Value
Sheet2.Cells(7, 3).Value = Sheet1.Cells(I, 6).Value
str2 = Sheet2.Cells(4, 3).Value
str1 = "d:\检验记录\"
str3 = str1 & str2 & ".pdf"
' Debug.Print str1
Sheet2.PrintOut 1, 1, 1, False, "Adobe PDF", True, False, str3, False
'Worksheets("Sheet2").Range("C4").Value
Next提交问题
End Sub
我这样写自动生成的pdf格式不对
我现在这样写是可以了
前面一样
str3 = str1 & str2 & ".pdf"
'
Range("B3:C8").Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
str3, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Next
End Sub
可还有个问题区域的设置,上面是转表2的,我要转表1怎么改。。。我在Range这条语句前加呢
Sheets("Sheet1").Select
好像不行啊
展开
 我来答
ioridandy
2014-02-26
知道答主
回答量:31
采纳率:0%
帮助的人:25.6万
展开全部
1. "Sheet2.PrintOut 1, 1, 1, False, "Adobe PDF", True, False, str3,False"
printout 方法只需要8个参数
◆打印当前工作表:oExcel.ActiveSheet.PrintOut() &&共八个参数
*参数1-数值:起始页号,省略则默认为开始位置
*参数2-数值:终止页号,省略则默认为最后一页
*参数3-数值:打印份数,省略则默认为1份
*参数4-逻辑值:是否预览,省略则默认为直接打印(.F.)
*参数5-字符值:设置活动打印机名称,省略则为默认打印机
*参数6-逻辑值:是否输出到文件,省略则默认为否(.F.),若选.T.且参数8为空,则Excel提示输入要输出的文件名
*参数7-逻辑值:输出类型,省略则默认为(.T.)逐份打印,否则逐页打印
*参数8-字符值:当参数6为.T.时,设置要打印到的文件名

2.Next提交问题
应该是 Next i 吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoxi1981
2014-02-26 · TA获得超过1197个赞
知道小有建树答主
回答量:961
采纳率:72%
帮助的人:334万
展开全部

如果你使用的Excel是2007版或者以上的可以使用工作表的ExportAsFixedFormat 的方法,将Excel工作表另存为PDF格式的文件。

具体语法:

Sheet2.ExportAsFixedFormat Type:=xlTypePDF, Filename:= str3, Quality:=xlQualityStandard
追问
帮我看看补充的问题
追答

你的代码是在Sheet2里面的。所以Range("A2:K18").Select这句默认的是sheet2的range对象。代码Sheet1.Activate将sheet2设置成了活动工作表。再用Range("A2:K18").Select这句的话就出现错了。不能选择非活动工作表的单元格区域的。


代码修改如下:

ActiveSheet.Range("A2:K18").Select    '选择的是Sheet1的A2:K18区域。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
124442269
2014-02-26 · TA获得超过147个赞
知道小有建树答主
回答量:683
采纳率:0%
帮助的人:233万
展开全部
ThisWorkbook.SaveAs str3
追问
能详细点不。。不大懂VBA
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式