- PR -

[ IIS6.0 ] ASP が使用する DLL 内でクリップボードが使えない

1
投稿者投稿内容
こばさん
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 147
投稿日時: 2006-10-24 17:51
 Windows 2000 で稼動していた ASP (.NETじゃない)を Windows 2003 へ移行するにあたり、問題にぶつかりました。

 SQL Server のデータベースからレコードを取得し、Excelシート(雛形あり)にデータを貼り付ける部分を VB6 でコーディングした DLL で実現させています。
 大量行を高速に処理するため、クリップボードを介して Excelシート にデータを貼り付けていたのですが、Windows 2000 では問題なく使えていたものが Windows 2003 では正常に動作しません。

 色々と調べてみた結果、Clipboard.Clear や Clipboard.SetText など、クリップボードを操作する部分で、「Can't open Clipboard」というエラーが出ていることまで掴めました。
 どうやら、クリップボードが使えない様子

 もともとクリップボードはマルチタスク環境下で使うべきものでないのは確かなのですが、雛形のある Excel へ大量データを貼り付けるには好都合だったので、全く動作しない(単体でも)というのは辛いところ

 何か回避策など御存知の方、おられますか?
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-26 00:36
引用:

 SQL Server のデータベースからレコードを取得し、Excelシート(雛形あり)にデータを貼り付ける部分を VB6 でコーディングした DLL で実現させています。
 大量行を高速に処理するため、クリップボードを介して Excelシート にデータを貼り付けていたのですが、Windows 2000 では問題なく使えていたものが Windows 2003 では正常に動作しません。

 色々と調べてみた結果、Clipboard.Clear や Clipboard.SetText など、クリップボードを操作する部分で、「Can't open Clipboard」というエラーが出ていることまで掴めました。
 どうやら、クリップボードが使えない様子

 もともとクリップボードはマルチタスク環境下で使うべきものでないのは確かなのですが、雛形のある Excel へ大量データを貼り付けるには好都合だったので、全く動作しない(単体でも)というのは辛いところ



というか、高速化のために clipbord ってのがわかりません。
おそらく ADO を利用していると思われますので、CopyFromRecordSet とかじゃ
なにかまずいんでしょうかね?

他にも Variant 配列にぶち込んでおいて、Value property にぶち込むとか
いろいろ方法はあるでしょう。
こばさん
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 147
投稿日時: 2006-10-26 04:01
 ありがとうございます。
 Clipboard ですと、Clipboard.SetText(Recordset.GetString(〜) と Worksheet.Cells(x,x).Paste くらいで済んだもので(笑)

 CopyFromRecordSet は私の開発機(XP+ADO2.8+Excel2003環境)では 430 が出るもので・・・
(国内外でネット検索しても、430の回避が出来ていない、バグと割り切ってる人、が多かった) 

 Variant型云々ってのは、一旦2次元配列にぶちこんで・・・ということですよね
 ちょっとコード量が増えそうですが、今まで Win2000 でトラブルなく動作していたほうがラッキーだったと考えるしかなさそうですかね

[ メッセージ編集済み 編集者: こばさん 編集日時 2006-10-26 04:02 ]
1

スキルアップ/キャリアアップ(JOB@IT)