

powershellを使ってExcelから指定した列をコピーしたいです。

例えばですが、  
Excel1のA列、D列、F列だけを選んで、Excel2のA列、B列、C列に貼り付けるにはどうすればよいでしょうか？

よろしくお願い致します。


CC BY-SA 3.0
2017-04-04T11:40:47.053
33767
2018-04-13T08:30:43.287
2017-04-04T14:31:27.400
3054
21361
question
powershell
Powershellを使ってExcelの列をコピーしたいです。


PowerShellからはCOMや.NETのオブジェクトを参照することができますので、実行するマシンにExcelが導入されている場合は

[code]

    $app = New-Object -ComObject Excel.Application
    
    // 実際のExcel処理
    $app.DisplayAlerts = $false
    ...
    
[/code]

のようにExcelのCOMインターフェイスを操作するのが良いでしょう。

上記が選択できない場合はNPOIのアセンブリ―を同梱したうえで

[code]

    // 参照ライブラリをすべて読み込む
    [System.Reflection.Assembly]::LoadFrom("NPOI.OpenXml4Net.dll");
    [System.Reflection.Assembly]::LoadFrom("NPOI.OpenXmlFormats.dll");
    [System.Reflection.Assembly]::LoadFrom("ICSharpCode.SharpZipLib.dll");
    [System.Reflection.Assembly]::LoadFrom("NPOI.dll");
    [System.Reflection.Assembly]::LoadFrom("NPOI.OOXML.dll");
    
    $wb = New-Object NPOI.XSSF.UserModel.XSSFWorkbook("excel1.xlsx");
    ...
    
[/code]

と使用することも可能です。

それぞれのライブラリで要件を実現する方法についてはPowerShellとはほとんど関係がありませんので、VBAやC#でのサンプルなどを調べてみてください。


CC BY-SA 3.0
2017-04-04T17:07:53.687
33772
2017-04-04T17:07:53.687
5750
33767
answer


Excelに関する情報は頻繁に質問にあがるようなので、最新の状況を共有します。  
COM からのエクセル操作がどの言語においても苦しいように、PowerShellにおいても直接触るのは大変といわざるを得ません。

現在、PowerShellコミュニティおいては、ImportExcelというモジュールがよく利用されています。  
<https://github.com/dfinke/ImportExcel>

詳しい利用方法はリポジトリをご確認いただきたいのですが、PowerShell
5.0以降であればモジュールのインストールもコマンド1つで可能なので、試してみるといいと思います。

[code]

    Install-Module ImportExcel -scope CurrentUser
    
[/code]

Redditを始めとして利用方法のサンプルがあります。

<https://www.reddit.com/r/PowerShell/comments/51h101/basic_questions_about_using_importexcel/>


CC BY-SA 3.0
2018-04-13T08:30:43.287
43206
2018-04-13T08:30:43.287
28142
33767
answer