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

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

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

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

Q&A

解決済

3回答

296閲覧

Excel VBAでPDFに変換したい

SnowBallEffect

総合スコア28

VBA

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

0グッド

0クリップ

投稿2019/07/10 02:19

編集2019/07/10 02:33

Excel VBA で複数のworksheetを一つのPDFに変更したいのだが、loop 機能を使って、最初のworksheetだけを飛ばしたい。

こちらが私のコードです。

VBA

1 2Sub Sonpo2020toPDF() 3 4Dim newfilename As String 5Dim icount as Integer 6 7pathname = Range("B6") 8lastmonth = Range("B5") 9newfilename = Range("B14") 10fullfilename = pathname & "\" & Filename 11newfullfilename = pathname & "\" & "DCR001_" & Range("B5").Text & "_M" & ".xlsx" 12newpdfname = pathname & "\" & "DCR001_" & Range("B5").Text & "_M" 13 14Workbooks.Open Filename:=newfullfilename 15 16For icount = 2 To Worksheets.Count 17Next icount 18 19ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 20newpdfname, Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 21IgnorePrintAreas:=False, OpenAfterPublish:=False 22 23ActiveWorkbook.Close SaveChanges:=False 24 25End Sub 26 27 28閉じる ▼

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

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

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

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

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

m.ts10806

2019/07/10 02:20 編集

そもそも「PDFの変換」はできているのでしょうか。 ご自身が試したコードをご提示ください。
SnowBallEffect

2019/07/10 02:26

返信ありがとうございます。PDFの変換はできているのですが、どしてもすべてのワークシートが変換されます。こちらが私のコードです。宜しくお願いします。 Sub Sonpo2020toPDF() Dim newfilename As String Dim icount as Integer pathname = Range("B6") lastmonth = Range("B5") newfilename = Range("B14") fullfilename = pathname & "\" & Filename newfullfilename = pathname & "\" & "DCR001_" & Range("B5").Text & "_M" & ".xlsx" newpdfname = pathname & "\" & "DCR001_" & Range("B5").Text & "_M" Workbooks.Open Filename:=newfullfilename For icount = 2 To Worksheets.Count Next icount ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ newpdfname, Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False ActiveWorkbook.Close SaveChanges:=False End Sub
m.ts10806

2019/07/10 02:28

質問は編集できますし、コメント欄ではマークダウンが使えない上に、こちらはデフォルト非表示です。 コードをマークダウンのcode機能によってご提示ください。
m.ts10806

2019/07/10 02:40

For内に何も処理を書いていないのはどういう意図があるのでしょうか?
SnowBallEffect

2019/07/10 03:43

いえ、ここがどうしてもわからなくて、何を入れればいいのかわからないのです。。。  以下のコードを入れてたのですが、なぜかいつも全てのワークシートがPDFに変換されます。。。 If sh.Visible = xlSheetVisible Then ReDim Preserve strSheets(icount) strSheets(icount) = sh.Name icount = icount + 1 End If
guest

回答3

0

ベストアンサー

vba

1For icount = 2 To Worksheets.Count 2Next icount

この部分を、

vba

1 Worksheets(2).Select 2 For icount = 3 To Worksheets.Count 3 Worksheets(icount).Select False 4 Next icount

こんな感じに書き換えてみると、どうでしょうか。
まず2番目のシートを選択し、3番目以降のシートは追加で選択しています。
この状態で ActiveSheet.ExportAsFixedFormat を実行すれば、お望みの動作になりませんか?

投稿2019/07/10 04:32

alg

総合スコア2019

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

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

SnowBallEffect

2019/07/11 01:21

ダメでした。。。Loop はできなかったので、仕方なくSheets(Array("Sheet1", "Sheet2").Select で PDFにexportしました。ありがとうございました。
alg

2019/07/11 03:26

解決されたようで何よりです。が、Forループを記述したときに何がどう"ダメ"だったのかを書いていただけると、後程このページにたどり着いた人の助けになるかもしれません。
guest

0

質問を見たとたん、ドキュメントの変換にふさわしい.NETプラットフォーム用コンポーネント、Spire.XLS for .NETを思いつきました。これは無料で使用でき、簡単かつ便利な強力なツールとして、変換機能は他の妙な問題も発生しません。VBAのコードは以下のようになります、ご参照してください。

Imports

1Namespace Convert 2 Class Program 3 Private Shared Sub Main(args As String()) 4 Dim workbook As New Workbook() 5 workbook.LoadFromFile("test.xlsx", ExcelVersion.Version2010) 6 ' ワークブックに新しいシートを追加する 7 workbook.Worksheets.Add("newsheet") 8 '選択された範囲を新しいシートにコピーする workbook.Worksheets(0).Range("A1:H11").Copy(workbook.Worksheets(1).Range("A1:H11")) 9 '新しいシートをPDFに変換する 10 workbook.Worksheets(1).SaveToPdf("result.pdf", Spire.Xls.FileFormat.PDF) 11 12 End Sub 13 14 End Class 15End Namespace

投稿2021/12/31 02:29

yamausag1

総合スコア30

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

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

0

主さんの思っている動きかわかりませんが
普通に『マクロの記録』で行ける気がしました。
名前をつけて保存→PDF保存時に下にあるオプションボタンを押してみて下さい。

投稿2019/07/10 02:37

torisan

総合スコア678

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問