こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルファイルのPDF保存マクロ

お世話になります。
エクセル2007を使用しています。コマンドボタンを押すとMsg BOXを出現させ「PDF形式で保存しますか?」と表示し「はい」を押すとエクセルファイルをPDFファイル形式に自動で保存しようと考えています。
紙の大きさはB4サイズでPDFファイルに保存させたいです。
保存先はデスクトップのフォルダ「購買分」と言う所に保存します。
保存の名称に関してはエクセルファイルのC1には「2014年2月」と表示されており「購買分2014年2月」と自動で保存してくれる様にしたいです。
この様なマクロはエクセルで組むことが出来るのでしょうか?

投稿日時 - 2014-02-14 11:39:28

QNo.8474578

すぐに回答ほしいです

質問者が選んだベストアンサー

ちょっと強引かもしれませんが,とりあえず保存できる方法として

Sub Sample()
If Range("C1").Value <> "" Then
Dim Fn As String
Fn = Format(Range("C1"), "yyyy年m月") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\Users\ユーザー名\Desktop\購入分" & Fn
Else
MsgBox "セルC1にファイル名が入力されていません。", vbExclamation
End If

End Sub

最初の通常保存時には使用できない文字を入力する場合、エラーメッセージを発生させてVBAを止める部分を消せば、保存できました。

投稿日時 - 2014-02-18 12:45:57

お礼

ありがとうございました、無事に解決しました。この度は私の為に時間を割いていただきありがとうございました。

投稿日時 - 2014-02-19 23:19:43

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

先ずNet上で見つけたマクロを解釈してみますと
Sub Sample()

With Range("C1")
If .Value <> "" Then
If InStr(.Value, "\") > 0 Or _
InStr(.Value, "/") > 0 Or _
InStr(.Value, ":") > 0 Or _
InStr(.Value, "*") > 0 Or _
InStr(.Value, "?") > 0 Or _
InStr(.Value, """") > 0 Or _
InStr(.Value, "<") > 0 Or _
InStr(.Value, ">") > 0 Or _
InStr(.Value, "|") > 0 Then
MsgBox "セルC1にファイル名に使えない文字(\/:*?" & """" & "<>|)が含まれています。", vbExclamation

ファイル名(C1のセル)に「\、/、:、*、?、""、<、>、|」が入っている場合はメッセージを表示させて、マクロを終了させるという意味になります。


Else
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\Users\ユーザー名\Desktop\" & .Value & ".pdf"

ファイル名に上記の文字が入っていない場合,C1.valueの名前でpdf形式で保存します。

End If
Else
MsgBox "セルC1にファイル名が入力されていません。", vbExclamation
End If

End With

End Sub

あるサイトでこの様なVBAが見つかりました。これで出来るかと思いましたがC1の日付の表示が「2014/2/16」となっているため「セルC1にファイル名に使えない文字(\/:*?" & """" & "<>|)が含まれています。」と表示され保存できません。

書式形式を変更しても上手くいきませんでした。どうすれば良いでしょうか?



書式ではなく、そのセルの値の属性が何であるかが重要だと思います。
仮に文字だとすれば、2014/2/16.pdfを作ろうとしますので、これは最初のIF構文中の「/」が入っているので保存できない、という解釈になります。


ところで、保存したいファイル名は「購入分2014年2月」であるので

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\Users\ユーザー名\Desktop\" & .Value & ".pdf"



Dim Fn as String
Fn = Format(Range("C1"), "yyyy年m月") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\Users\ユーザー名\Desktop\購入分" & Fn

に変えてみて下さい。多分できると思います。
補足ですが、ユーザー名は自分のアカウント名を入力してくださいね。

投稿日時 - 2014-02-17 12:59:25

補足

保存しようとしたら「セルC1にファイル名に使えない文字(\/:*?" & """" & "<>|)が含まれています」と表示され、該当するフォルダに保存出来ませんでした。
C1セルの年月はカレンダーから選択する仕様になっており、セルの書式設定が「〇〇〇〇年〇〇月」となってます。C1セルを標準の文字に設定すると2014年2月17日は「41687」と言う文字になりますね。

投稿日時 - 2014-02-17 19:58:48

お礼

ありがとうございました、無事に解決しました。この度は私の為に時間を割いていただきありがとうございました。

投稿日時 - 2014-02-19 23:19:54

ANo.1

2010で同じような事ができていますので、おそらくできると思います。

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
フォルダのパスとファイル名 & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= False

ファイル名の部分はRange(C1)で指定すれば良いと思います。

投稿日時 - 2014-02-14 12:45:45

補足

Sub Sample()

With Range("C1")
If .Value <> "" Then
If InStr(.Value, "\") > 0 Or _
InStr(.Value, "/") > 0 Or _
InStr(.Value, ":") > 0 Or _
InStr(.Value, "*") > 0 Or _
InStr(.Value, "?") > 0 Or _
InStr(.Value, """") > 0 Or _
InStr(.Value, "<") > 0 Or _
InStr(.Value, ">") > 0 Or _
InStr(.Value, "|") > 0 Then
MsgBox "セルC1にファイル名に使えない文字(\/:*?" & """" & "<>|)が含まれています。", vbExclamation
Else
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\Users\ユーザー名\Desktop\" & .Value & ".pdf"
'引数Filenameには保存したい場所を指定してください(このコードではデスクトップに保存しています)。
End If
Else
MsgBox "セルC1にファイル名が入力されていません。", vbExclamation
End If

End With

End Sub

あるサイトでこの様なVBAが見つかりました。これで出来るかと思いましたがC1の日付の表示が「2014/2/16」となっているため「セルC1にファイル名に使えない文字(\/:*?" & """" & "<>|)が含まれています。」と表示され保存できません。

書式形式を変更しても上手くいきませんでした。どうすれば良いでしょうか?

投稿日時 - 2014-02-16 17:20:46

お礼

ありがとうございました、無事に解決しました。この度は私の為に時間を割いていただきありがとうございました。

投稿日時 - 2014-02-19 23:20:02

あなたにオススメの質問