- - PR -
EXCELSheetno行列の入れ替えて貼り付け
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-10-20 17:31
いつも参考にさせていただいてます。
現在ASP.NETからEXCELを出力する処理を開発中です。 やりたいことは ExcelFORMAT1のデータを(A1,E5)までコピーして 別のシート("ExcelFORMAT2")のA3,E8に貼り付けたいのですが 行列を入れ替えて貼り付けたいのです。 VBAでマクロを作成してそれを参考にしようと考えたのですが ことごとく "インデックスが無効です"というエラーで落ちてしまいます。 以下がソースです ------------------------------------------------------------ With objExcelApp .Sheet("ExcelFORMAT1").select() .Range(.Cells(1, 1), .Cells(5, 5)).Select() .Selection.Copy() .Sheets("ExcelFORMAT2").Range("A3").Select() .Sheets("ExcelFORMAT2").Range.pasteTranspose = True book.Save() End With ------------------------------------------------------------ どなたか分かる方がいらっしゃればご教授願います。 |
|
投稿日時: 2003-10-21 14:27
PasteSpecialメソッドがどこにも使われていないのですが・・・
また最初のSelect変です。Sheet→Sheets それとExcelオブジェクトの階層構造などに注意してください。 特にRangeオブジェクトはApplication(Excel)が上位オブジェクトとして指定されていると ActiveWorksheetが対象になります。 OLEで操作するならきちんと指定した方がいいと思います。 さらに逐次実行してどこでエラーが起きているか調べてみてください。 仕様が分からないので勘で直せば With objExcelApp .Sheets("ExcelFORMAT1").Range("A1:E5").Copy() .Sheets("ExcelFORMAT2").Range("A3").PasteSpecial(X,Y,Z,True) End With こんな感じです。XYZは適切なプロパティを指定してください。 Saveは省いてます。 |
|
投稿日時: 2003-10-21 15:07
mitoさん返答ありがとうございました。
アドバイスしていただいたことを参考にして PasteSpecialメソッドに PasteSpecial(Transpose:=True) 上記のような処理を入れたところちゃんと行列の入れ替え貼り付けが出来ました。 それ以外にもご指摘ありがとうございました。 これから開発していく上で良い参考になりました。 |
1