PowerShell2.0 : COM 経由で Excel のグラフを作成した後、PDFとしてエクスポートする

  create_chart.ps1



Excel 2007 で PDF に出力できます

関連する記事

VBScript : Excel2007 のグラフ作成
VBScript : 既存の Excel を PDF に変換する ( Excel 2007 )


このコードで作成した PDF
Ps_excel_pdf



  
<#
	オブジェクト作成
	Excel を表示状態にする
#>
$ExcelApp = New-Object -ComObject "Excel.Application"

<#
	警告を出さないようにする
#>
$ExcelApp.DisplayAlerts = $false
#$ExcelApp.Visible = $true

<#
	ブック追加
	追加したブックを取得
	※ 何故か Add でメンパーの一覧が表示されるので Out-Null
#>
$ExcelApp.Workbooks.Add() | Out-Null
$ExcelBook = $ExcelApp.Workbooks.Item( $ExcelApp.Workbooks.Count )

<#
	シートの処理
	Worksheet を選択 ( 最初のシート )
#>
$MySheet = $ExcelBook.Sheets.Item(1)

#シートへグラフ用データをセット
$MySheet.Range("A1").Value2 = ""
$MySheet.Range("B1").Value2 = "Q1"
$MySheet.Range("C1").Value2 = "Q2"
$MySheet.Range("D1").Value2 = "Q3"
$MySheet.Range("E1").Value2 = "Q4"

$MySheet.Range("A2").Value2 = "日本"
$MySheet.Range("B2").Value2 = "1.5"
$MySheet.Range("C2").Value2 = "2"
$MySheet.Range("D2").Value2 = "1.5"
$MySheet.Range("E2").Value2 = "2.5"

$MySheet.Range("A3").Value2 = "アメリカ"
$MySheet.Range("B3").Value2 = "2"
$MySheet.Range("C3").Value2 = "1.75"
$MySheet.Range("D3").Value2 = "2"
$MySheet.Range("E3").Value2 = "2"
 
$MySheet.Range("A4").Value2 = "ヨーロッパ"
$MySheet.Range("B4").Value2 = "2.25"
$MySheet.Range("C4").Value2 = "2"
$MySheet.Range("D4").Value2 = "2.5"
$MySheet.Range("E4").Value2 = "2"

$MySheet.Range("A5").Value2 = "アジア"
$MySheet.Range("B5").Value2 = "2.5"
$MySheet.Range("C5").Value2 = "2.5"
$MySheet.Range("D5").Value2 = "2"
$MySheet.Range("E5").Value2 = "2.75"



#データの範囲
$dataRange = $MySheet.Range("A1:E5")

$chartObjects = $MySheet.ChartObjects()
# 座標は、グラフのエリア
$newChartObject = $chartObjects.Add(0, 100, 300, 300)

$MyChart = $newChartObject.Chart
$MyChart.ChartType = 54
$MyChart.SetSourceData( $dataRange )
$ExcelBook.ExportAsFixedFormat( 0, "C:\ps\excel\chart.pdf" ) 

$BookPath = "C:\ps\excel\chart.xls"
try {
	$v = ($ExcelApp.Version).substring(0,2)
	$n = [int] $v;

	if ( $n -ge 12 ) {
		"Office2007以上"
		$ExcelBook.SaveAs( $BookPath, 56 )
	}
	else {
		$ExcelBook.SaveAs( $BookPath )
	}
}
catch {
	# 一番最新のエラー内容
	$Error[0]
}

# Excel をアプリケーションとして終了
$ExcelApp.Quit()
  

※ <# 〜 #> は範囲コメントです。
※ PowerShell の文字列は System.String なので、メソッドがそのまま使えます
※ VBScript と Range オブジェクトの扱いが違いますが、動作させる為に記述を変更しています。

関連する Microsoft ドキュメント

VBScript コマンドから Windows PowerShell コマンドへの変換












  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ