2016-11-08 106 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

個人喜好,以確保我永遠不會覆蓋編輯的主副本:) –

相關問題