PC便利術

メモ帳だけ!シートごとにExcelをPDFに一括変換

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やコメントにお願いします