SQLの窓 イラストAC フリー素材

2019年08月21日

IE11 : JScript : Excel.Application で既存の Book を開いてその中のテンプレートシートをコピーして名前を付けて保存する

IE11 の画面上の情報を決められた書式を使用して転送して新たにブックを作成する処理です。

印刷は、Excel を Windows から開いて実行します。

印刷内容は随時変更して自由度の高い業務作業を実現する事ができます。
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport">
<meta charset="utf-8">
<title>ブックを開いてシートをコピーして使用する</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">

<link rel="stylesheet" href="https://lightbox.sakura.ne.jp/demo/two-section.css">

<script>
// ****************************
// Excel.Application 用
// ****************************
var Excel = null;
var Book = null;
var Worksheet = null;
var WshShell = new ActiveXObject("WScript.Shell");

$(function(){

	$("#action").on("click", function(){
	
		if ( Excel == null ) {
			// ****************************
			// 基本オブジェクトを作成
			// ****************************
			Excel = new ActiveXObject("Excel.Application");
		}

		// ****************************
		// 表示( テストの時は表示 )
		// ****************************
		Excel.Visible = true;

		// ****************************
		// 警告を出さないようにする
		// 使用すると上書きの警告が
		// 出なくなります
		// ****************************
		Excel.DisplayAlerts = false;

		// ****************************
		// 対象
		// ****************************
		var filePath = "c:\\temp\\test.xlsx";
		var filePath2 = "c:\\temp\\test2.xlsx";

		// ****************************
		// ブックを開く
		// ****************************
		Book = Excel.Workbooks.Open(filePath);

		// ****************************
		// シート名で直前にコピー
		// ****************************
		Book.Sheets("新しい情報").Copy( Book.Sheets("新しい情報") );
		Book.ActiveSheet.Name = "コピーしたシート";
		Book.Worksheets("コピーしたシート").Select();		// 無くても OK
		Worksheet = Book.ActiveSheet;

		// ****************************
		// シート内のセルをコピー
		// ****************************
	    Worksheet.Range("A1:K5").Select();
	    Excel.Selection.Copy();
	    Worksheet.Range("A6").Select();
	    Excel.ActiveSheet.Paste();

		try {
			Book.SaveAs(filePath2);
			Book.Close();
		}
		catch (e) {
			alert("Book.Save でエラーが発生しました");

			console.dir(e);
			ExcelQuit();
			return;
		}

		ExcelQuit();

		// ****************************
		// 終了確認
		// ****************************
		alert("処理が終了しました \n\n 保存したブックを開きます");

		// ****************************
		// Windows からの Excel 起動
		// ****************************
		WshShell.Run( "RunDLL32.EXE shell32.dll,ShellExec_RunDLL " + filePath2 );

	});

});

// ****************************
// 終了処理
// ****************************
function ExcelQuit() {
	Excel.Quit();
	Excel = null;
	idTmr = window.setTimeout("Cleanup();",1);
}
function Cleanup() {
	CollectGarbage();
}
</script>
</head>
<body>
	<div id="head">
		<input id="action" type="button" value="ブックを開いて処理を実行" class="btn btn-primary">
	</div>

	<div id="extend">
		<table class="table">
		<tbody id="tbl">
			<tr><th>実行手順概要</th><th>テンプレートシートを使って新しいシートを作成して、新しいブックとして結果を保存</th></tr>
			
			<tr><td>1</td><td>開く</td></tr>
			<tr><td>2</td><td>テンプレートシート名で直前にコピー</td></tr>
			<tr><td>3</td><td>新しいシート名セット</td></tr>
			<tr><td>4</td><td>シート内のセルをクリップボードでコピー</td></tr>
			<tr><td>5</td><td>名前を付けて保存</td></tr>

		</tbody>
		</table>

	</div>

</body>
</html>





【IEの最新記事】
posted by at 2019-08-21 16:16 | IE | このブログの読者になる | 更新情報をチェックする