電子書籍の厳選無料作品が豊富!

Webアプリケーションで、ブラウザ(IE6)よりExcel(マクロあり)を開く際に
ダイアログ「開く/保存/キャンセル」が表示され、「開く」を選択した場合の
マクロの動作に関する質問です。

「開く」を選択した場合、もとのExcelのファイル名がsample.xlsであれば
ファイルがsample[1].xlsのように”[1]”が自動的に付与されます。
(参考:http://support.microsoft.com/kb/325630/ja
ところが、マクロをVisual Basic Editorで参照するとウィンドウに
sample(1).xlsのように”(1)”が表示されており、ActiveWorkbookの
名称もMsgBox(ActiveWorkbook)では”sample(1).xls”として取得されるため、
ブック名を取得してシートやセルを指定する処理ができずにVBがエラーと
なってしまいます。(ThisWorkbookとしても同様)
Excelファイルそのものの[1]とVBAの解釈の(1)の相違により、VB側で
ファイルを見つけられないことによるエラーではないかと考えております。

ファイルをIEから「保存」すれば問題はないのですが、「開く」とする
場合の対応方法をご存知であればご教授願います。

A 回答 (1件)

こんにちは。


状況がいまいち解らないのですが…私がバカなのかもしれませんが…

ASPでExcelファイルをダウンロードさせて、クライアントでそのExcelファイルを開き、そのファイルに含まれるマクロを走らせて処理をするってことですか?そのファイル名がsample.xlsじゃなくてsample.doc.xlsみたいな形ってことですか?

>名称もMsgBox(ActiveWorkbook)では”sample(1).xls”として取得されるため、
なら、ThisWorkbookじゃなくてActiveWorkbookじゃダメなんですか?

この回答への補足

ご回答を頂き、ありがとうございます。
説明が不十分で申し訳ありません。

WebアプリケーションはJavaなのですが、画面上のリンククリックで
マクロ付きのExcelファイルをダウンロードできるものになっております。
なお、ブラウザにExcelを表示するものではなく、Excelを起動するものになっております。

クリック時に表示される「このファイルを開くか、または保存しますか?」の
ダイアログで、「開く/保存/キャンセル」を選択することができます。

このとき、以下の現象が生じます。

(1)「保存」を選択した場合
sample.xlsというファイルがローカルに保存されるため、VBAに記述している
ブック名(ファイル名)、シート名&セルを取得する際にActiveWorkbookを
sample.xlsと解釈できるため、ローカルに保存されたファイルsample.xlsを見つける
ことができ、VBAが正常に実行される

(2)「開く」を選択した場合
sample.xlsというファイルではなく、ファイルがローカルキャッシュ
(\Temporary Internet Files配下)に入り、ファイル名に"[1]"が追加され、
sample[1].xlsという名前でキャッシュされるようです。ところが、このファイルの
VisualBasicEditorを開くとウィンドウのヘッダがsample(1).xlsと表記されており、実際、
ActiveWorkbookでもMsgboxを出してみたところsample(1).xlsと解釈されており、
ファイル(sample(1).xls)を見つけることができず、VBAが正常に実行されない


「開く」とした場合に、ファイルに修飾子"[1]"が追加されるのは仕様の
ようなのですが、このときVBAではActiveWorkbookと記述してもThisWorkbookと
記述しても探しに行くファイルが"(1)"付きのsample(1).xlsとなるため、BVAが
正しく動作しないのではないかと考えており、これを解消する術をご教授頂きたいのです。

補足日時:2007/04/06 23:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!