--------------------- エクセルについて ------------------

 

はじまり。はじまり〜。

 

ん〜どうしよっかな?答えるべきか、答えざるべきか、ソレが問題だ。

<な〜に悩んだふりしてんだか。そんなのオメーのキャラじゃないだろ!>

 

ソレもそうだな。じゃやめとこ。

<どーしてそうなるんだよ?>

だって、私のキャラじゃないから。

 

<だから、理由をを聞いてんじゃ!>

だって、私はCOM抜きの方針だから。

 

<どこにそんな事書いてあんの!>

トップページの方針・お約束にしっかりと。

 

<うっ。確かに。だがオレは認めんぞ!こんな逃げるようなやり方。>

ご安心あれ。これには抜け道が作ってあって、強い要望か、基本的という部分で対応しています。

 

ただし、私が積極的にCOM、DLL、他言語を使用する事はなく、あくまで参考程度です。

Linersとは、初心者に解かりやすいそうゆうキャラなんです。

 

<そーだったんだ。>

気付けよ!

 

で今回はモロCOM系だし、IEとEXCELで話がややこしくなっているようで・・・

私の出る幕などないや。と思っていたのですが、ツボにはまっている様子。

 

中身を見ると、単にシート内のコピペ。こんなんEXCELの関数で一発ジャンと思ったが、

そこはソレ、UWSCでやりたいのよね。

 

UWSCでも、私なら2行もあればこんな風に・・・

 

Excel = GETACTIVEOLEOBJ("Excel.Application")

Excel.ActiveSheet.range("B1:C1").value = Excel.ActiveSheet.range("A1").value

 

まあ、私などよりCOMに精通した諸先輩方に任せておけばいいやと考え、前回はパス。

でも今回は、前回の残骸があちらこちらに、ふむ。少し整理してあげるかな。

 

でも、いきなりコノ2行じゃね。それに、前回の件もあるし、あとで、IEに値を渡すことも考えられる。

ココは、シンプルに、そして前回つながりで、いりやさんスタイルで、;をつけて、変数を同じにして、

 

Excel = GETACTIVEOLEOBJ("Excel.Application");

val1 = Excel.ActiveSheet.range("A1").value;

Excel.ActiveSheet.range("B1:C1").value = val1;

 

ココからが本題。Linersは考え方言うんだなコレが。

でも今回はCOMなので詳しい説明は、その手の本,WEBを参考にしてくださいね。

 

簡単に説明すると、COMを使うには、そのアプリ内にあるオブジェクトの雛型をコピーして

型を作ります。(インスタンス生成)

その型の実際に使う要素(メンバ,メソッド)を選んで、実際に使えるオブジェクトを作ります。(オブジェクト生成)

 

オブジェクトとは、データ+関数のことで、データの振る舞いを知っている関数などと呼ばれます。

投稿では単に変数と言ってますが、実際にはオブジェクト。どちらかと言うと関数に近いですね。

 

ですから、

Excel = GETACTIVEOLEOBJ("Excel.Application");は

Excelって言う名前で、既に起動中のExcel.Applicationオブジェクトの型を使うよ〜

 

Excel.ActiveSheet.range("B1:C1").value = val1;は

Excel(オブジェクト)の.アクティブなシートの.範囲が"B1:C1"の.値にval1変数の値を入れるよ〜となります。

 

(オブジェクトを作って値を渡している。直接代入しているわけではない。)

 

・・・かなり無理やり表現していて、正確さに欠けるな。

まあ雰囲気さえ解かってもらえれば、それでいいのだが。

 

・・・それにしてもLiners様って様をつけられるほどでは・・・

どちらかと言うと、教えると言うより、一緒に考えている方ですから。

 

Liners様。私は様って呼んでいいんですよね。>

ああ。天使か。勝手に呼んでクレ。

 

Liners様ったら、もう!>

 

<オレは、ずえーったいオマエとしか呼ばんからな!>

もう、ダブルで来るなよ。ダブルで。

 

 

・・・ あの〜。 こっちは、アンタラ自体を呼んでませんから!!

 

 

 

おしまい。

 

 

=======================================================================

 

提供は: COMの扱いにCOM ATTEるLiners様。 でした。(ダジャレにもなっとらん。)

 

=======================================================================

 

======================== 以下実際の掲示板 ======================== 

 

 

エクセルについて うさぎ 【2004/10/03 01:04:17】[返信][削除]

 

またおせわになります。エクセルの値のコピーについてなんですが、同一ブック内でのコピーがうまくいきません。どうかご指南をお願いします。

A1値を同じシートのB1とC1にコピーしたいのですが。

 

Excel = GETACTIVEOLEOBJ("Excel.Application");

Sheet = Excel.ActiveWorkbook.ActiveSheet;

 

val1 = Sheet.range("A1").value;

SENDSTR(0, val1);

 

Excel = GETACTIVEOLEOBJ("Excel.Application");

Sheet = Excel.ActiveWorkbook.ActiveSheet;

 

Excel.ActiveSheet.range("A2")//●ここがわかりません

 

KBD(VK_CTRL,DOWN,10)

KBD(VK_V,CLICK,10)

KBD(VK_CTRL,UP,10)

 

同じシート内ならcopy(A1),paste(B2)のような指定はできませんでしょうか?どうぞ、よろしくお願いします。

 

--------------------------------------------------------------------------------

 

  Re:エクセルについて Liners 【2004/10/03 02:40:28】HomePage[削除]

 

// うさぎさん、同じシート内ならクリップボードにコピーする必要も無く、当然、貼付ける必要もありません。

// またcopy(A1),paste(B2)のような指定も考える必要がありません。

// これらは単に便利な変数と見ることが出来ます。ですから、普通に値を代入するだけです。

// しかもrangeを使っていますので、Execlの範囲指定の書式がそのまま使えます。

// 最小限必要なスクリプトは、次の3行のみです。参考になさって下さい。

 

Excel = GETACTIVEOLEOBJ("Excel.Application");

val1 = Excel.ActiveSheet.range("A1").value;

Excel.ActiveSheet.range("B1:C1").value = val1; //●こんなに簡素♪ 説明の方が長い・・・

 

 

--------------------------------------------------------------------------------

 

  Re:エクセルについて うさぎ 【2004/10/03 15:00:09】[削除]

 

Liners様、早速のご回答をありがとうございます。おかげさまでうまく出来ました。難しく考え過ぎていたようで・・・これからいろいろ試してみます。

Liners様のホームページも参考にさせて頂きます!!

ありがとうございました。