3

現在、実行中のレポートがあります

  • ユーザーがレポートをトリガーする
  • レポートは処理され、xml 形式で保存されます
  • レポートが終了すると、ユーザーはレポートをダウンロードするオプションを取得します
  • ユーザーがダウンロードをクリックすると、Web サービスが呼び出されます。
    1. この Web サービスは空白の Excel ブックを開きます
    2. 別の xml モジュール (サーバーに常駐) からマクロをコピーします。
    3. マクロは完成した xml レポートを処理し、それをシートに表示します

Excel 2002 (SP 3) を使用している場合、これはすべて問題なく機能します。

私たちのワークステーションは XP から Windows 7 にアップグレードする予定です。Windows 7 には Excel 2010 が付属しています。 インフラ チームが提供するテスト マシンですべての手順を試しました。

テスト中に、xml モジュールのマクロが Excel 2010 にコピーされないことがわかりました。エラーも警告もありません。

少し検索したところ、「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェックを入れる必要があることがわかりました。やってみましたが無駄でした。

不明な点や詳細情報が必要な場合はお知らせください。

編集 1 これは、JS が Excel を開いて + ワークブックを追加 + モジュールを追加する方法です。

xlApp = new ActiveXObject("Excel.Application");
//Add a workbook
xlBook = xlApp.Workbooks.Add;

// This loads the modules into XL from the reporter_modules
var xlMod;
xlMod = xlBook.VBProject.VBComponents.Add(1);
xlMod.CodeModule.AddFromString(xmlModule.childNodes(i).text);

Excel 2002 には .xls しかないため、Excel をどこでも開いている間、コードは拡張子について言及しません。これをどのように達成できるか知っていますか?

ありがとう、会いましょう

4

1 に答える 1

1

保存時にファイルタイプを指定できます。これは、あなたが投稿したものとは異なるコードのセクションにあります。Excelを使用すると、Vbaモジュールを.xlsxに追加できますが、保存時に警告が表示されます(Javaコードが抑制していることは間違いありません)。Java構文はわかりませんが、Vbaでは

ActiveWorkbook.SaveAs "C:\ron.xlsm", fileformat:=52 

52は、Excelが使用するファイルタイプ定数です。詳細については、http://www.rondebruin.nl/saveas.htmをご覧ください。

于 2013-01-09T16:14:38.993 に答える