保存 Excel 文件并使用不同的工作表将其导出为 pdf

Posted

技术标签:

【中文标题】保存 Excel 文件并使用不同的工作表将其导出为 pdf【英文标题】:Save an Excel file and export it to pdf with a different sheet 【发布时间】:2012-07-04 19:19:20 【问题描述】:

我从来没有写过 VBA 代码,但是我在网上查了一些资料。

我的愿望如下:我有一个包含 3 张纸的 Excel 文件。在其中一个上,我想添加一个按钮,它可以:

    按照以下命名约定保存我的整个 Excel 文件:[name of a cells of a page]_AP_[date of today].xls。 将其中一张工作表保存为 .pdf 文件。 在调整内容的同时打印 3 张中的 2 张。

我已经开始做一些事情了,但我的编程真的很糟糕:

Public Sub Savefile_Click() 'copie sauvegarde classeur

' save my file following a name
Dim nom As String
Dim chemin As String
Dim wSheet As Worksheet

    chemin = "C:\Users\aaa\Desktop"
    nom = [Q13].Value & "_" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) _
          & ".xlsm"
   With ActiveWorkbook
    .SaveAs Filename:=chemin & nom
    .Close
    rep = MsgBox("Fichier excell sauvegardé")
    End With

' ... and print my active sheet (where the button will stay)
For Each wSheet In ActiveWorkbook.Worksheets
If wSheet.Visible Then wSheet.PrintOut
Next

'Save my page 'offre' in pdf on my desktop and print it
   Worksheets("OFFRE A ENVOYER").Range("A1:i47").ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=[Q13].Value & "_Offre de prix", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

End Sub

之后会有另一个选项和细节,但这确实是基础。

【问题讨论】:

【参考方案1】:

1) 另存为 Excel

Dim nom As String

nom = ThisWorkbook.Sheets(1).Range("Q13").Value & "AP" & Format(Date, "ddmmyyyy") & ".xls"
thisworkbook.saveas sPath & nom 'Define path first, don't forget the \ at the end. 

更好的是从范围“Q13”创建一个命名范围并使用:

nom = thisworkbook.names("Something").referstorange.value

在您插入会改变所有范围的列或行时使链接动态化。

2) 将工作簿另存为 PDF

    ThisWorkbook.ExportAsFixedFormat xlTypePDF, sPath & sFile 'Define here .pdf

3) “通过调整 a 的内容打印 3 张中的 2 张”

我不确定我是否得到这个......

打印命令由:

Set oSheet= thisworkbook.sheets(2)  

with oSheet.PageSetup
    .PrintArea = "$A1$1:$Q$40"
    ... 

'任何其他属性:http://www.java2s.com/Code/VBA-Excel-Access-Word/Excel/AllpropertiesofPageSetup.htm

end with
oSheet.printout

您想以哪种方式对其进行编程以检索您需要打印的工作表。 您可以使用计数器遍历工作表并放置 if 语句以添加条件。

dim oSheet as Excel.worksheet
dim iCnt as integer    

For each oSheet in thisworkbook.sheets
    iCnt = iCnt + 1
    'Include conditions here 
    If ... then 'Whatever condition
        set oSheet = thisworkbook.sheets(iCnt)
        'Print
    end if
next oSheet

【讨论】:

【参考方案2】:

谢谢...我正在搜索这个。这非常有效。

选项显式 Sub SvMe() '将文件名保存为A1加上当前日期的值

Dim newFile As String, fName As String
 ' Don't use "/" in date, invalid syntax
fName = Range("A1").Value
newFile = fName & " " & Format$(Date, "mm-dd-yyyy")
 ' Change directory to suit
ChDir _
"C:\Users\user\Desktop" 'YOU MUST Change USER NAME to suit
ThisWorkbook.ExportAsFixedFormat xlTypePDF, Filename:=newFile

结束子

这个 1. 将我的文件保存为 pdf 格式并 2. 不提示我参加另存为对话框 3.使用A1中的单元格值和日期戳保存文件

【讨论】:

以上是关于保存 Excel 文件并使用不同的工作表将其导出为 pdf的主要内容,如果未能解决你的问题,请参考以下文章

如何将access中的数据导出为EXCEL文件?

将 Excel 工作表导出到 PDF 文件时出现奇怪的 Powershell 行为

另存为excel宏单张表

Excel导出xml时提示“无法保存或者导出XML数据,此工作薄中XML映射不可导出(xml映射随便导的)请问怎么办

Excel:将工作表导出为 CSV 文件的宏,无需离开我当前的 Excel 工作表

如何把project文件保存为excel格式?