2016-04-18 14 views
1

如何使用PowerShell更改Excel圖表X軸的軸類型?使用PowerShell更改Excel圖表的軸類型

要做到這一點使用Excel手動:

  • 打開的工作簿在Excel
  • 選擇X軸圖表
  • 選擇下的 「軸類型」, 「軸選項」
  • 配置 「文本軸」選項

更新:它是XLSX格式。我應該澄清:問題在於我繪製的數據集在x軸上使用日期,Excel智能地填補了空白(所以如果我在數據集中有5月5日和5月7日,Excel也會在5月6日繪製) 。交換到文本似乎可以解決Excel應用程序中的這個問題。我希望像我的其他數據分析和製圖一樣自動化。

+1

什麼格式,XLS或XLSX? – Taosique

+0

@Taosique請參閱問題更新。謝謝。 – Federer

回答

6

你在這裏:

# Launch Excel: 
$app = New-Object -comobject Excel.Application 

# Open a Workbook: 
$app.Workbooks.Open("C:\Users\admin\Desktop\Workbook.xlsx") 

# Activate the chart you need (note: you don't need full path with filename now): 
$app.Workbooks("Workbook.xlsx").Sheets("Sheet1").ChartObjects("Chart 1").Activate() 

# Change the category type of axis. Axes(1) means category axis. Possible values: 
# xlCategoryScale = 2 
# xlTimeScale = 3 
# xlAutomaticScale = -4105 
$app.ActiveChart.Axes(1).CategoryType = 2 

# Save & close the workbook 
$app.Workbooks("Workbook.xlsx").Close($True) 

您現在可以返回到第2步,打開另一個工作簿,並重復這些動作。 完成後,關閉Excel應用程序並清理:

$app.Quit() 
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($app) 
Remove-Variable app 
+0

謝謝你的答案和釋放ComObject的最後一點。我懷疑你會說經驗,但我可以問你使用了哪些文件,例如找出TimeScale值或Axes(1)的含義? – Federer

+3

我使用了這些引用:https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlcategorytype.aspx https://msdn.microsoft.com/en-us/library/microsoft .office.interop.excel.xlaxistype.aspx。爲了查找值,我使用了Excel VBA編輯器:加入了斷點併爲'xlCategory'添加了一個等號爲'1'的監視器。此外,它還是一種很好的方式,可以通過錄制宏來查找所需的VBA代碼,在Excel中手動執行操作,然後查看它生成的代碼。 – Taosique

+0

謝謝你 - 非常有幫助! – Federer