[solved] Excel的Range存成圖檔

使用PowerShell,可以將Excel的一個Range複製後,存成圖檔嗎(PNG or JPG)?

@yc.tang 你好,

步驟會如下 :

  1. 複製範圍為圖片
  2. 新增圖表至工作頁
  3. 貼上圖片至圖表
  4. 輸出圖表至指定路徑
# 啟動 EXCEL 軟體
$excel = New-Object -comobject Excel.Application
$excel.DisplayAlerts = $false; # do not alert
$excel.Visible = $true # make it visible (just to check what is happening)
# open file
$FilePath = "C:\Users\Geng Xian Lin\Desktop\10月設備銷售資料明細表.xlsx"
$workbook = $excel.Workbooks.Open($FilePath) # 根據路徑打開 EXCEL 檔案(活頁簿)
$ws1 = $workbook.Worksheets.Item(1) # 取得該檔案的第一個工作表
$ws_1 = $workbook.Worksheets.Item("工作表1") # 取得該檔案 名為 "工作表1" 的工作表

#1.複製範圍為圖片,並貼上到 A1,取得圖片變數
$ws_1.Range("A1:H14").CopyPicture()
$r1 = $ws_1.Range("A1")
$ws_1.Paste($r1)
$idx = $ws_1.shapes.count # 取得新增的圖片為第幾個 shape
$pic = $ws_1.shapes($idx) # 宣告該圖片為一個變數
#2. 新增圖表至工作頁的 0, 0 位置,長寬為 圖片的長寬
$ch = $ws_1.ChartObjects().Add(0, 0, $pic.Width, $pic.Height)
#3. 複製圖片並貼上圖片至圖表
$pic.Copy()
$ch.Chart.Paste()
#4. 輸出圖片至指定路徑
$tt = $ch.Chart
$tt.Export("C:\Users\Geng Xian Lin\Desktop\test.png", "PNG")

可以試試看,再麻煩回報結果!

1 Like

剛剛測試後,已經可以將Excel的Range存成PNG檔案.
謝謝!

1 Like