ExcelをシートごとにPDF変換したい時ありませんか?
手順が多く、地味に面倒ですよね…
そこで、この記事ではExcelのファイルをシートごとにPDFに変換する方法を紹介します。
複数のExcelファイルでも一括で変換できます
ExcelファイルをPDFに変換する方法はこちら
Word、PowerPointをPDFに変換する方法はこちら
はじめまして、さかいと申します。
インスタで『自動化オタクの仕事術』を紹介している自分が解説させていただきます!
変換イメージ
早速ですが、どのようにExcelファイルをPDFに変換するか説明していきます
今回PDFに変換するExcelファイルはこちら
5月、6月、7月の3シートをそれぞれPDFに変換します
①ExcelファイルをPDF変換ファイルにドラッグ&ドロップする
②同じフォルダにPDFファイルが作成
PDFのファイル名は「Excelのファイル名_シート名」になります
これだけでPDFファイルに変換できます!
①のPDF変換ファイルの作り方について説明していきます
変換ファイルの作成
早速、変換ファイルの作り方を解説していきます!
1.メモ帳を起動
2.メモ帳に以下のコードを貼り付け
// ドラッグ&ドロップされたファイルを確認する
if (WScript.Arguments.Count() == 0) {
WScript.echo("ファイルがありません。");
WScript.Quit();
}
// Excelを起動する
var excel = WScript.CreateObject("Excel.Application");
excel.Visible = true;
// 1ファイルずつPDFに変換する
for (var i = 0; i < WScript.Arguments.Count(); i++) {
exportPDF(WScript.Arguments.Item(i));
}
excel.Quit();
WScript.echo("変換終了!");
//---------------------------------------------------------
// ExcelファイルをPDFに変換する
function exportPDF(fname) {
var fs = new
ActiveXObject("Scripting.FileSystemObject");
// フォルダパスを取得
var folderPath = fs.GetFile(WScript.ScriptFullName).ParentFolder
// ファイル名を取得
var fileName = fs.GetBaseName(fname);
// 出力先、ファイル名を設定
var output = folderPath + '/' + fileName;
// Excelを開き、PDFに変換する
var book = excel.Workbooks.Open(fname);
var sheets = book.worksheets;
for (var i = 1; i <= sheets .Count; i++) {
// シート名を取得
var sheetName = sheets(i).name;
// PDFファイル名を設定
var pdfFileName = output + '_'+ sheetName;
sheets(i).ExportAsFixedFormat(0,pdfFileName ,0,true,false);
}
book.Close();
}
//---------------------------------------------------------
3.名前を付けて保存を開く
※ショートカット
Ctrl + Shift + S
4.ファイル名、形式を変更して保存
ファイル名は任意で大丈夫です。
①「.」から後ろに「.jse」を入力
②文字コードは「ANSI」を選択
5.完成
ファイルのアイコンが変わっていればOKです
あとは先ほど紹介したように
Excelファイルをドラッグ&ドロップするとPDFファイルが作成されます
コードのアレンジ
シート番号を指定したり、指定したシート名のみをPDF変換するコードを紹介!
コードをコピーして、業務に合わせて使い分けてください
①シート番号を指定してPDF変換
1シート目や最後のシートを指定できるため、
複数ファイルの1シート目だけPDFにする時などにお使いください
以下のコードを貼り付け
以下のコードをメモ帳に貼り付けてください
以降は上記で紹介した手順と同じです
// PDF変換したいシート番号(1シート目は1、最後のシートは0を入力)
var sheetNumber = 1;
// ドラッグ&ドロップされたファイルを確認する
if (WScript.Arguments.Count() == 0) {
WScript.echo("ファイルがありません。");
WScript.Quit();
}
// Excelを起動する
var excel = WScript.CreateObject("Excel.Application");
excel.Visible = true;
// 1ファイルずつPDFに変換する
for (var i = 0; i < WScript.Arguments.Count(); i++) {
exportPDF(WScript.Arguments.Item(i));
}
excel.Quit();
WScript.echo("変換終了!");
// ExcelファイルをPDFに変換する
function exportPDF(fname) {
var fs = new
ActiveXObject("Scripting.FileSystemObject");
// フォルダパスを取得
var folderPath = fs.GetFile(WScript.ScriptFullName).ParentFolder
// ファイル名を取得
var fileName = fs.GetBaseName(fname);
// 出力先、ファイル名を設定
var output = folderPath + '/' + fileName;
// Excelを開き、PDFに変換する
var book = excel.Workbooks.Open(fname);
var sheets = book.worksheets;
// シート番号に0を入力した場合、最後のシート番号を代入
sheetNumber = (sheetNumber == 0) ? sheets.Count : sheetNumber;
// シート名を取得
var sheetName = sheets(sheetNumber).name;
// PDFファイル名を設定
var pdfFileName = output + '_'+ sheetName;
sheets(sheetNumber).ExportAsFixedFormat(0,pdfFileName ,0,true,false);
book.Close();
}
シート番号を指定する
2行目の「var sheetNumber = 1;」にPDF変換したいシート番号を入れてください
最後のシートを変換したい場合は、0を入力します
②シート名を指定してPDF変換(完全一致)
指定したシート名のみをPDF変換します
完全一致のため、それ以外のシートはスルーされます
例)テストのシートのみPDF変換
以下のコードを貼り付け
// PDF変換したいシート名(完全一致)
var sheetName = "テスト";
// ドラッグ&ドロップされたファイルを確認する
if (WScript.Arguments.Count() == 0) {
WScript.echo("ファイルがありません。");
WScript.Quit();
}
// Excelを起動する
var excel = WScript.CreateObject("Excel.Application");
excel.Visible = true;
// 1ファイルずつPDFに変換する
for (var i = 0; i < WScript.Arguments.Count(); i++) {
exportPDF(WScript.Arguments.Item(i));
}
excel.Quit();
WScript.echo("変換終了!");
// ExcelファイルをPDFに変換する
function exportPDF(fname) {
var fs = new
ActiveXObject("Scripting.FileSystemObject");
// フォルダパスを取得
var folderPath = fs.GetFile(WScript.ScriptFullName).ParentFolder
// ファイル名を取得
var fileName = fs.GetBaseName(fname);
// 出力先、ファイル名を設定
var output = folderPath + '/' + fileName;
// Excelを開き、PDFに変換する
var book = excel.Workbooks.Open(fname);
var sheets = book.worksheets;
// シート名を検索する
var sheetNumber = 0;
for (var i = 1; i <= sheets .Count; i++) {
// 一致した場合、シート番号を設定する
if (sheets(i).Name == sheetName){
sheetNumber = i;
break;
}
}
// シート番号が0以外の場合、PDFに変換する
if (sheetNumber !== 0) {
// PDFファイル名を設定
var pdfFileName = output + '_'+ sheetName;
sheets(sheetNumber).ExportAsFixedFormat(0,pdfFileName ,0,true,false);
}
book.Close();
}
シート名を指定する
2行目の「var sheetName = ”テスト”;」にPDF変換したいシート名を入力してください
③シート名を指定してPDF変換(部分一致)
指定した文字を含むシート名のみをPDF変換します
例)「提出用」がつくシート名のみPDF変換
以下のコードを貼り付け
// PDF変換したいシート名(部分一致)
var searchText = "提出用";
// ドラッグ&ドロップされたファイルを確認する
if (WScript.Arguments.Count() == 0) {
WScript.echo("ファイルがありません。");
WScript.Quit();
}
// Excelを起動する
var excel = WScript.CreateObject("Excel.Application");
excel.Visible = true;
// 1ファイルずつPDFに変換する
for (var i = 0; i < WScript.Arguments.Count(); i++) {
exportPDF(WScript.Arguments.Item(i));
}
excel.Quit();
WScript.echo("変換終了!");
// ExcelファイルをPDFに変換する
function exportPDF(fname) {
var fs = new
ActiveXObject("Scripting.FileSystemObject");
// フォルダパスを取得
var folderPath = fs.GetFile(WScript.ScriptFullName).ParentFolder
// ファイル名を取得
var fileName = fs.GetBaseName(fname);
// 出力先、ファイル名を設定
var output = folderPath + '/' + fileName;
// Excelを開き、PDFに変換する
var book = excel.Workbooks.Open(fname);
var sheets = book.worksheets;
// シート名を検索する
for (var i = 1; i <= sheets .Count; i++) {
// 部分一致するシート名がある場合
if (sheets(i).Name.indexOf(searchText) >= 0 ) {
// シート名を取得
var sheetName = sheets(i).name;
// PDFファイル名を設定
var pdfFileName = output + '_'+ sheetName;
// PDFに変換する
sheets(i).ExportAsFixedFormat(0,pdfFileName ,0,true,false);
}
}
book.Close();
}
検索文字を指定する
2行目の「var searchText = ”提出用”;」に検索文字を入力してください
まとめ
いかがでしたか。
以前、ExcelファイルをPDFに変換する方法は紹介した時に、
シートごとにPDFを作成したいと何件かリクエストがありまして作ってみました!
その他にこんなことをしてほしい!などリクエストがあればインスタのDMやコメントにお願いします