• ベストアンサー

powershellでエクセルをコピペをしたい。

宜しくお願い致します。 powershellを使い、エクセルのBook甲をBook乙にコピペしたいと考えています。 例えば、Book甲には、 A列:名前 B列:性別 となっており、性別が「男」のみをBook乙にコピーできればと思っています。 フィルターを使いましたが、非可視の部分もペーストされてしまう(この場合、「女」もペーストされ非可視で見えていない状態になっている。)ので、できれば、「男」のみをペーストできればと思っております。 お分かりになる方がいらっしゃいましたら、是非、ご教示ください。 宜しくお願い致します。

  • Fujjy
  • お礼率77% (203/262)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

PowerShellでExcelを直接扱う方法は複数あるのですが、一番簡単にやる方法は PowerShellギャラリーで公開されているコマンドレットをダウンロードして使用する方法かと思います。 ダウンロードサイトは https://www.powershellgallery.com/packages/ImportExcel/5.4.0 このwebページから管理者モードで、install-moduleに書かれているインストール命令でダウンロード できます。 次の例は、Member.xlsxブックの1つ目のシートにデータがあり、項目名として名前と性別が 付いているという簡単な例を想定した場合の例です。 性別が男子のみを抽出しNewMember.xlsxを作成しています。 実行例  $data=Import-Excel C:\samplel\Member.xlsx  $data.Where{$_.性別 -eq "男子"}|Export-Excel C:\Sample\NewMember.xlsx 以上が実行例です。 コピーとペーストではなく、シートを読んでシートを作成している形になります。 なお、このコマンドレットはxlsxのみ対応しxlsは対応していないようです。 また、現在のバージョンでは使ってみますと大きなデータの場合は遅いというのが実感ですが 数千件程度であれば即座に終わると思います。 趣味ではなく、業務で使うのであれば、xoBlosのような製品が世の中に出ているので 有償でもそういうの考えても良いかもしれません。指定が簡単ですし 行が100万列が20というファイル(ブック)が数十個あって、一度に処理しても 数十秒で処理が終了してしまうので。 たまたま、私は使っているもので。

Fujjy
質問者

お礼

大変、勉強になりました。ありがとうござます。色々、試したいと思います。

その他の回答 (1)

  • NuboChan
  • ベストアンサー率47% (743/1579)
回答No.1

なんでブック(*.xlsx)をPowershellで他のブックにコピーする必要があるのでしょうか? マクロやVBAで処理できればそちらの方が簡単に思えるのですが?

Fujjy
質問者

お礼

回答になっていません。「なんで」などという理由はお伝え出来かねます。

関連するQ&A

  • Excel2013-フィルターをかけた状態でコピペ

    フィルターをかけた可視セル上でのみ作業したいとき、コピー&ペーストの方法はありますか? エクセルでフィルターをかけて、1行目・5行目・10行目が見えています。 A列の上から3行をドラックしてコピーすると可視セル(A1・A5・A10)のみ選択されますが、それをB列1行目に貼り付けると、可視セル上の2行目・3行目(実際の5行目・10行目)から消えてしまいます。 フィルターを外すとB2・B3がA5・A10の内容に上書きされています。 可視セル上でのドラッグ+コピーは出来るので、 可視セル上でそれを”ペースト”出来ると便利なのですが、方法はありますか?

  • エクセルで、可視セルだけにコピペをしたい。

    宜しくお願い致します。 例えですが・・・ A列にはランダムで色んな果物の名前 B列には果物の色 C列はすべて空欄 (1)A列をオートフィルタで「りんご」を抽出 (当然ですが、抽出された行は飛び飛び状態です。) (2)抽出したデータのみ、C列に「おいしい」と入力する。 このようにいたってシンプルな作業なのですが、 抽出した状態で、C列の一番上のセルに「おいしい」と入力し、 それをCtrl+Cでコピーし、Ctrl+↓キーで一番下まで貼り付け をしたら、C列の可視セル以外のところにも貼り付けられてしまったのです。こういうやり方は間違ってるのでしょうか。 ためしに、新規にexcelを開いて、同じようにコピペしたら 可視セルのみ貼り付けされてたんです。 状況によっては、上記のやり方だと可視セル以外も貼り付けられてしまうことがあるのでしょうか。 分かりにくくて申し訳ありませんが、宜しくお願い致します。 あるんでしょうか。

  • エクセルのオートフィルターで可視セルのコピペ

    オートフィルターで選択表示されている可視セルをコピーして、他の列にペーストしたところ、行がずれてペーストされてしまいました。 たとえば、B14にあるデータをコピーして そのままD14にコピーしたいのですが、どのようにすれば可能でしょうか? オフィス2003の環境です。

  • エクセルへのコピペ

    コピーアンドペーストについて分かりません。 某ホームページをエクセルにコピペしようとするとうまく貼り付けすることが出来ません。 そのままエクセルにコピペしたいのですが、何が原因でそのまま貼り付け出来ないのでしょうか??

  • PowershellでExcelへデータを書き込む

    データを別途クリップボードにコピーしPowershellでExcelに書き込むことは下記の方法で出来ますが *コピー元の水平タブ区切りデータ 果物 りんご みかん バナナ 個数 12 25 15 *ペーストで書き込むるpsコード <# Excelを操作する為の宣言#> $excel = New-Object -ComObject Excel.Application <# 起動直後は非表示(最小化ではない)になっているので表示する#> $excel.Visible = $true <#新規ブックを作成する#> $book = $excel.Workbooks.Add() <#新規ブックを作成する#> $sheet = $excel.Worksheets.Item(1) <#B列にペーストする#> $sheet.Range("B2").PasteSpecial($exlpasteType::xlPasteValues) <#メモリを解放#> $excel = $null [GC]::Collect() これに対しデータのコピー等の作業を省き直接配列を使い処理できないかと思い下記のコードの方法まで至りました *配列で書き込むるpsコード <# Excelを操作する為の宣言#> $excel = New-Object -ComObject Excel.Application <# 起動直後は非表示(最小化ではない)になっているので表示する#> $excel.Visible = $true <#新規ブックを作成する#> $book = $excel.Workbooks.Add() <# シートを取得する#> $sheet = $excel.Worksheets.Item(1) <# セルへ配列で書き込み#> $arw = New-Object "object[,]" 2, 4 <# 書き込み用配列定義 2行4列#> $arw[0, 0] = "果物"; $arw[0, 1] = "りんご"; $arw[0, 2] = "みかん"; $arw[0, 3] = "バナナ" $arw[1, 0] = "個数"; $arw[1, 1] = 12; $arw[1, 2] = 25; $arw[1, 3] = 15 $sheet.Range("B2:E3") = $arw <# B2:E3 にセット#> <#メモリを解放#> $excel = $null [GC]::Collect() コピペで使うデータはsqlの集計結果をそのまま利用していますが、このコードの配列に書き直すにはちょっと手間が掛かる等の理由でもっとシンプル方法がないかと思い質問いたしました。 何か良い方法があればお教えください。

  • excelのコピペで困っています

    excelのコピペで困っています 行や列を非表示にして表示されているところだけをコピー したいのですが、どうしても非表示になっているところもコピーされてしまいます。 非表示にしたところをコピーしないようにするには どうやったらいいですか?

  • エクセルのコピペが、途中で途切れる

    エクセル、恐らく2010年版?を利用していて、、 フィルタを使って関数計算した列を右側にコピペしようとしたら、 途中までしかコピペができません、なぜでしょうか?

  • Excel 異なるワークブック同士でのコピペ

    Excelで、複数にわたるワークブック中のデータを、新しいワークブックにコピー&ペーストし、新たなる表を作成するのですが、時折ペーストを間違え、表結果に誤りが出てしまいます。 確実にデータをコピーしていく方法はありますか? 「参照」という方法がコピペよりも確実だというのですが、これはどのようにすればいいのでしょうか? 教えてください。

  • エクセルでコピペの場合重複データがわからない

    こんにちは。 エクセルについて質問です。 コピーして一行の列に文字をずらーっと ペーストしていくのですが、 重複した文字は削除したいのです。 =MATCH(A65534,A:A,0)=ROW() や =COUNTIF(A:A,A1)=1 を試してみているのですが、 自分で入力したときにしかチェックされません。 コピペの場合、そのまま同じ文字でもペーストされてしまいます。 これらの関数も、先ほどようやく サイトで調べて試したくらいのほぼ初心者なのですが、 コピペの場合は、重複文字チェックは不可能でしょうか。 それとも何らかの方法があるのでしょうか。 ちなみに、フィルタで重複文字を抽出するやり方がありますが、 あとからデータが追加されるため、この方法は適しません。 どなたかわかるかたがいらっしゃいましたら よろしくお願いいたします。

  • エクセルのセルへのコピペについて

    エクセル2013を最近買って使い始めました。メールの文章の一部をコピーしてエクセルのセルにペーストしているのですが、長い文章だとなぜかペーストしたときに1つのセルではなく、ペーストしたいセルとその下のセルに2行にわたって入力されてしまいます。それで、いちいち下のセルの中の文章を切り取って目的のセルの中にコピペしなければなりません。エクセルを普段使うことはほとんどないので、どうすればいいのか分かりません。どうやったら1つのセルの中にペーストした文章が収まるようになるでしょうか。

専門家に質問してみよう