2016-08-21 80 views
0

今天我需要複製我的活動工作表範圍,而不是所有的頁面。活動工作表複製範圍

我對眼前這個代碼:

Sub Save1() 
Dim NomFichier, Nom 
Nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & Hour(Time) & "-" & Minute(Time) & "-" & Second(Time) 

ActiveSheet.Copy 
ActiveWorkbook.SaveAs Filename:="C:\Users\Illyana\Documents\Dropbox\Personnel\Freddy\Audit réalisé\Chambre 100\" & "Chambre_" & ActiveSheet.Name & "_" & Nom 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Illyana\Documents\Dropbox\Personnel\Freddy\Audit réalisé\Chambre 100\PDF\" & "Chambre_" & ActiveSheet.Name & "_" & Nom, Quality:= _ 
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ 
From:=1, To:=1, OpenAfterPublish:=False 

End Sub 
Sub Reinitialiser() 
    [D4:J53].ClearContents 
End Sub 

但是,當我改變這一行:ActiveSheet.Copy由:ActiveSheet.Range("A1:J72").Copy拷貝工作,但工作簿與所有的表創建。

我能做些什麼來保存好範圍的activesheet?

回答

0

要使用Range.Copy方法,您需要指定將數據複製到的目標範圍。我已經使用註釋更新了以下代碼,以顯示如何將範圍複製到新工作簿中的新工作表。您將需要「WorksheetName」更改爲包含數據的工作表的名稱:

Sub Save1() 

Dim wb As Excel.Workbook, wsSource As Excel.Worksheet, wsDest As Excel.Worksheet 
Dim NomFichier, Nom 
Nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & Hour(Time) & "-" & Minute(Time) & "-" & Second(Time) 

' Reference the Worksheet containing the data to be copied 
' Change "WorksheetName" to the name of the Worksheet to copy from 
Set wsSource = ActiveWorkbook.Worksheets("WorksheetName") 

' Create a new Workbook with one Worksheet 
Set wb = Workbooks.Add(xlWBATWorksheet) 

' Set a reference to the Worksheet in the new Workbook 
Set wsDest = wb.Worksheets(1) 

' Copy the data to the new Worksheet, paste at Cell "A1" 
wsSource.Range("A1:J72").Copy wsDest.Range("A1") 
wb.SaveAs Filename:="C:\Users\Illyana\Documents\Dropbox\Personnel\Freddy\Audit réalisé\Chambre 100\" & "Chambre_" & wsSource.Name & "_" & Nom 

wsDest.ExportAsFixedFormat Type:=xlTypePDF, _ 
         Filename:="C:\Users\Illyana\Documents\Dropbox\Personnel\Freddy\Audit réalisé\Chambre 100\PDF\" & "Chambre_" & wsSource.Name & "_" & Nom, Quality:= _ 
         xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ 
         From:=1, To:=1, OpenAfterPublish:=False 

End Sub 
+0

確定它工作正常但是我的佈局問題並不一樣。該副本不會保存每個單元格的寬度,並且新工作表不採用與原始 –

1

下面幾行代碼的:

ActiveSheet.ExportAsFixedFormat _ 
           Type:=xlTypePDF, _ 
           Filename:="C:\Users\Illyana\Documents\Dropbox\Personnel\Freddy\Audit réalisé\Chambre 100\PDF\" & "Chambre_" & ActiveSheet.Name & "_" & Nom, _ 
           Quality:= xlQualityStandard, _ 
           IncludeDocProperties:=True, _ 
           IgnorePrintAreas:=False, _ 
           From:=1, To:=1, _ 
           OpenAfterPublish:=False 

ActiveSheet導出爲PDF文件。

要導出只是ActiveSheet.Range("A1:J72")你應該說:

ActiveSheet.Range("A1:J72").ExportAsFixedFormat _ 
           Type:=xlTypePDF, _ 
           Filename:="C:\Users\Illyana\Documents\Dropbox\Personnel\Freddy\Audit réalisé\Chambre 100\PDF\" & "Chambre_" & ActiveSheet.Name & "_" & Nom, _ 
           Quality:= xlQualityStandard, _ 
           IncludeDocProperties:=True, _ 
           IgnorePrintAreas:=False, _ 
           From:=1, To:=1, _ 
           OpenAfterPublish:=False 

你的代碼行說不需要爲了執行導出

ActiveSheet.Copy 
ActiveWorkbook.SaveAs Filename:="C:\Users\Illyana\Documents\Dropbox\Personnel\Freddy\Audit réalisé\Chambre 100\" & "Chambre_" & ActiveSheet.Name & "_" & Nom 

。 (由於其他原因可能需要SaveAs,例如,因爲您希望將整個工作簿的副本保存在一個目錄中,而將PDF版本保存在子目錄中,所以不需要複製。)

+0

相同的名稱,但爲了安全起見,我將該文件導出爲pdf,但我還想導出工作表,爲什麼使用PDF導出在第二次 –

+0

@ThéoMercier-balaz - 聽起來很好的理由 - 所以擺脫'Copy',但保留'SaveAs'。 – YowE3K

+0

我有一個問題,當我導出工作表時,佈局是不一樣的。 –

相關問題