初めて自分の家と他人の家が違う、と意識した時

エクセルバージョン2007を使用しています。

よろしくお願いします。
現在、下記のマクロにて見積書をPDFを保存しているのですが、
下記コードの場合、最終に保存した場所が記憶される(?)ので、PDFの保存先が固定できません。
また、ファイルを更新すると、初期のPDF保存先が各PCのマイドキュメントへ保存されてしまいます(ファイルを共有しています)。

希望としまして、
①共有でファイル(見積書.xlsm)を使用しているのですが、PDF保存先を『'\\hoge\見積フォルダ\』に固定したい
②PDF保存の際、同名ファイルがある場合、警告なく上書きされるので、警告するようにしたい

現在のコードです
------------------------------------------------------------
Sub PDF見積保存()

Dim fName As String

'『Y4』は見積書のファイル名で、『顧客名.pdf』になるようにしています
pdfname = Range("Y4").Text

'保存ファイル名及び保存場所の設定
fName = Application.GetSaveAsFilename(pdfname, "PDFファイル,*.pdf")
'保存操作
Sheets(2).ExportAsFixedFormat Type:=xlTypePDF, fileName:=pdfname

End Sub
------------------------------------------------------------

以上、ご回答いただけますと幸いです。

A 回答 (1件)

1.保存先フォルダを固定したいのなら、Application.GetSaveAsFilenameを使用しないで、


fName = "\\hoge\見積フォルダ\" & pdfname
にすればいいと思います。

保存先の初期値として上記のフォルダにして、名前を付けて保存ダイアログを出したいのなら、
Application.GetSaveAsFilenameの最初のパラメータを、pdfnameではなくてフルパスにします。

2.警告なく上書きしたくないということですので、保存前にDir()を使用してファイルの存在確認を
すれば可能です。

----------------------------------------------------
Sub PDF見積保存()

Dim folder As String
Dim fName As String
Dim pdfname As String
Dim rtn As Long

folder = "\\hoge\見積フォルダ\"

'『Y4』は見積書のファイル名で、『顧客名.pdf』になるようにしています
pdfname = Range("Y4").Text

'保存ファイル名及び保存場所の設定
fName = Application.GetSaveAsFilename(folder & pdfname, "PDFファイル,*.pdf")
'キャンセルボタン押下時
If fName = "False" Then Exit Sub

'ファイルの存在確認
If Dir(fName) <> "" Then
rtn = MsgBox(fName & " が存在します。上書きしますか?", vbOKCancel + vbQuestion, "確認")
’キャンセルボタン押下時
If rtn = vbCancel Then Exit Sub
End If

'保存操作
Sheets(2).ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName
MsgBox fName & " 保存完了"

End Sub
    • good
    • 2
この回答へのお礼

ご回答、ありがとうございます。

ご教示いただきましたコードで試してみたところ、
期待通りの動作を得られました。

内容につきましては追って学んでいきたいと思います。
コードまでお教えいただき、この度は誠にありがとうございました!

お礼日時:2018/03/22 12:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A