0

我从未编写过 VBA 代码,但我在互联网上查看了一些信息。

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

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

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

4

2 回答 2

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
于 2012-07-05T08:13:46.910 回答
0

谢谢...我正在寻找这个。这工作得很好。

Option Explicit 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 中的单元格值和日期戳保存文件

于 2013-03-15T09:20:37.603 回答