Excel上のコンボボックスへの値の追加 – プログラミング – Home

Excel上のコンボボックスへの値の追...
 
通知
すべてクリア

[解決済] Excel上のコンボボックスへの値の追加


七夜
 七夜
(@七夜)
ゲスト
結合: 22年前
投稿: 8
Topic starter  

VC++ 6.0、SDK、Excel2000で開発をしています。

VC++からExcelワークシート上のコンボボックスへデータを追加しようとしています。
VBAでは、コンボボックスの名称がComboBox1だとすれば、

 ComboBox1.AddItem XXX

で値の追加ができます。VC++で同じことをやろうとしたのですが、Excel::OleObjectPtrのメソッド
にAddItemがありません。

1. コンボボックスを参照する変数の型はExcel::OleObjectPtrで本当によいのでしょうか
2. 変数の型がExcel::OleObjectPtrならば、VBAのAddItemメソッドに相当するメソッドはなんで
  しょうか
3. そもそもやり方が全然違うという場合、どのような方法でデータの追加をすればよいのでしょうか

以上、教えていただきたく。よろしくお願いします。


引用未解決
トピックタグ
七夜
 七夜
(@七夜)
ゲスト
結合: 22年前
投稿: 8
Topic starter  

補足です。

ExcelとVC++プログラムとの接続は以下のようにしています。

// COMのimport for Excel2000
#import C:\PROGRAM FILES\MICROSOFT OFFICE2000\OFFICE\MSO9.DLL \
no_namespace rename(DocumentProperties, DocumentPropertiesXL)
#import C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\VBA\VBA6\VBE6EXT.OLB \
no_namespace
#import C:\PROGRAM FILES\MICROSOFT OFFICE2000\OFFICE\EXCEL9.OLB \
rename(DialogBox, DialogBoxXL) \
rename(RGB, RBGXL) \
rename(DocumentProperties, DocumentPropertiesXL) \
no_dual_interfaces \
exclude(IFont,IPicture)

// Excelポインタ
static Excel::_ApplicationPtr pExcel ;
static Excel::_WorksheetPtr pWorksheet ;

// COM初期化
if(S_OK!=CoInitialize(NULL))
{
rtn=false ;
}
if(rtn)
{
// Excel接続
pExcel.GetActiveObject(Excel.Application) ;
if(NULL==pExcel)
{
rtn=false ;
}
else
{
pWorksheet = pExcel->ActiveSheet ;
// シート保護解除 001-000
pWorksheet->Unprotect() ;
// プロジェクト名のコンボボックス取得
Excel::_OLEObjectPtr pComboBox ;
pComboBox=pWorksheet->OLEObjects(ComboBox4) ;
// コンボボックスに値を追加
long listnum=cPrjListFile.GetListNum() ;
for(int n=0;n<listnum;n++)
{
string prj_name=cPrjListFile.GetPrjName(n) ;
pComboBox ->??? ; <-----ここがわからない
}
// シートを保護状態に戻す
pWorksheet->Protect() ;

// スマートポインタ解放
pComboBox=NULL ;
pWorksheet=NULL ;
}
// スマートポインタ解放
pExcel =NULL ;
// COM解放
CoUninitialize() ;
}

同様の方法でセルへの値の入出力およびセル色変更等はできてるのですが。Excelワークシート上の
コンボボックスの操作はこれでいいのでしょうか?


返信引用
七夜
 七夜
(@七夜)
ゲスト
結合: 22年前
投稿: 8
Topic starter  

経過及び結果です。

コンボボックスを受けるオブジェクトの型はExcel::_OleObjectPtr、
コンボボックスへ値を追加するメソッドを持つ型はExcel::IControlFormatPtr
ということまではOLE/COMオブジェクトビューワ等でわかったのですが、前者を後者に
変換する方法が判りませんでした。VBのヘルプによるとExcel::_OleObjectPtrは読み取り
専用ということなので、追加はできないのかもしれません。

で、結局どうしたかというと、期限もせまっていたのでExcelのVBAで組んでしまいました(^^;
コンボボックスに追加する値をFTP経由でとってこなければいけなかったので、慣れてるVC++
で組もうとしてたのですが。VBAでもFTP使えたのですね(^^;

どうもお騒がせしました&考えてくれた方、ありがとうございました。


返信引用
七夜
 七夜
(@七夜)
ゲスト
結合: 22年前
投稿: 8
Topic starter  

完了、と(^^;


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました