ExcelのOLEについて
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
nanbu
投稿数: 118

いつもお世話になっております。
Excelへの出力について教えてください。
テンプレート用のExcelを用意して、そこにuniPaaSから
各セルへデータを表示させ、別名で保存→開くまで行っ
ております。
開発環境では問題なくExcelが作成されOpenされるのですが、
本番環境では新規作成がされませんでした。
環境の違いからくる障害と判断して、環境回りを調査したと
ころ以下の相違がありました。
Excelバージョン
開発環境:Excel2016
本番環境:Excel2013
OLEの変数定義の際に、特性にて「タイプライブラリ」項目
ExcelのOLEを指定しているのですが、本番環境のバージョンが
開発環境にはありませんでした。
こういった場合、どのように対応すればよろしいのでしょうか??
やはり、本番環境と同じバージョンを同じパスへインストール
するしか方法はないのでしょうか。
よろしくお願いいたします。
Excelへの出力について教えてください。
テンプレート用のExcelを用意して、そこにuniPaaSから
各セルへデータを表示させ、別名で保存→開くまで行っ
ております。
開発環境では問題なくExcelが作成されOpenされるのですが、
本番環境では新規作成がされませんでした。
環境の違いからくる障害と判断して、環境回りを調査したと
ころ以下の相違がありました。
Excelバージョン
開発環境:Excel2016
本番環境:Excel2013
OLEの変数定義の際に、特性にて「タイプライブラリ」項目
ExcelのOLEを指定しているのですが、本番環境のバージョンが
開発環境にはありませんでした。
こういった場合、どのように対応すればよろしいのでしょうか??
やはり、本番環境と同じバージョンを同じパスへインストール
するしか方法はないのでしょうか。
よろしくお願いいたします。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

開発環境と本番環境が逆だと問題ないかもしれませんね・・・
本番環境に開発環境をインストールして設定する方法でしょうか・・
本番環境に開発環境をインストールして設定する方法でしょうか・・
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

コマンドは何を使用していますか?
addだとするとオプションの定数を指定すればよいのではないでしょうか?
addだとするとオプションの定数を指定すればよいのではないでしょうか?
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:
いつもありがとうございます。
申し訳ありません。コマンドとはどこの事を指しておりますでしょうか?
ちなみに・・・
[データビュー]にて O=OLEで変数を定義しています。
[ロジック]で 外部コール C=COM でプロパティの取得やメソッド呼出を行っています。
よろしくお願いいたします。
ISHIJIMAさんは書きました:
コマンドは何を使用していますか?
addだとするとオプションの定数を指定すればよいのではないでしょうか?
いつもありがとうございます。
申し訳ありません。コマンドとはどこの事を指しておりますでしょうか?
ちなみに・・・
[データビュー]にて O=OLEで変数を定義しています。
[ロジック]で 外部コール C=COM でプロパティの取得やメソッド呼出を行っています。
よろしくお願いいたします。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

新規作成とはどのような処理をされていますか?
詳細を書かれた方がよいかと思いまして・・・
基本的にはバージョンを合わせることが良いかと思います。
詳細を書かれた方がよいかと思いまして・・・
基本的にはバージョンを合わせることが良いかと思います。
投票数:0
平均点:0.00
nanbu
投稿数: 118

ありがとうございます。
作業的にはだいたい下記の通りです。(ちょっと長くなりました・・・)
【タスク前】
・Excel保存時の問い合わせダイアログ設定(非表示)
外部コール C=COM Get V_EXCELオブジェクト(Applicateion).DisplayAlarts
・Excel.Workbookの設定
外部コール C=COM Method V_EXCELオブジェクト(Applicateion).Woekbooks.Open
(↑filenameにテンプレートExcelへのパスを指定)
【レコード】
・各セルへの設定
外部コール C=COM Get V_EXCELオブジェクト(Worksheet).Range
外部コール C=COM Method V_EXCELオブジェクト(Range).value
【タスク後】
・Excel.workbookの先頭シートを選択
外部コール C=COM Get V_EXCELオブジェクト(Applicateion).Woekbooks.Item
外部コール C=COM Method V_EXCELオブジェクト(Workbook).Activate
・Excel.workbookの保存
外部コール C=COM Method V_EXCELオブジェクト(Workbook).SaveAs
(↑filenameに出力先へのパスと新ファイル名を指定)
・Excel.Workbookを閉じる
外部コール C=COM Method V_EXCELオブジェクト(Applicateion).Close
作業的にはだいたい下記の通りです。(ちょっと長くなりました・・・)
【タスク前】
・Excel保存時の問い合わせダイアログ設定(非表示)
外部コール C=COM Get V_EXCELオブジェクト(Applicateion).DisplayAlarts
・Excel.Workbookの設定
外部コール C=COM Method V_EXCELオブジェクト(Applicateion).Woekbooks.Open
(↑filenameにテンプレートExcelへのパスを指定)
【レコード】
・各セルへの設定
外部コール C=COM Get V_EXCELオブジェクト(Worksheet).Range
外部コール C=COM Method V_EXCELオブジェクト(Range).value
【タスク後】
・Excel.workbookの先頭シートを選択
外部コール C=COM Get V_EXCELオブジェクト(Applicateion).Woekbooks.Item
外部コール C=COM Method V_EXCELオブジェクト(Workbook).Activate
・Excel.workbookの保存
外部コール C=COM Method V_EXCELオブジェクト(Workbook).SaveAs
(↑filenameに出力先へのパスと新ファイル名を指定)
・Excel.Workbookを閉じる
外部コール C=COM Method V_EXCELオブジェクト(Applicateion).Close
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

どこでエラーになるのでしょうか?
投票数:0
平均点:0.00
nanbu
投稿数: 118

ありがとうございます。
エラーになるというか、実環境で新しくExcelファイルが作成されません。
(開発環境では正常に作成されています。)
恐らくは「タイプライブラリ」で指定したファイルが存在していないからだと想像しています。
(開発環境では存在するが、実環境では存在していない為)
ですので、「タイプライブラリ」で指定するパスを、iniファイルなどで指定できないかと思っています。
Excelファイルがあれば、Openは正常に行えています。
エラーになるというか、実環境で新しくExcelファイルが作成されません。
(開発環境では正常に作成されています。)
恐らくは「タイプライブラリ」で指定したファイルが存在していないからだと想像しています。
(開発環境では存在するが、実環境では存在していない為)
ですので、「タイプライブラリ」で指定するパスを、iniファイルなどで指定できないかと思っています。
Excelファイルがあれば、Openは正常に行えています。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

>恐らくは「タイプライブラリ」で指定したファイルが存在していないからだと想像しています。
>(開発環境では存在するが、実環境では存在していない為)
この意味が分からないのですがOPENするファイルがないのであれば正常な動きではないのですか?
>(開発環境では存在するが、実環境では存在していない為)
この意味が分からないのですがOPENするファイルがないのであれば正常な動きではないのですか?
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

>指定するパスを、iniファイルなどで
論理名を使用すればファイルパスは変えられませんか?
論理名を使用すればファイルパスは変えられませんか?
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:説明下手で申し訳ありません。
現在の、変数OLEの特性の「タイプライブラリ」項目において、「Microsoft Excel 16.0 Object Library (Ver 1.9)」を選択し開発を行っていました。開発環境では問題なく動作します。
これでキャビネット作成して、本番環境で動かした時にExcelが作られません。
本番環境には、Excel2013がインストールされており、「Microsoft Excel 16.0 Object Library (Ver 1.9)」が存在していません。
開発環境:Microsoft Excel 16.0 Object Library (Ver 1.9)
本番環境:Microsoft Excel 15.0 Object Library (Ver 1.8)
開発環境にてMicrosoft Excel 15.0 Object Library (Ver 1.8)を指定できれば良いのですが、このバージョンはインストールされていませんでした。
ISHIJIMAさんは書きました:
>恐らくは「タイプライブラリ」で指定したファイルが存在していないからだと想像しています。
>(開発環境では存在するが、実環境では存在していない為)
この意味が分からないのですがOPENするファイルがないのであれば正常な動きではないのですか?
現在の、変数OLEの特性の「タイプライブラリ」項目において、「Microsoft Excel 16.0 Object Library (Ver 1.9)」を選択し開発を行っていました。開発環境では問題なく動作します。
これでキャビネット作成して、本番環境で動かした時にExcelが作られません。
本番環境には、Excel2013がインストールされており、「Microsoft Excel 16.0 Object Library (Ver 1.9)」が存在していません。
開発環境:Microsoft Excel 16.0 Object Library (Ver 1.9)
本番環境:Microsoft Excel 15.0 Object Library (Ver 1.8)
開発環境にてMicrosoft Excel 15.0 Object Library (Ver 1.8)を指定できれば良いのですが、このバージョンはインストールされていませんでした。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

>Excelが作られません。
処理のどこで問題になっているか確認できれば解決できるかなと・・
処理のどこで問題になっているか確認できれば解決できるかなと・・
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:ありがとうございます。
そうなんですよねー。本番環境でしか障害が出ないので、エラー箇所が分からないんですよ・・・
想像では、OLEの変数定義で既にエラーになっているのではないかと・・・
やっぱり環境を合わせるしかないですね。
ありがとうございました。
ISHIJIMAさんは書きました:
>Excelが作られません。
処理のどこで問題になっているか確認できれば解決できるかなと・・
そうなんですよねー。本番環境でしか障害が出ないので、エラー箇所が分からないんですよ・・・
想像では、OLEの変数定義で既にエラーになっているのではないかと・・・
やっぱり環境を合わせるしかないですね。
ありがとうございました。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

>OLEの変数定義で既にエラーになっているのではないかと・・・
私の開発環境も古いOFFICEの定義から新しいOFFICEの定義が混在していて新しいものしか入っていなかったりしていますが問題なく動いているのでそれはないかと思っています。
私の開発環境も古いOFFICEの定義から新しいOFFICEの定義が混在していて新しいものしか入っていなかったりしていますが問題なく動いているのでそれはないかと思っています。
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:
いつもありがとうございます。
あれっ?そうなんですか??
では、Excel2016のOLEを指定してキャビネットを作成しても
Excel2013しかインストールされていないパソコンで、Excel出力が可能という事ですかね。あっ、古い方へ持っていくとダメなんですかね。
Excel2010のOLEを指定してキャビネットを作成してExcel2013が入っているパソコンでシステムを動作させる。
これやってみます。
ありがとうございます。
ISHIJIMAさんは書きました:
>OLEの変数定義で既にエラーになっているのではないかと・・・
私の開発環境も古いOFFICEの定義から新しいOFFICEの定義が混在していて新しいものしか入っていなかったりしていますが問題なく動いているのでそれはないかと思っています。
いつもありがとうございます。
あれっ?そうなんですか??
では、Excel2016のOLEを指定してキャビネットを作成しても
Excel2013しかインストールされていないパソコンで、Excel出力が可能という事ですかね。あっ、古い方へ持っていくとダメなんですかね。
Excel2010のOLEを指定してキャビネットを作成してExcel2013が入っているパソコンでシステムを動作させる。
これやってみます。
ありがとうございます。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

新→旧の場合は新しい機能だったりパラメタがあったりすると問題が発生したりするとは思っています。
基本的機能であれば問題ないかと思っています。
前に保存しようとして新しいバージョンで問題になった事があったような・・・
保存形式の数字が違ったような・・・・
基本的機能であれば問題ないかと思っています。
前に保存しようとして新しいバージョンで問題になった事があったような・・・
保存形式の数字が違ったような・・・・
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:
なるほど。ありがとうございます。
ちなみに・・・
2010バージョンのOLEを指定してキャビネットを作成。
2013バージョンがインストールされているマシンで動作テストしましたが、やはりダメでした。ファイルが作成されません。
ちなみに・・・
本番環境はWin2016サーバなのですが、関係ありますか?
ISHIJIMAさんは書きました:
新→旧の場合は新しい機能だったりパラメタがあったりすると問題が発生したりするとは思っています。
基本的機能であれば問題ないかと思っています。
前に保存しようとして新しいバージョンで問題になった事があったような・・・
保存形式の数字が違ったような・・・・
なるほど。ありがとうございます。
ちなみに・・・
2010バージョンのOLEを指定してキャビネットを作成。
2013バージョンがインストールされているマシンで動作テストしましたが、やはりダメでした。ファイルが作成されません。
ちなみに・・・
本番環境はWin2016サーバなのですが、関係ありますか?
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

Magic uniPaaS V1Plusの環境はなんですか?
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

保存する時に-4143:NOMALXLSだとだめで51:XLSXにした事があるような・・・
関係していないかも・・・
関係していないかも・・・
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:Microsoft Excel 14.0 Object Library (Ver 1.7)
と
Microsoft Excel 16.0 Object Library (Ver 1.9)
があり、どちらでもテストしてみましたがダメでした。
本番環境はWindows Server 2016でExcel2013がインストールされています。
ISHIJIMAさんは書きました:
Magic uniPaaS V1Plusの環境はなんですか?
と
Microsoft Excel 16.0 Object Library (Ver 1.9)
があり、どちらでもテストしてみましたがダメでした。
本番環境はWindows Server 2016でExcel2013がインストールされています。
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:ありがとうございます。
実は、VB.netの機能も使っていまして、そちらでもExcel出力していました。
確認すると、***.xlsxになってました。可能性はゼロではないかもしれません。
一度、xlsxでやってみます。
ありがとうございます。
ISHIJIMAさんは書きました:
保存する時に-4143:NOMALXLSだとだめで51:XLSXにした事があるような・・・
関係していないかも・・・
実は、VB.netの機能も使っていまして、そちらでもExcel出力していました。
確認すると、***.xlsxになってました。可能性はゼロではないかもしれません。
一度、xlsxでやってみます。
ありがとうございます。
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:
xlsxへの変更を行い、開発環境にて無事出力できることを確認。
本番環境にて実行してみたところ・・・・
ドキドキしましたが、挙動は変わりませんでした・・・ダメでした
少しずつデバッグ(メッセージ表示など)入れてやってみます。
ありがとうございました。
一度、xlsxでやってみます。
ありがとうございます。
xlsxへの変更を行い、開発環境にて無事出力できることを確認。
本番環境にて実行してみたところ・・・・
ドキドキしましたが、挙動は変わりませんでした・・・ダメでした
少しずつデバッグ(メッセージ表示など)入れてやってみます。
ありがとうございました。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

クライアント実行版・RIA・エンタープライズサーバーどれですか?
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:
返信遅くなりまして申し訳ありません。
「クライアント実行版」になります。
ISHIJIMAさんは書きました:
クライアント実行版・RIA・エンタープライズサーバーどれですか?
返信遅くなりまして申し訳ありません。
「クライアント実行版」になります。
投票数:0
平均点:0.00
nanbu
投稿数: 118

引用:いつもありがとうございます。
いろいろ試してみましたところ、
Excel側への値の挿入などは、問題なくできており
「名前を付けて保存(SaveAs)」でうまく保存ができていないようです。
(パラメータの数が無効です。とのエラーが出ました)
やはり、参照しているバージョンの違いでパラメタが違っていて
エラーが出ているんですかね。
もう少し、いろいろやってみます。
ISHIJIMAさんは書きました:
>Excelが作られません。
処理のどこで問題になっているか確認できれば解決できるかなと・・
いろいろ試してみましたところ、
Excel側への値の挿入などは、問題なくできており
「名前を付けて保存(SaveAs)」でうまく保存ができていないようです。
(パラメータの数が無効です。とのエラーが出ました)
やはり、参照しているバージョンの違いでパラメタが違っていて
エラーが出ているんですかね。
もう少し、いろいろやってみます。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

新→旧は問題がありますね
新バージョンでパラメタは増える事がありますから
旧バージョンにはないと出ているのですね・・・
新バージョンでパラメタは増える事がありますから
旧バージョンにはないと出ているのですね・・・
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827

環境があれば辞書出力して違いを確認して変更すればできるかもですね・・・
xpaで辞書出力した内容です。(参考まで)
この2つで保存のパラメータを確認したところ違っていました。
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Application>
<Header>
<Version val="12040.00"/>
<APPLICATION val="N"/>
<WithIsn val="N"/>
<WITH_MODELS val="N"/>
<MAIN_PRG_VARS val="38"/>
<MAIN_PRG_DSPS val="1"/>
<ConfirmCancel END="610" START="609"/>
</Header>
<ModelsRepository>
<Models>
<Object name="EXCLE_WORKBOOKv15">
<PropertyList model="FIELD">
<Model attr_obj="FIELD_BLOB" id="1"/>
<Size id="174" val="28"/>
<_FieldStyle id="276" val="3"/>
<Instantiation id="279" val="2"/>
<TypeLibrary GUID="{00020813-0000-0000-C000-000000000046}" MAJOR="1" MINOR="5" id="281" name="Microsoft Excel 11.0 Object Library (Ver 1.5)"/>
<ObjectName CanCreate="1" GUID="{00020819-0000-0000-C000-000000000046}" id="282" name="Workbook"/>
<_COMLicenseKey id="291"/>
</PropertyList>
</Object>
<Object name="EXCLE_WORKBOOKv16">
<PropertyList model="FIELD">
<Model attr_obj="FIELD_BLOB" id="1"/>
<_FieldStyle id="276" val="3"/>
<Instantiation id="279" val="2"/>
<TypeLibrary GUID="{00020813-0000-0000-C000-000000000046}" MAJOR="1" MINOR="9" id="281" name="Microsoft Excel 16.0 Object Library (Ver 1.9)"/>
<ObjectName CanCreate="1" GUID="{00020819-0000-0000-C000-000000000046}" id="282" name="Workbook"/>
<_COMLicenseKey id="291"/>
</PropertyList>
</Object>
</Models>
</ModelsRepository>
</Application>
xpaで辞書出力した内容です。(参考まで)
この2つで保存のパラメータを確認したところ違っていました。
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Application>
<Header>
<Version val="12040.00"/>
<APPLICATION val="N"/>
<WithIsn val="N"/>
<WITH_MODELS val="N"/>
<MAIN_PRG_VARS val="38"/>
<MAIN_PRG_DSPS val="1"/>
<ConfirmCancel END="610" START="609"/>
</Header>
<ModelsRepository>
<Models>
<Object name="EXCLE_WORKBOOKv15">
<PropertyList model="FIELD">
<Model attr_obj="FIELD_BLOB" id="1"/>
<Size id="174" val="28"/>
<_FieldStyle id="276" val="3"/>
<Instantiation id="279" val="2"/>
<TypeLibrary GUID="{00020813-0000-0000-C000-000000000046}" MAJOR="1" MINOR="5" id="281" name="Microsoft Excel 11.0 Object Library (Ver 1.5)"/>
<ObjectName CanCreate="1" GUID="{00020819-0000-0000-C000-000000000046}" id="282" name="Workbook"/>
<_COMLicenseKey id="291"/>
</PropertyList>
</Object>
<Object name="EXCLE_WORKBOOKv16">
<PropertyList model="FIELD">
<Model attr_obj="FIELD_BLOB" id="1"/>
<_FieldStyle id="276" val="3"/>
<Instantiation id="279" val="2"/>
<TypeLibrary GUID="{00020813-0000-0000-C000-000000000046}" MAJOR="1" MINOR="9" id="281" name="Microsoft Excel 16.0 Object Library (Ver 1.9)"/>
<ObjectName CanCreate="1" GUID="{00020819-0000-0000-C000-000000000046}" id="282" name="Workbook"/>
<_COMLicenseKey id="291"/>
</PropertyList>
</Object>
</Models>
</ModelsRepository>
</Application>
投票数:0
平均点:0.00
nanbu
投稿数: 118

いろいろありがとうございます。
参考になります。
参考になります。
投票数:0
平均点:0.00