喫茶XRAYトップページ


[534] DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/11 (日) 16:44:05 よしん
はじめまして「よしん」といいます。
DelphiからExcelを操作しようとしています。Excelでは名前を変えて保存は
ActiveWorkbook.SaveAs Filename:="E:\ソフト作り\D2005\EXcel用\yoyoExcel\秋田.xls"
のようになりますが、これをDelphiではどのように書くのでしょうか?
XRAYさんの例を参考にしたり、VBのヘルプをみたりしましがよく分かりません。
 ExcelWorkBook1.SaveAs('E:\ソフト作り\D2005\EXcel用\yoyoExcel\よしん.xls',    //保存ファイル名
                       xlNormal,    //保存形式.現在のエクセルのバージョン形式
                       '',        //パスワード
                       '',      //文書読出しパスワード指定
                       False,       //読取り専用推奨表示の有無
                       False,    //バックアップファイル作成
                       xlNoChange,  //アクセスモード
                       EmptyParam,  //ブックが共有の場合のコンフリクトの解決方法
                       EmptyParam,  //最近使用したファイルの一覧をブックに追加
                       EmptyParam,  // TextCodePage
                       EmptyParam,  // TextVisualLayout
                       EmptyParam, //Local OleVariant ここは適当に追加してみました。
                           0);
XRAYさんの例ではLocal:OleVariantがありませんでしたが、私のDelphiでは必要かと思い足しました。
  OSはWindowsXP Delphiは2005です。
Delphiは10年近くやっていますが、土日と盆と正月がメインなのであまり上達しません。
尚、True BasicからDelphiに進んでいます。よろしくお願いします。

[536] Re:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/11 (日) 19:58:31 Mr.XRAY
▼ よしんさん
> はじめまして「よしん」といいます。

いらっしゃいませ.こちらこそはじめまして.
示されたコードでは,何か問題があるということですよね.

[カテゴリ]の[Servers]のTExcelApplicationコンポーネントを使用していると
思いますが以下のことを教えていただけますか.

(1) [コンポーネント][パッケージのインストール]で
    [Microsoft Office XXXX Sample.... ]のXXXXのところはどうなっているか
(2) 示されたユニットのUsesにあるOfficeXXXX, ExcelXXXXX
    のXXXXXの部分
(3) 実際にこのプログラムを動作させるPCにインストールされているExcelの
    バージョン
(4) 示されたコードではどんな問題または,エラーが発生するのか

以上なのですが,よろしく.
まっ,私の調査する手間を省く情報と考えて下さい.予測してアドバイスも
不可能ではないのですが,面倒なので...

> 尚、True BasicからDelphiに進んでいます。よろしくお願いします。

おっ,True Basicですか,私も使っていました.でも,実際のアプリ開発では
なく,非常勤講師をしていた専門学校のパソコン演習用です.

[538] Re:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/12 (月) 00:09:39 Mr.XRAY
▼ よしんさん
> Delphiは10年近くやっていますが、土日と盆と正月がメインなのであまり上達しません。

永いですね.私には大先輩です.
ところで,わたしは「よしん」さんとはほぼ同年代なんですよ.
えっ,何故知っているかって.それは,秘密です.(^_^;)
この店の常連客にも同年代の方がいるらしいです(失礼!!)


[543] Re2:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/12 (月) 21:19:25 よしん
▼ Mr.XRAYさん
さっそくの返信ありがとうございます。

>(1) [コンポーネント][パッケージのインストール]で
>    [Microsoft Office XXXX Sample.... ]のXXXXのところはどうなっているか

残念ながらここのところでは探せませんでした?

>(2) 示されたユニットのUsesにあるOfficeXXXX, ExcelXXXXXのXXXXXの部分
Usesの部分です。
  Windows, Messages, SysUtils,Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,ComObj, OleCtrls, SHDocVw, Excel2000,OleServer,
  ExtCtrls,  FileCtrl,  Grids, ExcelXP;

>(3) 実際にこのプログラムを動作させるPCにインストールされているExcelの
>    バージョン

Excel2000です。(※動きもしない2003が入っているのが原因かな?)

>(4) 示されたコードではどんな問題または,エラーが発生するのか
→サーバーによって例外が返されました。

>> 永いですね.私には大先輩です.
コンポーネント関係は全くだめです。ただある物を組み合わせるだけです。

> ところで,わたしは「よしん」さんとはほぼ同年代なんですよ.
プログラムを楽しんでいるのは以外とおじさんが多いのかな?

> えっ,何故知っているかって.それは,秘密です.(^_^;)
XRAYさんの能力なら可能と思います。

> この店の常連客にも同年代の方がいるらしいです(失礼!!)
私も仲間に入れてください。
 今日の朝は雪がたくさん降っていました。おかげで職場では遅刻者が続出です。
私は歩いて通勤なので遅刻することはありません。

情報が足りないのですみませんがよろしくお願いします。

[544] Re3:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/12 (月) 22:25:02 Mr.XRAY
▼ よしんさん
調査お疲れさまでした.

> >(1) [コンポーネント][パッケージのインストール]で
> >    [Microsoft Office XXXX Sample.... ]のXXXXのところはどうなっているか
> 残念ながらここのところでは探せませんでした?


少し様子が見えてきました.ここが重要なポイントのようです.
IDE(Delphi2005を起動した時のキャプション部分のメニューのことです)
で[コンポーネント]というメニューがあります.
ここをクリックするとドロップ・#95;ウンのメニュー(下に長く表示される)です.
この中から[パッケージのインストール]を選択します.

http://homepage2.nifty.com/Mr_XRAY/Delphi/plExcel/B_Delphi6.htm
の図の様な画面が現れます.ここのことです.
これがわかれば,解決策がみえてきますのでよろしく.

[545] Re4:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/13 (火) 00:21:00 よしん
▼ Mr.XRAYさん

発見しました。

> > >    [Microsoft Office XXXX Sample.... ]のXXXXのところはどうなっているか

Microsoft Office XP Sample Automation Server Wapper Components
となっていました。

返事が遅れてすみません。明日(今日?)締め切りの仕事していたので。
よろしくお願いします。

[546] Re5:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/13 (火) 00:24:51 Mr.XRAY
▼ よしんさん
> 返事が遅れてすみません。明日(今日?)締め切りの仕事していたので。

状況は把握できました.原因もわかりました.解決策の文章を考えたいと思
います.
解決方法は,いくつかありますが,どうしたらやり易いかも課題です.

私も,本日は,職場の故障したパソコンを持込んで修理中ですので,申し訳
ありませんが,明日(既に今日?)ということで...


[552] Re6:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/13 (火) 21:33:53 Mr.XRAY
▼ よしんさん

お待たせしました.長文です.ご注意下さい.

よしんさんの設定の場合,「サーバーによって例外」のエラーも考えられますが,
このエラーとして説明させて頂きます.
なお,以下の説明は,実際のエラーの発生を確認してのことではありません.
したがって,間違っている可能性もあります.

(1) [コンポーネント][パッケージのインストール]では
    Microsoft Office XP Sample Automation Server Wapper Components
    となっています.
    これは,[カテゴリ]の[Servers]でTExcelApplication等のコンポをFormに
    配置した時に,ExcelXPのコードを使用するぞ!! という意味です.

(2) ところが,実際に使用するExcelはExcel2000である.
    というのが根本的な問題です.
    usesにExcel2000とExcelXPの両方があるは(1)の設定のせいです.

で,解決策ですが,Excel2000用として開発,実行可能アプリの作成と限定
することにします.

(1) Delphi2005を「VCLフォームアプリケーション」モードにします.
    ([ファイル][新規作成]で選択します)
(2) http://homepage2.nifty.com/Mr_XRAY/Delphi/plExcel/index.htm
    の図1と2を参考にして,
    Microsoft Office XP Sample Automation Server Wapper Components
    をパッケージから削除します.
(3) パッケージdcloffice2k90.bplをインストール(追加)します.
    ..\BDS\BINフォル・#95;にあります.
    これで[カテゴリ]Servers]のコンポはExcel2000専用となります.
(4) プログラムのUnitから,ExcelXPを削除します.
    これで,私のエクセル操作フォームと同じコードが使用可能となります.
(5) コードのタイピングにコード補完(?)を利用すると便利です.
    SaveAs( までタイプしたら[Ctrl]+[Space]を押すと,引数の一覧が表示
    されます.これを読むと,必要な引数の数と変数の種類がわかる場合が
    あります.

追記:
では,何故私のエクセル操作フォームでは,Excel97,2000,XP,2003でも使用可能
なのか.
それは,エクセル操作フォームでは,[Servers]のコンポを直接使用(Formに
配置)しないで,コード内で生成しているからです,この時Excel2000用のコ
ードを使用するようになっています.

そして,どうしても他のExcelのバージョンとの違いがある場合は,Excelのバー
ジョンを調査して,分岐処理しているからです.

# ふぅっと...


[553] Re7:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/13 (火) 22:22:56 よしん
▼ Mr.XRAYさん
ありがとうございます。ばっちりです。
さすがXRAYさんですね。
 
> Excel2000用として開発,実行可能アプリの作成と限定することにします.
この設定ではあくまでもExcel2000用ですね。

> (5) コードのタイピングにコード補完(?)を利用すると便利です.
>     SaveAs( までタイプしたら[Ctrl]+[Space]を押すと,引数の一覧が表示
>     されます.これを読むと,必要な引数の数と変数の種類がわかる場合が
>     あります.

XP用だと引数が一つ多くなっていたのですね。

> コード内で生成
> Excelのバージョンを調査して,分岐処理している

なるほど、やはりそうでしたか!
 
> # ふぅっと...
お疲れさんでした。本当に有難うございました。
お礼にお米(あきたこまち)でも送りたい気分です。

[554] Re8:DelphiでExcelへのSaveAsをしたいんですが。教えてください。返信 削除
2005/12/13 (火) 23:16:05 Mr.XRAY
▼ よしんさん

> お疲れさんでした。本当に有難うございました。
> お礼にお米(あきたこまち)でも送りたい気分です。


いえいえ,よしんさんこそお疲れさま.うまく動作するプログラムを書くと
いうのは大変ですよね.レスが遅くなって申し訳ない.
マスターは昼間留守なもので(開発は主に夜と休日)
(どういう喫茶店なんだ.夜間営業か?)

>私も仲間に入れてください。
どうぞおぢさん仲間になって下さい.喫茶XRAYも是非,時々覗いてやって下さい.

> 今日の朝は雪がたくさん降っていました。おかげで職場では遅刻者が続出です。
>私は歩いて通勤なので遅刻することはありません。


今日(13日)は九州の方でも雪の様です.東京もやってくるのか心配です.

>お礼にお米(あきたこまち)でも送りたい気分です。
あきたこまち食べています.おいしいです.
提供しているコンポ類も,他の方の発言のように,まだまだ問題があるよう
ですし.頂いてしまうと.責任が.... (^^ゞ



INCM/CMT
Cyclamen v3.82