質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1865閲覧

VBA ActiveWorkbook.PrintPreviewの範囲とActiveWorkbook.ExportAsFixedFormatの出力内容が違う

lyzmfeqpxs54

総合スコア237

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/02/26 03:55

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

エクセル内に「印刷シート」「アカウントデータ」の2つがあり、「アカウントデータ」シートの「pdfを作成」ボタンを押すと「印刷シート」内の変数を替えながら1,2…という名前のsheetを作成し、それをまとえてpdf化するという流れを考えております。

ひとまず実験的にアカウントデータに2つのデータを入れ、1,2という名前のシートを作成その2つをまとめたpdfが出力されるようにしようと思っているのですが、うまくいきません。

「ActiveWorkbook.PrintPreview」でプレビューを見た場合には2つのシートが選択されているのですが、ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileNameでpdfを出力するとすべてのシートがpdf化してしまう状況です。

1,2という名前のシートは正しく作成されています。

下記がコードとなっております。
ご教示いただけますと幸いです。
よろしくお願いいたします。

VBA

1Sub 結合pdf化() 2 Dim LastRow As Long 3 Dim i As Long 4 Dim myNo As Long 5 Dim SaveDir As String 6 Dim WSH As Object 7 Dim FSO As Object 8 9 Dim DesktopPath As String 10 11 12 13 If vbNo = MsgBox("pdfを作成しますがよろしいですか?", vbYesNo) Then Exit Sub 14 15 Set WSH = CreateObject("Wscript.Shell") 16 Set FSO = CreateObject("Scripting.FileSystemObject") 17 DesktopPath = WSH.SpecialFolders("Desktop") 18 SaveDir = DesktopPath & "\新規フォルダ\" 19 Set FSO = Nothing 20 Set WSH = Nothing 21 22 23 ' デスクトップにフォルダがなければ作成する 24 If Dir(SaveDir, vbDirectory) = "" Then 25 MkDir SaveDir 26 End If 27 28 With Worksheets("アカウントデータ") 29 LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 30 31 For i = 1 To LastRow 32 33 myNo = .Range("A" & i).Value 34 35 Worksheets("印刷シート").Range("J4").Value = myNo 36 Worksheets("印刷シート").Copy After:=Worksheets(Worksheets.Count) 37 ActiveSheet.Name = i 38 39 Next i 40 End With 41 42 Dim fileName As String 43 fileName = SaveDir & "新規フォルダ" & ".pdf" 44 45 Dim ws As Worksheet 46 For Each ws In Worksheets(Array("1", "2")) 47 48 With ws.PageSetup 49 50 .Zoom = False 51 .FitToPagesWide = 1 52 .FitToPagesTall = 1 53 .PrintArea = "A1:F30" 54 .CenterHorizontally = True 55 .TopMargin = Application.CentimetersToPoints(1) 56 .BottomMargin = Application.CentimetersToPoints(1) 57 58 End With 59 60 Next ws 61 62 Worksheets(Array("1", "2")).Select 63 'ActiveWorkbook.PrintPreview 64 ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName, 65 IgnorePrintAreas:=False 66 67 MsgBox "pdf作成が終わりました" 68 69End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

出力する箇所でActiveSheetを使ってみてください。

VBA

1ActiveWorkbook.ExportAsFixedFormat ~ 23ActiveSheet.ExportAsFixedFormat ~

投稿2019/02/26 04:23

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lyzmfeqpxs54

2019/02/26 04:30

早速のご回答ありがとうございます。 ご教示いただいた方法で無事解決できました。 また何かの際に、ご教示いただけましたら幸いです。
ttyp03

2019/02/26 05:21

前回の質問から割りと早く解決できたようでよかったです。 解決できたようなので、解決済みに設定お願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問