【初月無料キャンペーン中】gooドクター

先日、VBAでエクセルをPDFで保存するときの記述を、tatsu99様に2パターン教えていただいたきました。

現在、保存先を社内の共有サーバーに作成したフォルダを指定していますが
どちらのパターンも、複数のユーザーが各自のデスクトップに作成した特定のフォルダに保存するにはどのように記述したらよいでしょうか?

各ユーザーには、デスクトップに「PDF保存」というフォルダ名でフォルダを作成してもらいます。

「デスクトップパスを取得するユーザ定義関数」など調べてみたのですが、上手くできず…

よろしくお願いいたします。


【先日教えていただいた記述 パターン①】-------------------------------------------------------

■エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述
https://oshiete.goo.ne.jp/qa/10704317.html

Option Explicit
Sub PDF出力()
Const saveFolder = "\\server\PDF保存\"
Dim fname As String
Dim fullname As String
fname = ActiveSheet.Range("A1").Value & ".pdf"
fullname = saveFolder & fname
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fullname
MsgBox (fullname & "保存完了")
End Sub
---------------------------------------------------------------------------------------------------

【先日教えていただいた記述 パターン②】-------------------------------------------------------

■小計の列が「0」の行は非表示で、エクセルをPDF保存するVBAの記述
https://oshiete.goo.ne.jp/qa/10707560.html

Sub PDF出力()
Const saveFolder = "\\server\PDF保存\"
Dim fname As String
Dim fullname As String
Call 表示制御(True)
fname = ActiveSheet.Range("A1").Value & ".pdf"
fullname = saveFolder & fname
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fullname
Call 表示制御(False)
MsgBox (fullname & "保存完了")
End Sub

Private Sub 表示制御(flag)
Dim maxrow As Long
Dim row As Long
maxrow = Cells(Rows.Count, "F").End(xlUp).row 'F列の最大行取得
For row = 6 To maxrow
If Cells(row, "F").Value = 0 Then
Rows(row).EntireRow.Hidden = flag
End If
Next
End Sub
---------------------------------------------------------------------------------------------------

gooドクター

A 回答 (1件)

tatsu99です。


パターン②だけです。
Sub PDF出力()を以下のように変えてください。
Private Sub 表示制御(flag) は変更不要です。
パターン①も同様にします。やってみてください。(出来なかった場合は補足してください)
----------------------------------
Sub PDF出力()
Dim saveFolder As String
Dim WSH As Variant
Dim fname As String
Dim fullname As String
Set WSH = CreateObject("WScript.Shell")
saveFolder = WSH.SpecialFolders("Desktop") & "\"
Call 表示制御(True)
fname = ActiveSheet.Range("A1").Value & ".pdf"
fullname = saveFolder & fname
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fullname
Call 表示制御(False)
MsgBox (fullname & "保存完了")
End Sub
    • good
    • 0
この回答へのお礼

お世話になっております。
毎々、迅速で的確なご回答をいただき本当にありがとうございます。

パターン①も同様にし、できました!
おかげさまで、社内のリクエストに応えることができ
大変助かりました。

またご相談をアップさせていただくこともあるかと思いますが
今後ともどうぞよろしくお願いいたします。

お礼日時:2018/09/13 13:41

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

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

gooドクター

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

人気Q&Aランキング