2017-07-07 22 views
2

ブックを保存した同じ場所にさまざまなワークシートをpdfsとして書き出すためのマクロが多数あります。Excelマクロ - PDFにエクスポート

私の問題は、ワークブックがデスクトップ上のフォルダに保存されている場合、PDFがうまく生成されることです。

ワークブックがネットワーク上の場所に保存されると、pdfsは生成されません。以下のマクロのサンプルです:

Sub PDF_CStmtP() 

    Application.ScreenUpdating = False 

    ThisWorkbook.Sheets(Array("C Stmt - P")).Select 

    pdfname = fileSaveName 
    ChDir ActiveWorkbook.Path & "\" 
    fileSaveName = "Closing Statement (Purchase)" 

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
     fileSaveName _ 
     , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
     :=False, OpenAfterPublish:=False 

    Application.ScreenUpdating = True 

    ActiveWorkbook.Sheets("Main Menu").Activate 

    MsgBox "File Saved " & " " & fileSaveName 
End Sub 
+0

を'fileSaveName'に値が与えられる前に。また、正しいエラーはありませんか?テストとして 'fileSaveName'を' 'K:\ Closing Statement(Purchase)' '(' K:\ 'がネットワークフォルダであると仮定して)に変更してみてください。あなたは完全なパスをそこに通らなければならないかもしれません。 – BruceWayne

+0

私は、開いているマクロを有効にしたテンプレートを持っているので、私たちが作業する各ファイルの別の場所にマクロが有効なブックとして保存されるのを避けようとしています。パスは毎回変わるでしょう。 (あなたにバットマンを迎えて喜んで) – Ryan

+1

ええ、毎回変わることは分かっています。問題がファイル名かどうかを確認するだけです。ファイル名に直接パスを入れても、それが期待通りの場所に保存されていない場合、それは別のものです。 *が*保存されている場合は、フルパスを含めるには1行または2行を追加するだけです。 – BruceWayne

答えて

2

あなたの問題は、のchdirコマンドでは、説明のためにここを参照してください:このhttps://www.techonthenet.com/excel/formulas/chdir.php

重要な部分は、「CHDIRステートメントは、あなたが現在のディレクトリを変更することができますされますドライブを変更する必要がある場合は、まずCHDRIVEステートメントを使用してみてください。

ネットワークドライブに保存しようとすると、ドライブ文字がC:\からネットワークドライブがマップされているものに変更されています。私の場合はU:\でした。

あなたのコードに簡単な修正は、ファイル名だけにあるので、あなたのコードは次のようになりますしChDir関数からのパスを移動することです:

Sub PDF_CStmtP() 

Application.ScreenUpdating = False 

ThisWorkbook.Sheets(Array("C Stmt - P")).Select 

pdfname = fileSaveName 
'ChDir ActiveWorkbook.Path & "\" 
fileSaveName = ActiveWorkbook.Path & "\" & "Closing Statement (Purchase)" 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= fileSaveName, _ 
Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
IgnorePrintAreas:=False, OpenAfterPublish:=False 

Application.ScreenUpdating = True 

ActiveWorkbook.Sheets("Main Menu").Activate 

MsgBox "File Saved " & " " & fileSaveName 
End Sub 

あなたがそれをきれいに作ることができるいくつかの他の編集があります。これは手元の問題を解決します。

**メッセージボックスについてのコメントをもとに、あなたはこれまでコード変更することができます:あなたがいることを定義するため、 `(あなたが使用することはありません)pdfname`は、空白/空になり、FYI

Sub PDF_CStmtP() 

Application.ScreenUpdating = False 

ThisWorkbook.Sheets(Array("C Stmt - P")).Select 

pdfname = "Closing Statement (Purchase)" 
'ChDir ActiveWorkbook.Path & "\" 
fileSaveName = ActiveWorkbook.Path & "\" & pdfname 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= fileSaveName, _ 
Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
IgnorePrintAreas:=False, OpenAfterPublish:=False 

Application.ScreenUpdating = True 

ActiveWorkbook.Sheets("Main Menu").Activate 

MsgBox "File Saved " & " " & pdfname 
End Sub 
+0

それはうまくいって、問題を解決しましたが、ファイルパス全体を持つメッセージボックスではちょっと厄介ですが、少なくとも動作します。 – Ryan

+0

私は解決策を持っているので、今私は作業するマクロのトンがあり、その日は十分ではありません。あなたの助けをありがとう、病気がどのように進行するかを教えてください。 – Ryan

関連する問題