2016-08-21 8 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をコピーは動作しますが、ワークブックがすべてのシートを使用して作成されます。

良い範囲のアクティブシートだけを保存するにはどうすればよいですか?

答えて

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

Ok it's work私はレイアウトの問題は同じではありません。コピーは各セルの幅を保存せず、新しいシートはオリジナルと同じ名前にならない –

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 

PDFファイルとしてActiveSheetをエクスポートします。

はちょうど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は、たとえば、ブック全体のコピーを1つのディレクトリに保存し、PDFバージョンをサブディレクトリに保存したいなどの理由で必要な場合があります)。

+0

私はセキュリティのためにpdfファイルをエクスポートしますが、シートをエクスポートしたいので、なぜPDFエクスポートを使用するのですか –

+0

@ThéoMercier-balaz - 正当な理由があると思うので、 'Copy'を取り除いて、' SaveAs'を残しておいてください。 – YowE3K

+0

シートをエクスポートすると、レイアウトが同じではないという問題があります。 –