質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

0回答

1779閲覧

PowerShell:Excel内のデータを読み取り、折れ線グラフの自動作成。

ponpon10

総合スコア1

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2022/12/12 15:06

前提

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/12/12 16:20

閉じてるからじゃないんですか?
ccc-

2022/12/13 07:18

$headerStr = "8m,9m,10m,11m," → $headerStr = "8m,9m,10m,11m" 11mの右のカンマを消すと動作しますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問