いつもお世話になっています
WindowsXP Delphi7 Excel2000で
TExcelApplication, TExcelWorkbook, TExcelWorksheetを利用しています
ExcelWorkSheet1.PrintPreview;
でプレビューしてくれることを期待しているのですが
OLE エラー 800A03EC.
となってしまいます
ExcelWorkbook1.PrintPreview;
でも まったく同じ結果になります
お分かりになる方いませんか?
宜しくお願いします
環境はかいさんと同じです。
こちらは以下のソースで問題なく動きますがなにか相違点ありますでしょうか。
ExcelApplication1.Connect;
ExcelApplication1.Visible[0] := True;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open(
ファイル名,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
0) as _Workbook);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.activesheet as _Worksheet);
ExcelWorksheet1.PrintPreview;
Ruさんこんにちは
ありがとうございます
1つ書き忘れていました
TWebBrowser上にExcelを乗っけるようにしています
Ruさんのコードなら私の環境でもうまくいきました
WebBrowserを使うと駄目なのでしょうか?
var
hoge:OleVariant;
begin
WebBrowser1.ExecWB(OLECMDID_PRINT, 0, hoge, hoge);
end;
これで印刷ダイアログ出すとプレビューボタンが消えている。
機能的に出来ないのかな?
誰かご存じの方お願いします。
Ruさん
>これで印刷ダイアログ出すとプレビューボタンが消えている。
私も同じで、そのため直接プレビューしてみようと思ったんです
var
ov:OleVariant;
begin
WebBrowser1.ExecWB(OLECMDID_HIDETOOLBARS,OLECMDEXECOPT_DODEFAULT,ov,ov);
として、ツールバーを表示。
・・・で、プレビューボタンを押してみましたが、エラーは出ませんが
プレビューも出ませんでした
やはりWebBrowserを利用した場合はプレビュー出来ないのでしょうか
ところで・・・
Mr.XRAYさんのサイト
http://homepage2.nifty.com/Mr_XRAY/Delphi/plExcel/T_ExcelDialog.htm
では、印刷ダイアログにプレビューのボタンが出ているのですが
何かミソがあるのでしょうか?
>やはりWebBrowserを利用した場合はプレビュー出来ないのでしょうか
既にいろいろ実験しているとは思いますが、例えば以下の様なテストをして
みて下さい。
新規のプロジェクトにTWebBrowserとTButtonを各々一つ配置します。
usesに SHDocVwを追加します。
---- テスト1 ------
procedure TForm1.FormShow(Sender: TObject);
var
AURL : String;
begin
AURL:='http://homepage2.nifty.com/Mr_XRAY/index.htm';
WebBrowser1.Navigate(AURL);
end;
// 印刷プレビュー
procedure TForm1.Button1Click(Sender: TObject);
var
Tmp:OleVariant;
begin
WebBrowser1.ExecWB(OLECMDID_PRINTPREVIEW,OLECMDEXECOPT_DODEFAULT,Tmp,Tmp);
end;
---- テスト2 ------
procedure TForm1.FormShow(Sender: TObject);
var
AURL : String;
begin
AURL:='エクセルのブックのフルパス';
WebBrowser1.Navigate(AURL);
end;
// 印刷プレビュー
procedure TForm1.Button1Click(Sender: TObject);
var
Tmp:OleVariant;
begin
WebBrowser1.ExecWB(OLECMDID_PRINTPREVIEW,OLECMDEXECOPT_DODEFAULT,Tmp,Tmp);
end;
違いは実行した結果の通りです。
エクセルをDelphi(VBAや他の言語でも同じ)からから操作する方法には
(1)操作用のフォームを用意して、そこに操作コード実行のボタン類を配置
(2)OleContainerを配置して、その上に表示
(3)WebBrowser1を配置して、そこに表示
等がありますが、それぞれ一長一短があるのでないかと思います。
エンドユーザに対して、どのようなインターフェイスを提供し、操作をどの程度
制限し、何を自動化するのか。全く自由で汎用的な目的であれば、エクセルその
ものを直接操作すればいいわけですから、その点は考える必要があるかも知れません。
業務アプリであればなおさらでしょう。
なお、テスト2の結果については、Microsoftのサイト(URLは失念!!)に記述があります。
(確か、これは仕様ですと書いてあったと記憶しています)
>http://homepage2.nifty.com/Mr_XRAY/Delphi/plExcel/T_ExcelDialog.htm
>では、印刷ダイアログにプレビューのボタンが出ているのですが
>何かミソがあるのでしょうか?
何故でしょう。正解者は自分で座布団2枚用意して下さいね(笑)。
もっとも、たとえ[印刷プレビュー]ボタンが表示されたとしてもプレビューしませんけど。
Mr.XRAYさん
ありがとうございました。
一長一短・・・
その通りですね。
今回は長所の部分の魅力が大きいので なんとか・・・と頑張ってみましたが、
別の手を考えることにします。
これまでご指導くださった皆様方、ありがとうございました。
MrXRAYさん。
いつも参考にさせていただいております。
テスト1は上手くいくのですが、テスト2の印刷プレビュー時
(Button1をクリックすると)
「登録されていないドロップ先の登録を解除しています」
とエラーが出ます。
いかがすればいいのでしょうか。ご教示ください。
ツイート | ![]() |