C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: .NETでExcelの値のみをコピー


(過去ログ 46 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■24586 / inTopicNo.1)  .NETでExcelの値のみをコピー
  
□投稿者/ 開発者駆け出し (27回)-(2008/09/04(Thu) 16:12:50)

分類:[.NET 全般] 

お世話になります。

環境
OS:XPProSP2
ソフト:VS.NET2003

.NETでエクセルのセルの値を値のみ他のセルにコピーをしたいのですが、
なぜか書式まで(具体的に言うとセルの色)コピーされてしまいます。
値のみをコピーする根本的な方法が違うのでしょうか?
以下ソースの抜粋です。

    ' コピーRangeを決定する
    With cExcelSheet
        cCopyRange = .Range(.Cells(iCopyRow, 1), .Cells(iCopyRow, 10))
    End With
    cCopyRange.Copy()

    ' 貼り付けRangeを決定する
    With cExcelSheet
      cPastRange = .Range(.Cells(iPastRow, 1), .Cells(iPastRow, 10))
    End With
    ' 貼り付けをする
    cPastRange.PasteSpecial(XlPasteType.xlPasteValues, XlPasteSpecialOperation.xlPasteSpecialOperationNone)

貼り付ける際に計算式が値にはなっているのですが。
ご教示お願いします。

引用返信 編集キー/
■24587 / inTopicNo.2)  Re[1]: .NETでExcelの値のみをコピー
□投稿者/ みきぬ (66回)-(2008/09/04(Thu) 16:22:38)
xlPasteValues じゃなくて xlPasteFormulas だってExcelマクロたんが言ってました。

引用返信 編集キー/
■24590 / inTopicNo.3)  Re[2]: .NETでExcelの値のみをコピー
□投稿者/ 開発者駆け出し (29回)-(2008/09/04(Thu) 16:46:14)
No24587 (みきぬ さん) に返信
> xlPasteValues じゃなくて xlPasteFormulas だってExcelマクロたんが言ってました。
>
みきぬ様返信ありがとう御座います。

おっしゃる通り、xlPasteFormulasに変えて実行してみたのですが、セルに貼り付けられたのが
図(?)みたいなものになってしまい、セルの色もコピーされてしまいました。
バージョンの違いでしょうか?

※私のエクセルのバージョンを記載し忘れました。すみません。
エクセルは2003を使っています。
引用返信 編集キー/
■24595 / inTopicNo.4)  Re[3]: .NETでExcelの値のみをコピー
□投稿者/ みきぬ (68回)-(2008/09/04(Thu) 17:27:25)
No24590 (開発者駆け出し さん) に返信
> おっしゃる通り、xlPasteFormulasに変えて実行してみたのですが、セルに貼り付けられたのが
> 図(?)みたいなものになってしまい、セルの色もコピーされてしまいました。
> バージョンの違いでしょうか?
>
> ※私のエクセルのバージョンを記載し忘れました。すみません。
> エクセルは2003を使っています。
バージョンは私のと同じですねぇ。

「貼り付け先の書式にあわせる」でコピーする操作で作られたマクロが
Selection.PasteSpecial(Paste:=xlPasteFormulas, Operation:=xlNone,SkipBlanks:=False, Transpose:=False)
ですし、

ここの説明を読んでも、ほかにいじるような項目はないしなぁ…うーん。
http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.range.pastespecial(VS.80).aspx
引用返信 編集キー/
■24597 / inTopicNo.5)  Re[4]: .NETでExcelの値のみをコピー
□投稿者/ ロック (87回)-(2008/09/04(Thu) 17:35:14)
2008/09/04(Thu) 17:36:56 編集(投稿者)

2000な自分のところだと
xlValuesになっています。

追記
値としては、-4163ですね
2003だとあるのかな?
引用返信 編集キー/
■24599 / inTopicNo.6)  Re[5]: .NETでExcelの値のみをコピー
□投稿者/ みきぬ (69回)-(2008/09/04(Thu) 18:00:52)
2008/09/04(Thu) 18:02:52 編集(投稿者)
No24597 (ロック さん) に返信
> 2008/09/04(Thu) 17:36:56 編集(投稿者)
>
> 2000な自分のところだと
> xlValuesになっています。
>
ExcelVBAの解説サイトでは、
・xlPasteValues ... 値のみ
・xlPasteFormulas ... 数式のみ
って書いてますので、xlPasteValues でよいみたいですね。
Excelマクロとして実行してみましたが、少なくとも背景色や文字の色までコピーされることはありませんでした。

ということでほかのところに原因がありそうですが、私にはわかりません m(_ _)m

-----
あ、xlPasteValues というのが実際にどんな値が渡してるかってのはありますね。
該当なし → デフォルトのAllで実行されたって可能性はあるかも。
引用返信 編集キー/
■24602 / inTopicNo.7)  Re[6]: .NETでExcelの値のみをコピー
□投稿者/ オガシン (75回)-(2008/09/04(Thu) 18:21:01)
Excelネタがあると必ずあがることですが
提示されているソースだとプロセスが開放されないと思います。

じゃんぬさんのサイト
http://jeanne.wankuma.com/
にのってますのでご確認を。
引用返信 編集キー/
■24618 / inTopicNo.8)  Re[7]: .NETでExcelの値のみをコピー
□投稿者/ 開発者駆け出し (30回)-(2008/09/05(Fri) 08:31:58)
みきぬ様、ロック様、オガシン様返信ありがとうございます。

>貼り付け先の書式にあわせる」でコピーする操作で作られたマクロが
>Selection.PasteSpecial(Paste:=xlPasteFormulas, >Operation:=xlNone,SkipBlanks:=False, Transpose:=False)
>ですし、
私はエクセルマクロで調べてみたところxlPasteValuesとなっていました。

>値としては、-4163ですね
>2003だとあるのかな?
xlPasteValuesは-4163となっています。

>Excelネタがあると必ずあがることですが
>提示されているソースだとプロセスが開放されないと思います。
提示したソースは抜粋です。
じゃんぬさんのサイトを参考にして変数の開放はしてあります。
問題のあるソースのみを抜粋したもので。
ご心配ありがとう御座います。

とりあえず、もう少し自分で調べてみて、最悪ペーストした後に変えることにします。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -