前提・実現したいこと
Intersect等の戻り値をRangeで受け取りたいです。
Excel VBA で例えば
vba
1intersect(ActiveSheet.columns(1),ActiveSheet.usedrange).select
のような操作をpwshで行いたいとき
単純に考えて
powershell
1function _Get_Excel(){ 2#既存プロセスのExcelを取得する 3 [outputtype([System.Runtime.InteropServices.Marshal])] 4 $Excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject('Excel.Application') 5 return $Excel 6} 7$app = _Get_Excel 8$app.Intersect($app.ActiveSheet.Columns(1),$app.ActiveSheet.UsedRange).select()
のような感じになると思うのですが
これを実行しても動きません....
何事かと思って戻り値を見てみるとセルを表すcomオブジェクトの配列...?
のような感じになってしまうのですが
Rangeとして受け取ることは出来ないのでしょうか?
発生している問題
Intersect等の戻り値が配列になってしまう
該当のソースコード
「前提・実現したいこと」に記載のコード
試したこと
ダメもとで$()
等で括ってみたけれど案の定 効果なし..
補足情報(FW/ツールのバージョンなど)
Win10 Home & pro
powershell Ver 5.1 以上
ベストアンサー決定後の追記
あとからなぜ困ってたか分かりました。
アクティブセル範囲(Range)を返す関数を作成していたのですが
その返り値がcellオブジェクトの配列になってしまい困っていました。
ですが、imihito様の 今回の回答の「パイプラインに流していませんか?」の一言のおかげで
配列を関数の戻り値で返すときと同じだと気付いたので
return $Range
→return ,$Range
とすることで
こちらも 無事に解決できました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。