[[20141023130955]] 『マクロ設定でPDFに変換』(soumu) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ設定でPDFに変換』(soumu)

先週末にここの掲示板でご質問させてもらいました。
その時は本当に大変助かりました。ありがとうございます。

その後、そのファイルを使った書式を社内で提案したのですが
これをPDFにできないの?と言われてしまいました。

その時の質問は以下です。

☆☆☆ EXCELファイルで「現在のページを印刷」「カーソルのあるページを印刷」
    という設定をしたいのですが、そういった機能がWORDにしかありません。
    EXCELでも同じような事ができますでしょうか?  ☆☆☆

その際、たいへん丁寧にお答え頂き、マクロの知識のない私は本当に感激しました。

次に教えて頂いたマクロを使ってPDFファイルに変換したいのですが
出来れば、印刷orPDF の選択ができればなおありがたいです。

どなたかご存知の方がいらっしゃればご教授願います。
何卒よろしくお願い申し上げます。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 EXCEL ファイルを PDF として保存であれば、2010 での標準機能、2007 でもアドインの追加
 でできますが、今回はページ単位での保存でしょうか。
http://www.microsoft.com/ja-jp/download/details.aspx?id=7

 そうであれば、PDF 印刷などを利用した実装になると思いますので、こういったあたりの
 利用になると思いますが、それは可能でしょうか。
http://freesoft-100.com/pasokon/pdf_maker.html

(Mook) 2014/10/23(木) 14:40


Excel2010の場合、.PrintOut している箇所を、以下のようにすると、ブックと同じ場所にPDF出力します。
どうやって印刷とPDF出力を切り替えるかは、ご自身で考えてください。

        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Replace(ActiveWorkbook.FullName, ".xlsm", ".pdf"), _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=p, To:=p, _
            OpenAfterPublish:=True
(???) 2014/10/23(木) 14:43

 2007でもSP2以降であればアドインはいらない。

 また、2007・2010とも名前を付けて保存でPDF形式を選択後、オプションで「選択した部分」「ブック全体」「選択したシート」を選択できる。

 上記を、マクロ記録したところ

     Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "パス+ファイル名", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
 で、選択部分、

     ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\kanzawa\Documents\PDFテスト3.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
 で、ブック全体

     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\kanzawa\Documents\PDFテスト1.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
 で、シートとなった。
(マルチーズ) 2014/10/23(木) 14:55

マクロの便利さを実感してもらえたなら、簡単なことからでよいので
ご自身でできるようにチャレンジしてみてください。

 Sub 現在のページを印刷orPDF変換()
    Dim myP As Long

    myP = 現在のページ
    印刷orPDFを選択 myP, myP

 End Sub

 Private Sub 印刷orPDFを選択(開始P As Long, 終了P As Long)
    Dim msg As String
    Dim ファイル名 As String

    msg = "印刷ならば「はい」を、PDFなら「いいえ」をクリック"
    ファイル名 = Format(Now, "yymmdd_hhmmss") & ".pdf"

    With ActiveSheet
        If MsgBox(msg, vbYesNo) = vbYes Then
            .PrintOut From:=開始P, To:=終了P
        Else
            ファイル名 = Application.GetSaveAsFilename _
                (InitialFileName:=ThisWorkbook.Path & "\" & ファイル名, _
                FileFilter:="PDF Files (*.pdf), *.pdf")

            If ファイル名 <> "False" Then
                .ExportAsFixedFormat Type:=xlTypePDF, _
                    Filename:=ファイル名, _
                    From:=開始P, To:=終了P
            End If
        End If
    End With

 End Sub

 Private Function 現在のページ()
    Dim v As Long
    Dim i As Long
    Dim r As Long, c As Long
    Dim myY As Long, myX As Long
    Dim p As Long

    v = ActiveWindow.View
    ActiveWindow.View = xlPageBreakPreview

    r = ActiveCell.Row
    c = ActiveCell.Column

    With ActiveSheet
        myY = 1
        If .HPageBreaks.Count > 0 Then
            For i = 1 To .HPageBreaks.Count
                If r < .HPageBreaks(i).Location.Row Then Exit For
                myY = myY + 1
            Next
        End If
        myX = 1
        If .VPageBreaks.Count > 0 Then
            For i = 1 To .VPageBreaks.Count
                If c < .VPageBreaks(i).Location.Column Then Exit For
                myX = myX + 1
            Next
        End If
        If .PageSetup.Order = xlDownThenOver Then
            p = (.HPageBreaks.Count + 1) * (myX - 1) + myY
        Else
            p = (.VPageBreaks.Count + 1) * (myY - 1) + myX
        End If
    End With

    ActiveWindow.View = v

    現在のページ = p

 End Function

(マナ) 2014/10/25(土) 14:32


この度はご回答いただきありがとうございます。

マクロを勉強しないといけないとつくづく感じました。。
私のやりたい事が完璧にできました。
本当にありがとうございます。

お礼が遅くなり誠に申し訳ございません。

(soumu) 2014/11/06(木) 14:42


いつもお世話になっております。

皆様の親切なご回答にいつも助けられております。
ありがとうございます!

またまた厚かましく質問をさせて頂きたいのですが
以前に「マクロ設定でPDFに変換」でご回答いただきました。
その後、また無理難題を言われ困っております。

マナ様にご回答いただきました
"印刷ならば「はい」を、PDFなら「いいえ」をクリック"
の部分で、印刷の場合は枚数を2枚印刷したい、尚2枚目は控えとして
ファイリングしたいので2枚名には(控)の文字を入れたいと言われてしまいました。
印刷時にスタンプを押すなどのマクロなどあるのでしょうか?
そして、印刷時だけ2枚印刷するというような設定などができるのでしょうか。。

たいへん厚かましいお願いですが、お手すきの時に教えて頂ければ
大変ありがたいです。

何卒よろしくお願い申し上げます。

(soumu) 2014/11/20(木) 16:05


2部印刷指定すると、同じものが2つ出力されてしまいますよね。

なので、(控)の文字をどこかのセルにセット後に1ページ印刷。
次に(控)の文字を消してから、1ページ印刷してはいかがでしょう?

ご要望では1ページ目そのままで2ページ目が控えですが、印刷が終わったときに
(控)の文字が消えていたほうが良いと思いましたので、逆に印刷する案としています。
(???) 2014/11/20(木) 17:33


右ヘッダーに透かしっぽい感じで(控)と印刷させるのはどうでしょうか?
実際に印刷して確認したわけではありませんので、どんな感じになるかはわかりません。

 With ActiveSheet
    If MsgBox(msg, vbYesNo) = vbYes Then
        .PrintOut From:=開始P, To:=終了P
        .PageSetup.RightHeader = "&72&K02-008(控)"
        .PrintOut From:=開始P, To:=終了P
        .PageSetup.RightHeader = ""
    Else

(マナ) 2014/11/20(木) 23:25


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.