前提
Ecel内のデータを配列に格納や変数に格納し、それを折れ線グラフを作成したいと思っています。
実現したいこと
ここに実現したいことを箇条書きで書いてください。
- Ecel内のデータを配列に格納や変数に格納し、それを折れ線グラフを作成したい。下記サイトを参考にプログラミングをしたが、下記エラーが発生した。一通りの流れを見たいので、一旦折れ線グラフを作成したい。エラーが出ている箇所のエラーの意味、該当箇所のソースの意味が分かりましたら教えていただけないでしょうか。
参考サイト
https://saborin.hatenablog.com/entry/2017/10/08/165305
発生している問題・エラーメッセージ
ConvertFrom-Csv : パラメーター 'Header の引数を確認できません。引数が null または空です。null または空でない引数を指定
して、コマンドを再度実行してください。
発生場所 行:15 文字:61
- ... csvObj = Get-Content $csvFName | ConvertFrom-Csv -Header $headerSplit
-
~~~~~~~~~~~~
- CategoryInfo : InvalidData: (:) [ConvertFrom-Csv]、ParameterBindingValidationException
- FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ConvertFromCsvCommand
該当のソースコード
csvからExcelでグラフを生成するPowerShell
########## 値を変更する変数 ##########
Excelファイル名
$fileName = "aaa.xlsx"
Excelシート名
$sheetName = "Test"
情報CSVファイル名
$csvFName = "Test.csv"
######################################
ファイルのパスを取得
$scriptPF = $MyInvocation.MyCommand.Path
$scriptPath = "C:\Users\User\Documents\PowerShell_Study\エクセルフォルダ開く"
$flExcelPF = $scriptPath + "" + $fileName
Excelファイルが存在する場合に処理
if (Test-Path $flExcelPF) {
Excelのオープン
$objExcelAp = New-Object -ComObject Excel.Application
$objExcelAp.Visible = $true
$objExcelBook = $objExcelAp.Workbooks.Open($flExcelPF)
$objExcelSheet = $objExcelBook.Worksheets.Item($sheetName)
データを取り込み、編集
CSVファイル読み込み
$headerStr = "8m,9m,10m,11m,"
$headerSplit = $headerStr -split ","
$csvObj = Get-Content $csvFName | ConvertFrom-Csv -Header $headerSplit #ここでエラーとなる。意味・原因、修正方法を教えてほしい。
初期値、先頭行設定
$nCount = 1
$objExcelSheet.Cells.Item(2, 1) = "No."
$objExcelSheet.Cells.Item(2, 2) = "Score"
CSV1件ごとに処理
$csvObj | ForEach-Object {
## データ編集 $objExcelSheet.Cells.Item(2 + $nCount, 1) = $nCount $objExcelSheet.Cells.Item(2 + $nCount, 2) = $_.ddf03 $nCount++
}
データをグラフ化
$strRange = "A2:B" + (1 + $nCount)
$dataRange = $objExcelSheet.Range($strRange)
$chartObjects = $objExcelSheet.ChartObjects()
$newChartObject = $chartObjects.Add(120, 10, 700, 300)
$MyChart = $newChartObject.Chart
$MyChart.ChartType = 4
$MyChart.SetSourceData($dataRange)
$MySeries = $MyChart.SeriesCollection(1)
$MySeries.Delete() | Out-Null
ファイルの保存、閉じてExcelの終了
$objExcelBook.Save()
$objExcelAp.Quit()
プロセスの解放
.{
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($MyChart)
$MyChart = $null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($newChartObject)
$newChartObject = $null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($chartObjects)
$chartObjects = $null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcelSheet)
$objExcelSheet = $null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcelBook)
$objExcelBook = $null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcelAp)
$objExcelAp = $null
} | Out-Null
ガベージコレクトの明示実行
}
試したこと
参考サイト
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー