現在、ExcelドキュメントをPDFに保存しようとしていますが、同じプロセスをWordドキュメントに適用できます。特定の範囲のページ(1、3〜5、8ページなど)をPDFファイルに保存したいと思います。
ファイルをPDFとして保存しようとすると、ファイルタイプとしてPDF]を選択し、[オプション...]ボタンをクリックすると、[ページ範囲]の下に2つのオプションしか表示されません。 。All
またはPage(s)
のいずれかを選択できます。これにより、単一の範囲(たとえば、1〜10)のみを選択できます。
ドキュメントを印刷するときと同様に、一般的なページ範囲を保存して、PDFに含めるページのコンマ区切りリスト(1, 3-5, 8
など)を入力できる方法はありますか?
私はVBAの使用を恥ずかしがりませんが、インストールできないため、a PDF printer)の使用は避けたいと思います。仕事用コンピューターのドライバー(管理者権限なし)。また、ページ番号の一貫性を維持したいと思います(1、4、5、および8ページを印刷すると、下部に「ページ1/3」、「ページ2 of 3 "など)これが可能であることはわかっています。これは、複数の選択されたセルを使用してドキュメントをPDFとしてエクスポートするときに発生するためです。
ありがとうございました。
いくつかのVBAコードと ExportAsFixedFormat
メソッド を使用して、問題の解決策をようやく見つけました。基本的に、その関数は現在のrangeをタイプとファイル名でエクスポートします。以下の答えは、私の場合に固有ですが、誰の状況にも簡単に適応できます。
いくつかの検討とコーディングの後で、適切な範囲を見つけるための解決策を思いつきました-それは完璧にはほど遠いですが。次のVBA関数(Excelでのみ使用)を作成しました。これは、2つの水平改ページの間の範囲を返します(開始列と終了列を指定する必要があります)。
' Name: Get Range
' Desc: Returns a string representing a range (e.g. "A1:Z30"), which encompasses the specified page breaks.
' Args: startHPBreak - Used to determine which starting page break to use, from 0 up to the number of pagebreaks.
' endHPBreak - Used to determine the last page break to return up to.
Function GetRange(ByVal startHPBreak As Long, ByVal endHPBreak As Long) As String
Dim startCol, endCol As String ' First, we define our starting/ending columns.
startCol = "A"
endCol = "Z"
Dim numHPBreaks As Long ' Holds the total number of horizontal page breaks.
Dim startRow, endRow As Long ' Holds the starting/ending rows of the range.
' First, we get the total number of page breaks.
numHPBreaks = ActiveSheet.HPageBreaks.Count
' Then, we check to see the passed ranges are valid (returns a blank string if they are not).
If (startHPBreak < 0) Or (startHPBreak > numHPBreaks) Then Exit Function
If (endHPBreak <= startHPBreak) Or (endHPBreak > numHPBreaks) Then Exit Function
' Next, we build our string by obtaining our starting and ending rows.
If startHPBreak = 0 Then ' If we're starting at the 0th page break...
startRow = 1 ' Then start exporting at the first row.
Else ' Else, just get the starting page break row.
startRow = ActiveSheet.HPageBreaks(startHPBreak).Location.Row
End If
' Lastly, we get the ending page break row, build the range as a string, and return it.
endRow = ActiveSheet.HPageBreaks(endHPBreak).Location.Row - 1
GetRange = startCol & startRow & ":" & endCol & endRow
End Function
いくつかの注意点があります。主に、これを機能させるには、水平方向の改ページを定義する必要があります。私の場合、この機能は機能しましたが、各ページにグラフがありました。 1ページの範囲を使おうとすると、何らかの理由で後続のページのグラフがすべて途切れる可能性があるため、次の関数を記述して、各ページを文字列内の異なる範囲として追加しました。
最後に、作成された範囲は、次の関数を介して回答の上部に詳述されているようにExportAsFixedFormat
関数に渡されました(1-2ページと12-17ページのみをエクスポートしたかった)。
' Name: Export Pages
' Desc: Exports the specified pages/range in the function to the passed filename as a PDF.
' Args: outFileName - Full or relative file name (include the extension) to export the file as.
Sub ExportPages(outFileName As String)
Dim outputRange As String ' Used to build the output range.
Dim currPage As Byte ' Holds the current page we want to export.
' There are no graphs on the first two pages, so we can get that range all at once.
outputRange = GetRange(0, 2)
' Next, we loop through and add pages 12 to 17 to the range (since they have graphs).
For currPage = 12 To 17
' We build the range one page at a time, and seperate the ranges with commas.
outputRange = outputRange & "," & GetRange(currPage - 1, currPage)
Next currPage
' Finally, we use the outputRange string to specify the range, and export it as a PDF.
ActiveSheet.Range(outputRange).ExportAsFixedFormat _
Type := xlTypePDF, _
Filename := outFileName, _
Quality := xlQualityStandard, _
IncludeDocProperties := True, _
IgnorePrintAreas := False, _
OpenAfterPublish := True
End Sub
12〜17ページの範囲を一度に1つずつ追加する必要があることに注意してください。そうしないと、(前述のように)グラフが途切れてしまいます。なぜこれをしなければならなかったのか分かりませんが、結局はうまくいきました。うまくいけば、私がここに投稿したものは、VBAコードを使用してドキュメントをPDFファイルとしてエクスポートするために誰かを正しい軌道に乗せるのに十分です。
将来、誰かがより良い解決策を思い付くことができたら、それを答えとして投稿してください。それが検討されます。
ExcelドキュメントはOpenOffice内でどのように見えますか?
OpenOfficeはPDFに直接エクスポートでき、 Portable バージョンのOpenOfficeを入手できるため、システムにインストールする必要はありません。
this を試してください。プリンターとしてインストールされるのはPDFクリエーターアプリです。ページ範囲を指定して、この「プリンター」に印刷するだけです。
Word内から直接これを実行することをお勧めしますが、そのように実行するための実際のソリューションが不足しているため、Javaである限り、PDFsam(PDF Split and Merge)を提案したいと思います。はマシン上で利用可能であり、使用するためにインストールする必要はありません。
PDFsamを使用すると、ドキュメントを効果的に分割、並べ替え、マージ、および一般的にシャッフルできます。
http://www.pdfsam.org/ から入手してください
Pdfsamとは何ですか?
PDF Split and Mergeは、PDFファイルを分割およびマージするための非常にシンプルで使いやすい無料のオープンソースユーティリティです。基本バージョンと拡張バージョンの2つのバージョンでリリースされています。コンソールとGUIインターフェイスが含まれています。