フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: Delphi7 へ Excel_TLB.pas インポート
スペース西
メンバー
投稿数: 6
Delphi7 へ Excel_TLB.pas インポート
on: 2017/11/27 10:27 Mon

Delphi7 の「ActiveX取込み」で「Excel_TLB.pas」を取り込もうとしています。

[エラー] Excel_TLB.pas(5761): 未定義の識別子 : 'MsoThemeColorIndex'
[エラー] Excel_TLB.pas(5978): 未定義の識別子 : 'Crop'
[エラー] Excel_TLB.pas(6040): 未定義の識別子 : 'MsoShadowStyle'
[エラー] Excel_TLB.pas(6194): 未定義の識別子 : 'MsoPresetCamera'
~~~ 後略:数十行 ~~~

例えば、'MsoThemeColorIndex' の場合、
type 宣言を書けばOKのようです。
しかし、あまりに作業量が多いので、
これらのタイプ宣言などのソースをご存知ないでしょうか?
もし判れば教えて下さい。

Mr.XRAY
メンバー
投稿数: 192
Re: Delphi7 へ Excel_TLB.pas インポート
on: 2017/11/27 18:44 Mon

MsoThemeColorIndex 等,プリフィックスが Mso というのは,Micorsoft Office 関係の定数名です.
Microsoft Office xxx.xx Object Library にあるのではないかと思います.
昔の記憶なので,それ以上は分かりません.

スペース西
メンバー
投稿数: 6
Re: Delphi7 へ Excel_TLB.pas インポート
on: 2017/11/27 19:03 Mon

早速のご回答、ありがとうございます。

>MsoThemeColorIndex 等,プリフィックスが Mso というのは,Micorsoft Office 関係の定数名です.
>Microsoft Office xxx.xx Object Library にあるのではないかと思います.

はい、そうだろうと推測しています。
その「定義ファイルの具体的なありか(取得方法)」を探しています。

PS
 古い人なので、現在も Delphi7 のまま開発を継続しています。
 流石に今回は古さの悪影響が出たようです。
 「Mr.XRAY」さんのご活躍を横目で見ながら、「plExcelEx」をダウンロードし勉強させて頂いております。
 フォーラム等と距離を置いていますが「Mr.XRAYさん」や「DEKOさん」のDelphi愛に、常々尊敬・感心しています。

Mr.XRAY
メンバー
投稿数: 192
Re: Delphi7 へ Excel_TLB.pas インポート
on: 2017/11/27 19:33 Mon

>その「定義ファイルの具体的なありか(取得方法)」を探しています。
あっ,説明が悪かったようです.

Microsoft Office xxx.xx Object Library

はタイプライブラリで取り込むタイプライブラリの名前です.
[項目] となっている部分のことです.
つまり,このタイプライブラリを先に取り込む必要があるということです.

Mr.XRAY
メンバー
投稿数: 192
Re: Delphi7 へ Excel_TLB.pas インポート
on: 2017/11/27 19:49 Mon

ゴメンナさい.
今 Delphi 10.2 Tokyo Starter で実際にやってみました.
Office_TLB.pas を作成して uses に追加しても未定義のエラーが発生するんですね.
スミマせんでした.
う~む.昔 (Delphi 7 + Office 2000) はこれでインストールできたのに.Office のバージョンによるのかな.

スペース西
メンバー
投稿数: 6
Re: Delphi7 へ Excel_TLB.pas インポート
on: 2017/11/28 10:19 Tue

Mr.XRAY さん、こんにちは。スペース西です。

大変お世話になっております。

>はタイプライブラリで取り込むタイプライブラリの名前です.
>[項目] となっている部分のことです.
>つまり,このタイプライブラリを先に取り込む必要があるということです.

ヒントをありがとうございます。
そっくりは見当たらないので、似たような物を手あたり次第取り込んでみました。
しかし、残念ながら必要な定義は含まれていないようです。

>Office_TLB.pas を作成して uses に追加しても未定義のエラーが発生するんですね.

はい、この中にも定義が含まれていないようです。
私も昔は「ActivX」の取込み作業のみで使えていたので???混乱状態です。

目的は、汎用ソフトなので
・Excel から操作するサーバーがある
・なるべく Excel を表に出さず操作したい

幸い「Mr.XRAY」さんのHPに多様な操作方法がしっかりと説明してあります。
順番に試みて、最適な方法を模索しようと考えています。

大変お手数をお掛けしました、ありがとうございました m(__)m

Mr.XRAY
メンバー
投稿数: 192
Re: Delphi7 へ Excel_TLB.pas インポート
on: 2017/11/28 11:25 Tue

Microsoft Office 関係のタイプライブラリはマイクロソフトが提供しています.
つまり,今回の現象は避けようがないですね.
回避策というわけではないのですが,
コンポーネントとして登録はしないで,あるいはユニットファイルだけを作成して利用するという方法が考えられます.
あるいは CreateOleObject で生成してエクセルを操作するかですね.

CreateOleObject でエクセルのオブジェクトを操作するにしても,実行時に TExcelApplication 等を生成するにしても,
定数名等が使えないと不便なので,ユニットは作成しておいた方が便利かも知れません.

スペース西
メンバー
投稿数: 6
Re: Delphi7 へ Excel_TLB.pas インポート
on: 2017/11/28 11:48 Tue

Mr.XRAY さん、こんにちは。スペース西です。

丁寧なご回答、ありがとうございます。

>コンポーネントとして登録はしないで,あるいはユニットファイルだけを作成して利用するという方法が考えられます.
>あるいは CreateOleObject で生成してエクセルを操作するかですね.

はい、参考にさせて頂き、作業を継続します。

こんなものを使う必要がありそうで、
ServerStart(const CallbackObject: IRTDUpdateEvent): Integer; safecall;

IRTDUpdateEvent = interface(IDispatch)
['{A43788C1-D91B-11D3-8F39-00C04F3651B8}']
procedure UpdateNotify; safecall;
function Get_HeartbeatInterval: Integer; safecall;
procedure Set_HeartbeatInterval(plRetVal: Integer); safecall;
procedure Disconnect; safecall;
property HeartbeatInterval: Integer read Get_HeartbeatInterval write Set_HeartbeatInterval;
end;

これを CallbackObject にどの様に関数化するのかな?
・・・しばらく悩みが続きそうです・・・

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.035 sec.