2016-11-08 102 views
0

我有一个代码,在这里我想:我如何保存为PDF格式通过VBA

  1. 保存主文件(当前活动工作簿),
  2. 修改工作簿和删除表,
  3. 然后保存作为Excel工作表和PDF文件的编辑工作簿 的单独副本。

我在这里的问题是,即使在我尝试激活编辑后的Excel文件后,代码仍将PDF文件保存为原始Masterfile文件。这里有帮助吗?真的很感激任何建议!代码如下:

ActiveWorkbook.Save 


Sheets("Inventory").Select 
Cells.Select 
Selection.Copy 
Cells.Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.DisplayAlerts = False 

Sheets("May").Select 
Cells.Select 
Selection.Copy 
Cells.Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

Range("A1").Select 
Sheets("Macro").Select 
ActiveWindow.SelectedSheets.Delete 
Application.DisplayAlerts = False 

Sheets("Oct").Select 
ActiveWindow.SelectedSheets.Delete 
Application.DisplayAlerts = False 

Sheets("Inventory").Select 
Range("A1").Select 

Sheets("Inventory").Cells.Interior.ColorIndex = 0 

ChDir "G:\9Fixed\Posi\2016\Inventory" 
ActiveWorkbook.SaveAs Filename:= _ 
    "G:\9Fixed\Posi\2016\Inventory\Asia Fixed - " & Format(Date, "dd mmm") & ".xls", FileFormat:= _ 
    xlOpenXMLWorkbook, CreateBackup:=False 
Application.DisplayAlerts = False 
'ActiveWorkbook.ExclusiveAccess 
Application.DisplayAlerts = True 

Workbooks("Asia - " & Format(Date, "dd mmm") & ".xls").Activate 
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"G:\9Fixed Income\Positions\2016\Inventory\Asia Fixed Income - " & Format(Date, "dd mmm") & ".pdf", Quality:=xlQualityStandard, _ 
IncludeDocProperties:=True, IgnorePrintAreas:=False, _ 
OpenAfterPublish:=False 

回答

0

我无法重现您遇到的问题。

这是我的'测试'代码,使用工作簿中的4张表格和单元格中的信息(1,1),一张名为“May”的表格被删除,并且新文件没有“May “而pdf也不是。

我将saveas代码移到文件顶部。也许这会解决你的问题,但我不相信。

Option Explicit 
Sub SaveCopies() 
    Dim c_OUTPUTDIR As String 
    Dim sFileName As String 
    Dim fso As Object ' Used to handle paths, filenames, etc. 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    c_OUTPUTDIR = "C:\temp\" 
    ' Save the master copy. 
    ActiveWorkbook.Save 


    ' Generate new name for file. 
    sFileName = fso.GetBaseName(ActiveWorkbook.FullName) & "_" & Format(Date, "dd mmm") 
    ' Save new working file. 
    ActiveWorkbook.SaveAs Filename:= _ 
     c_OUTPUTDIR & sFileName & ".xls", FileFormat:= _ 
     xlOpenXMLWorkbook, CreateBackup:=False 

    ' Make changes to working file. 
    Application.DisplayAlerts = False 
    ActiveWorkbook.Sheets("May").Delete 
    Application.DisplayAlerts = True 
    ' Save the changes. 
    ActiveWorkbook.Save 

    ' Save a PDF of the file. 
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    c_OUTPUTDIR & sFileName & ".pdf", Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, IgnorePrintAreas:=False, _ 
    OpenAfterPublish:=False 

End Sub 
+0

我会试试你的代码,并感谢你回到这个问题!但是,我可以问,为什么在编辑之前先保存文件的新副本,然后再保存一次? – jadeliew123

+0

个人喜好,以确保我永远不会覆盖编辑的主副本:) –

相关问题