あぁ、言ってしまいましたか…(^_^;)
やっぱり「君は僕の太陽暦だ!」さんはいい人ですね。
私は何も言わなければ「鎌倉」さんがこの掲示板を最初から見直すかな?
とかすかな希望を抱いておりました。
結局のところ、せっかく教えた情報にすら目を通していなかったという事ですね…
ちょっとだけ、こつ書きましょうか。
これは我流なので、賛否両論かもしれませんが。。。
何かWeb等でサンプルが見つかったとして、その後、僕が
踏む手順(手順というかやること)
1.まず、サンプルをそのまま動かす。
2.コンパイルは通るはずだし、動きもするはず。
3.なぜ、コンパイルが通るかわからないなら、適当に
めぼしをつけて、何行か消してみる。
例えば、消したことによってコンパイルが通らなく
なったんであれば、それのお陰でコンパイルは通っていたわけなので、
そのことについてHelp、Web、書籍などで調べる。
それでも分らなければ、こういうところで質問するのもよいかも
しれません。
4.なぜ動いたか解析する。ステップ実行してみたり、適当に
改造してみたりして、動きと処理を把握する。
5.動きと処理、つまり何故動いたかが把握できれば、後は
自分のプロジェクトに処理をいれるのはそう難しくないでしょう。
デバッグのときなどで分らないことが合った時によくやる方法ですが、
小さいプロジェクトを作って怪しいところだけを動かして試してみる
というのは割とよくやる手法ですよね?!
だいたいこんな感じかな。恐らく鎌倉さんは検索にしろなんにしろコツがつかめてないんじゃ
ないでしょうか?コツさえつかんでいればいままでの情報で十分やりたいことは
達成できてると思いますよ!!
・・・さん、ごめんさない。
言っちゃいました・・・。
でも、あのサンプルすごいですね。感動しました。
> でも、あのサンプルすごいですね。感動しました。
同感・・・
私、基本的に技法的なことは何も知らないもんでぶつかった時にはネットの中をさまよい歩い
てる方が多いんです。いつも必要に迫られて調べまくるもので・・・
今回のサンプルもそのうちきっと役に立つ日が来るでしょう。
あっ、近々使わなければならないような気がする・・・
うん、その時は質問すればいいか!(フクロダタキニアイソウ(・・;))
>あのサンプル
どれですか?
私の質問を1つくらい教えてください。
> でも、あのサンプルすごいですね。感動しました。
私もあれを見つけた感動しました。
>私、基本的に技法的なことは何も知らないもんでぶつかった時にはネットの中をさまよい歩い
てる方が多いんです。いつも必要に迫られて調べまくるもので・・・
私も同じです。知らない事が多すぎるのでいつも懸命に調べまくってます。(^^ゞ
>どれですか?
>私の質問を1つくらい教えてください。
こうなると冗談で言っているか、もしくは場を荒らす為にワザと怒らせようとしているとしか思
えない…
鎌倉さん:
>どれですか?
試してみたらいかがですか?たかが3択でしょ?
「1番目はこういう手順でビルドしたけどこういうエラーが出た、こうやって対処を試み
たが事態はこうなった。2番目は...」というような「ご自身の努力」があなたの発言から
は読みとれないのです。「膨大になるので割愛」というのなら、どこかwebサイトにでも
まとめて「私の努力の跡はここを参照」という感じにしたっていいじゃないですか。
結局最初から続いていた質問者の「教えて」という姿勢と回答者の「自助努力を」という
姿勢は最後までかみ合わないようですね。
鎌倉さん
こういう言葉をご存知ですか?
「おなかのすいた子どもに、一匹の魚を与えれば、その日だけの食べ物にしかなりません。しか
し、魚のとり方を教えれば、一生の食べ物をあげたことになります。」
説教じみて聞こえるでしょうが、今あなたの質問に
FAQ的に答えを示すことは可能です。
しかしそれでは、一匹の魚をあたえたことにしかなりません。
色々苦労して、覚えたことじゃないと印象が薄くてすぐ忘れてしまい、
あなたのスキルになりません。
だから、みなさん、直接答えをいわず、ヒントやコツなどをしめしているのですよ!
その点を「意地悪」とは勘違いなされないでください。
この件に関しては、先に挙げられているサンプルに答えあるのですから、それは
ご自分で探されてください。そして解析して、技術を習得してください。
たくさん悩んで、苦労して目的を達成して、来年とかもし後輩が同じようなことで
悩んでいたら教えれるくらい理解を深めましょうよ!
大変勉強になりました。
52件は長かったけど。
それと、エディターxyzzyていいですよね。
忙しくて見ない間に、すごい数の質疑応答ですね
#import ですが、エラーがでたそうですが、こちらではコンパイルは通ります。
なぜなんでしょうね?
ダイアログベースのMFCで作ったそうなので、試してください。
#import は使いません。
ダイアログベースのMFCの新しいプロジェクトをつくる。
今までのはプロジェクトが変になっているかも、必ず新しいプロジェクトで、
そのとき、オートメーションにチェックを入れる。
クラスウィザードのクラスの追加タイプライブラリからで、
C:\Program Files\Microsoft Office\Office\EXCEL9.OLB を選んで
_Application
Range
_Worksheet
Workbooks
Worksheets
など必要なものを選ぶ。
この時点ではコンパイルは通りますか?
もしコンパイルエラーがでるなら、インストールし直しかもです。
僕もあまり詳しくないので、はんと、不完全なコードで、不必要なもの、足りないもの
あると思います。
動きも実際変ですし。参考になれば、幸いです。
#include excel9.h
void CExcel9Dlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してくださ
い
CoInitialize(NULL);
CLSID clsid;
::CLSIDFromProgID(LExcel.Application.9, &clsid);
_Application m_App;
LPDISPATCH pDisp;
LPUNKNOWN pUnk;
if(::GetActiveObject(clsid, NULL, &pUnk) == S_OK) {
VERIFY(pUnk->QueryInterface(IID_IDispatch,(void**) &pDisp)
== S_OK);
m_App.AttachDispatch(pDisp);
pUnk->Release();
} else {
if(!m_App.CreateDispatch(Excel.Application.9)) {
MessageBox(Excel 2000 Error !!);
}
}
ShellExecute (NULL, open, test.xls, NULL, NULL, SW_SHOW) ;
LPDISPATCH pRange, pWorkbooks;
Workbooks m_Workbooks;
Worksheets m_Worksheets;
_Worksheet m_Worksheet;
Range m_Range;
CWnd* pWnd = CWnd::FindWindow(XLMAIN, NULL);
if (pWnd != NULL) {
pWnd->ShowWindow(SW_SHOWNORMAL);
pWnd->UpdateWindow();
}
m_App.SetSheetsInNewWorkbook(1);
VERIFY(pWorkbooks = m_App.GetWorkbooks());
m_Workbooks.AttachDispatch(pWorkbooks);
LPDISPATCH pWorksheets = m_App.GetWorksheets();
ASSERT(pWorksheets != NULL);
m_Worksheets.AttachDispatch(pWorksheets);
LPDISPATCH pWorksheet = m_Worksheets.GetItem(COleVariant((short) 1));
m_Worksheet.AttachDispatch(pWorksheet);
VERIFY(pRange = m_Worksheet.GetRange(COleVariant(a1), COleVariant
(a1)));
m_Range.AttachDispatch(pRange);
m_Range.SetValue(COleVariant(testA1));
m_Range.ReleaseDispatch();
m_Worksheet.ReleaseDispatch();
m_Worksheets.ReleaseDispatch();
m_Workbooks.ReleaseDispatch();
m_App.ReleaseDispatch();
CoUninitialize();
}
woodです、
エクセルへの書き込みに興味を今まで持っていなく、MFCでODBC
プログラミングのほんの初歩を学習するために、2年くらい費やして
ようやくシングルドキュメント・シングルビューから
シングルドキュメント・複数ビューの利用が出来るようになったばかり
で、これ以外SDKなど全然わからず、意識なくどこかでSDKを使用
していて、本業が忙しいとVC/C++の学習を怠けながらやっている
わたしのような話について行けそうに無い、私の勝手な評価です
わかりやすそうに見えるけど目的とするMFCにあっていない
http://www.kumei.ne.jp/c_lang/
わかりにくい
http://www.jsdlab.co.jp/~kei/studio/excel/index.html
http://www1.neweb.ne.jp/wa/junneko/tec/tec001.html
http://www1.plala.or.jp/knambo/vc/usemore.html#EXCEL
目的にあってなさそう
http://www.kumei.ne.jp/c_lang/setvc.htm
MFCで作ろうとしているのにSDK関連みて理解可能なのでよしょうか?
目的達成できそう
http://www.net24.ne.jp/~kenji/p_ddeexcel/ddeexcel.html
---------------------------------------------------------------------
私の勝手な疑問
一番最初に書かれてある
>MFCダイアログベースに作られたボタンを押すと
鎌倉さんは、皆さんにMFCを主体としたプログラミングをしたいのか
SDK主体としたプログラミングしたいのか
ここまでで強調したことありますか
皆さんのお答えは、MFC,SDKの回答が両方混在していてどの技法を
中心に質問されているのかわかりません
何でもかんでも意見取り込んで理解可能な方なのでしょうか?
参考になる意見、参考にならない意見にはっきり回答すべきではないでしょうか
・・・さんの 2002/11/05(火) 17:02:32
の回答におもいっきり回答したところから、SDKでのプログラミングしたいのかな?
に皆さんを思わせていませんか?
鎌倉さんの 2002/11/07(木) 11:47:53
>すごい!出来ました!有難うございます!
>直ちに解析してみることにします!
これはMFCプログラミングみての話でしょう
鎌倉 2002/11/07(木) 14:14:06
なんでわざわざSDK質問しなきゃいけないの?
こんなんで皆さんを混乱に招いていませんか?
的は何?、エクセルを自分のAPから起動して、起動したアプリがエクセルの
1.新規作成したブックの、特定シートの、特定セルへ値を書き込みたいのか?
2.既存のXLSを呼び出す制御をさせ特定シートの、特定セルへ値を書き込みたいの
か?
どちらなのでしょうか
一番最初に書かれてある
>file_name = C:\\test.xls ;
これはエクセルを起動すると言うより、拡張子XLSを持ったファイルデータが関連付
けされている、アプリ(エクセル)が起動されるように設定できた程度ではないのです
か
アプリとしてのエクセルはEXEのはずですが、私の疑問は待ちがっているのでしょう
か
というより、MFCしかやったこと無いので
SDKって良く分かってません。
質問が混乱を招いてしまったことはすまなかったのですが
Woodさんの言うとおり私はMFCで教えてほしいと最初に言っています。
MFCとSDKの違いをよく把握しておらず、すべての回答が
MFCでも導入可能なものと考えてしまい、反応してしまっていたので
誤解を招いたのかもしれません。
とりあえず今日1日掛けて、MFCのエクセル操作を学びたいと思っています。
SDKの文法はMFCでは流用不可能ということが分かっただけで1つ進歩です。
仕切りなおし!
最終的な目標を書きます。(今回の質問はセルに書き込む方法についてした)
分かりにくかったら指摘してください。
ベースはVC++6.0にてMFCを使用したプログラミングになります。
新規プロジェクト作成でダイアログベースにてボタンを1つ作成します。
ボタンを押すと指定フォルダにエクセルシートを新規作成して
セルに値を代入します。
またセルによっては、フォント、背景色、文字色変更なども行います。
出来るかどうかはわかりませんが、私の持っている動作イメージとしては
エクセルクラスを取得して(仮にCexcelとする)下のようなメンバー関数を扱えるとベス
トであると思っています。
Cexcel.SetTextCell(row,col,100) //列=ROW、行=COLに100が代入される。
Cexcel.ChengeBackColor(row,col,ox000000) //列=ROW、行=COLの背景色が変更
Cexcel.ChengeMojiColor(row,col,ox000000) //列=ROW、行=COLの文字色が変更
またエクセルは起動せずに書き込めたりすると非常にベストです。
【そこで質問】
・Cexcelのようなクラスはあるのでしょうか?
・あるとしたら呼び出し方はどうすればいいのでしょうか?
・それはエクセルを起動せずにアクセスできるものなのでしょうか?
・関数の一覧はどのヘルプに載っているのでしょうか?
こんなところです。
///////////////////////////////////////////////////
上の目的を達成するために
ためになったのは(ズックさんのアドバイスはこれから試しますが・・・)
>目的達成できそう
> http://www.net24.ne.jp/~kenji/p_ddeexcel/ddeexcel.html
のHPだけです。
仕組みはかなり難解でしたが予め用意してあった関数を使い
セルの値を代入できるようになりました。
> SDKの文法はMFCでは流用不可能ということが分かっただけで1つ進歩です。
この件に関しては分かったと終わらせない方がのちのちのためだと思いますよ。(このスレッ
ドで続けろと言う意味ではないですけど。)不可能じゃないですもん。MFCから直接API呼ぶ事あ
りますよね?頭に::つけて。
MFCはAPIのただのラッパークラスなんですから。
以下はwoodさんに
> わかりやすそうに見えるけど目的とするMFCにあっていない
> http://www.kumei.ne.jp/c_lang/
確かにそうですね。でも分かりやすく事実ビルドしてみりゃ問題なく通り動作する訳ですから
後は肝心となるDDE関係の関数の使い方を解析すればいいだけでは?このときの問題になったの
はご本人がコンパイルエラーになったと言ってそれを解消する事ができず投げ出してしまった事
ではないのですか?『エラーが消せないからエラーが出ない他ののサンプルをくれ。』じゃ誰し
もうんざりするのではないですか?大体にしてご本人が150章だと言っていたので私も気づかず
直接150章を見に行ってしまいましたが後で見たら151章にちゃんとダイアログベースでセルの
位置とデータを入力すればエクセルにデータを書き込めると言うそのままの例があったではない
ですか。(SDKですけどね)
> わかりにくい
> http://www.jsdlab.co.jp/~kei/studio/excel/index.html
> http://www1.neweb.ne.jp/wa/junneko/tec/tec001.html
> http://www1.plala.or.jp/knambo/vc/usemore.html#EXCEL
そんな事は答えてくださっている皆さんにしてみれば相手のスキルレベルなんて把握出来よう
筈もありませんからしかたのない事でしょう。分かりにくかろうと自分では全く検索等で調べる
事ができなかった状態のところに一筋の光の様に参考例を示していただいているのですからそれ
を知ろうとする努力をするべきではありませんか?はっきりいって『分かりにくい』は失礼でし
ょうね。まぁ本人が言ってる訳ではないですからいいですけど。
流れを見ていると単純に『ダウンロードしてビルドしてエラーワーニングも何も出ずそのまま
実行出来るサンプルをくれ。』と言っているようにしか聞こえませんけど違いますか。そのよう
なサンプルがあったとして果たしてそれは”参考”にしているのでしょうか?ただ動いてくれさ
えすれば後はそれを流用するだけで動作を理解し追求する事などするはずもないような様子に取
れますが。
> 目的にあってなさそう
> http://www.kumei.ne.jp/c_lang/setvc.htm
これは本人がエラーでぶつかってその時に示されたリンクですよね?目的にあっていないと言
うのはなんの意味ですか?
> MFCで作ろうとしているのにSDK関連みて理解可能なのでよしょうか?
MFCで作っているからといってSDKを理解出来ないかどうかなど誰が判断出来るのですか?そ
れよりもMFCで探したけれども参考例としてこれはいいなと思ったら示してあげるのは迷惑な事
なのですか?いちいち質問者の方に『あなたはSDKを理解出来ますか?』と聞いてから解答して
あげなければいけないのですか?
ずいぶんと過保護なご意見ですね。
PS: 私自身、始めた時は右も左もわからずにMFCから始めてしまいました。後からSDKという形
式があることを知りなるほどと思ったものです。でも新ためて見てみればそんなに理解不能と思
えるようなものではないと私は感じたのですが?実にその時参考にさせてもらったのが『猫で
も・・・』のページでした。それ以降は途中まで読んでSDKの基本路線は分かったのでやめてしま
いましたが。(三日坊主)
ただ思えば私はそれこそ切羽詰まった場合はネットなどで近道をするのではなく専門書を自腹
を切って買いに走っていたという事です。事実ここで解答してくださっている皆さんは大半はそ
うして自分で学んでスキルアップをして来た方々ではないかと思います。そういった方々がする
アドバイスというのは直接の解答ではなくどのようにすれば解答にたどりつけるかというヒント
を与えてくれるだけだと思います。
なぜなら自分がたどってきた道筋を質問者にもたどって欲しいからと思っているからに違いな
いでしょう。
その方が実際身につくと信じているし本人の為だと思っているからです。
ただいじめられていると思うようじゃただの被害妄想ですよ。
ずっくさんのソース動きました!
有難うございます。
ただ、ものすごく難しいんですね・・・
これ、何をしようとしているのか教えてもらえませんか?
もう少し簡単にならないでしょうか!