2016-03-29 26 views
1

ワークシートを1つのPDFファイルに1つのコードで印刷します。 「保存されていない文書」とデバッグコードで、ここで私を取る:私はこれと同じエクセルファイルからPDFへの別の印刷をしようとすると、オープンこのPDFファイルでは、私はVBのエラーを取得するHEREExcel VBScriptを開いて、以前に印刷したPDFを別のPDFに印刷する前に閉じる

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _ 
    strFilename & " " & wedate_text & " Time", Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
    True 

はコードです:

Sub PrintAnadarkoTicketsToPDF() 
Worksheets("Cover").Visible = False 
Application.Calculation = xlCalculationManual 
Application.ScreenUpdating = False 
Application.DisplayStatusBar = False 
Application.EnableEvents = False 
Dim strFilename As String 
Dim rngRange As Range 
Dim wedate As Date 
Dim wedate_text As String 
Set rngRange = Worksheets("Cover").Range("A5") 
strFilename = rngRange.Value 
wedate = Worksheets("Cover").Range("B24").Value 
wedate_text = Format$(wedate, "mm.dd.yyyy") 
Dim myArray() As Variant 
    Dim i As Integer 
    Dim j As Integer 
    j = 0 
    For i = 1 To Sheets.Count 
     If Sheets(i).Visible = True Then 
      ReDim Preserve myArray(j) 
      myArray(j) = i 
      j = j + 1 
     End If 
    Next i 
    Sheets(myArray).Select 
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _ 
    strFilename & " " & wedate_text & " Time", Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
    True 
Worksheets("Cover").Visible = True 
Sheets(1).Select 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 
Application.DisplayStatusBar = True 
Application.EnableEvents = True 
End Sub 

私の質問は次のとおりです。スクリプトをクラッシュせずにこの2番目のPDFを印刷するにはどうすればよいですか?以前のPDFを閉じるか、別のファイル名で2番目のPDFを作成したいと思います。提案していただきありがとうございます。 Randy

+0

あなたは[これ](http://stackoverflow.com/questions/25714915/check-if-a-certain-pdf-file-is-open-and-close-it)解決策を試しましたか? –

+0

あなたは、拡張子と共に有効なファイル名を提供していないと思いますが、以下のような有効なファイル名を提供します: "c:\ path \ filename.pdf"。 –

+0

@Kiran Marojuファイル内のセル参照を介してファイル名がアセンブルされています。 – Randy

答えて

0

なぜ非表示シートの数をカウントするループが必要なのかわかりません。さらに、ループ内のシートをエクスポートすることもできます。同じファイルに保存しようとしているため、

For i = 1 To Sheets.Count 
    If Sheets(i).Visible = True Then 
     Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, filename:= _ 
      strFilename & Trim(Str(i)) & " " & wedate_text & " Time", Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
      True 
    End If 
Next i 

も注意ファイル名にワークブック番号の追加:それはあなたの問題を解決することがあります。

+0

すべてのシートを1つのPDFに印刷する必要があります。これは、シートごとに別々のPDFを印刷します。 – Randy

+0

この場合、データをすべて1枚のシートに入れることができます。新しいシートを作成し、そのシートにデータを入れ、それを1つのファイルとしてエクスポートしたら削除することもできます。もちろん、あなたはすべてあなたのコードでこれを行うことができます。 ワークシート上で 'ExportAsFixedFormat'を実行すると、そこから1つのファイルを取得します。 –

関連する問題