• 締切済み

IEよりExcelを開いた場合にファイル名に括弧がついてしまう

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から「保存」すれば問題はないのですが、「開く」とする 場合の対応方法をご存知であればご教授願います。

みんなの回答

  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.1

こんにちは。 状況がいまいち解らないのですが…私がバカなのかもしれませんが… ASPでExcelファイルをダウンロードさせて、クライアントでそのExcelファイルを開き、そのファイルに含まれるマクロを走らせて処理をするってことですか?そのファイル名がsample.xlsじゃなくてsample.doc.xlsみたいな形ってことですか? >名称もMsgBox(ActiveWorkbook)では”sample(1).xls”として取得されるため、 なら、ThisWorkbookじゃなくてActiveWorkbookじゃダメなんですか?

matchie
質問者

補足

ご回答を頂き、ありがとうございます。 説明が不十分で申し訳ありません。 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が 正しく動作しないのではないかと考えており、これを解消する術をご教授頂きたいのです。

関連するQ&A

  • エクセルでセル値をファイル名にして保存しようと思っています。

    エクセルでセル値をファイル名にして保存しようと思っています。 エクセル2003では以下の方法でセル値を取得して保存しています。 'Cell値を取得 strName2 = Sheets("#######").Range("A1").Value strName3 = Sheets("*******").Range("B2").Value 'strName2の値が空の場合、現在のブック名を代入 If strName2 = "" Then strName = ThisWorkbook.Name 'セル値の結合 sName = strName3 + strName2 '名前を付けて保存] ダイアログ ボックスを表示 fName = Application.GetSaveAsFilename(InitialFileName:=sName, fileFilter:="Excel(*.xls), *.xls") 'ファイル名を取得したら保存 If fName <> False Then ActiveWorkbook.SaveAs fName 同様の操作を2007以降で「マクロを有効にして保存」を行いたいのですが、どの様にすればいいのでしょうか? (自動保存では以下の様になる状態の事です。) ActiveWorkbook.SaveAs Filename:="#:\*******.xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 2007の時の「'名前を付けて保存] ダイアログ ボックスを表示」の方法が分かりません。 共通の命令文では出来でしょうから、最終的にはエクセルのバージョンを取得して、IFで分岐させようと思っています。 宜しくお願い致します。

  • ファイル名のみを取得するには?

    Sub 取得() MsgBox ActiveWorkbook.Name End Sub を実行すると 「エクセル.xls」 と取得されますが 拡張子を除いたファイル名だけを取得するにはどうすればいいでしょうか? 「エクセル」だけを取得したいです。 よろしくお願いします。

  • Excel CSVファイル セル名を名前として保存

    いつもありがとうございます。エクセル2003XPです。 毎回USBメモリーに上書きされてくる、同名のCSVファイルを別エクセルファイルに読み込む作業をしております。 その作業は外部データの読み込みを記憶マクロとして問題ないのですが、エクセルに読み込んだCSVファイルは、かぶらないようにそのつど、Kill を使い削除しております。 ただ完全に削除なので対策として、 読み込んだCSVファイルの1行目のセル名をファイル名として名前を変えて保存、 PCの"C:\Documents and Settings\元データ に毎回CSVもしくは、エクセルファイルに名前を変更して保存する処理をボタンひとつで出来ないか、考えております。 ネットで色々と検索をしておりますが、勉強不足です。 参考でサンプルマクロは見つけましたが、どのように変更すれば良いか分かりません。ご享受いただければ助かります。 CSVファイル名 : log001.csv(毎回、USB) 保存したいファイル名 : CSVファイルを開いた時のA1のセル名(日付です) 保存場所 : PCのマイドキュメントの元データファイル 保存したいファイル形式 : CSVもしくはExcelファイル Sub THSFILE_SAVE() Dim myFname0 As String Dim myFname As String On Error GoTo ERRH '現在のファイル名取得 myFname0 = ThisWorkbook.Name '新しいファイル名をセルA1の値とする myFname = Sheets(1).Range("A1").Value '同じ階層に保存 ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & myFname If myFname0 <> myFname & ".xls" Then '前の名前のファイルを削除する場合は下の一行を有効にしてください 'Kill ThisWorkbook.Path & "\" & myFname0 End If Exit Sub ERRH: End Sub この処理はCSVファイルの読み込み先のエクセルファイルから、行いたいと考えております。 よろしくお願致します。

  • VBA 新規作成したファイルを開くときにエラー

    すみません、助けてください。 Excel 2007のVBAでActiveWorkbook.SaveAsを使って 新規にExcelファイルを生成するものを作成しているのですが、 新たに作成したExcelファイルを開くときにエラー(警告)が出てしまいます。 (ファイル自体は開けるのですが。。。) ソースは以下です。 ------------------------------------------------------------ ' シート枚数を指定 Application.SheetsInNewWorkbook = 3 Workbooks.Add ' 上書き保存 Application.DisplayAlerts = False ' ファイル名を指定して保存 ActiveWorkbook.SaveAs (ThisWorkbook.Path + "\" + "新しいファイル.xls")

  • エクセルのマクロで質問です

    エクセルのマクロで質問です。 SaveAsを使って、あるセルの文字列をファイル名として保存する、というマクロを作りました。 取りあえずうまくいっているのですが、同じファイル名がすでに存在した場合、「上書きしますか?」というダイアログが出ます。 運用上、上書きは困るのですが、「いいえ」を選択するとマクロがエラーで止まってしまいます。 そこで、以下のどちらかの動作を実現するマクロは可能でしょうか? 1.いいえを選んだ時に、ファイル名を指定するダイアログに飛ぶ 2.同じファイル名があった場合、自動的に末尾に数字を不可して保存する(ファイル名.xlsがあった場合はファイル名2.xlsで保存する) よろしくお願い致します。

  • エクセル2010で2003形式でマクロ保存したい

    マクロ初心者ですので、よろしくお願いいたします。類似例が無いかと検索しましたが見つからないので質問いたします。 会社のパソコンがエクセル2003から2010に変更されました。しかし、XP環境でエクセル2003しか使えないソフトがあり、そのパソコンも残してあります。2010で作成したマクロブック(xlsm)が、2003でも使えるようファイル名を付けてエクセル2003(xls)で保存できるマクロを作成したのですが、うまくいきません。 2010で保存できた構文に、「m」を削除し、Excel8の構文を付加するのですが、構文「FileFormat:」がハイライトされ、コンパイルエラーと表示され、「名前付き引数がありません」となります。 ActiveWorkbook.SaveCopyAs Filename:=FPATH & "\" & book3 & ".xls", _ FileFormat:=xlExcel8  「ActiveWorkbook.SaveAs」では拡張子が合わないとなりますが、保存はできています。「ActiveWorkbook.SaveCopyAs」で名前付け保存したいのですが、上記のエラーとなります。 よろしくご回答をお願いいたします。

  • エクセル VBA マクロを動かしたときに元々開いているファイルを閉じる・・・

    いつも皆様には大変お世話になっております。 早速質問ですが、 「もしこのマクロが動く時点で他のExcelファイルが開いていたら、警告の上 自ファイルを閉じる、開いていなければ~実行」 という処理をかませたいと思っております。 ここの判定の方法がわかりません。(既にExcelが起動されていたら、でもいいのでしょうか。。。?) 下記のようなマクロを組んでいるので 他のファイルが開いていると厳しい状況です。 bname = "C:\" & Format(Range("q1").Value, "yyyymmdd") & "サンプル" & ".xls" ActiveWorkbook.SaveAs bname Workbooks.Open "C:\サンプル.xls" Workbooks(1).Close 本当は"yyyymmdd"&"サンプル"&".xls"ファイルだけ閉じられればいいのですが、自分の知識では上記のような形でしか動かせません;; もしご存知の方、ご教示ください。よろしくお願いします

  • エクセルマクロの別名保存時のパス区切り文字

    エクセルマクロでセル内のパスとファイル名を繋げて別名保存したいと思ってます。 「/」と「\」のどちらを入力されるか分からないため 繋げたパスが「\\パソコン名/共有フォルダ名\ファイル名.xls」となるように入力した所"1004"のエラーが出ました。 デバッグした所 「ActiveWorkbook.SaveAs filename:=繋げたパス」 で落ちてました。 マクロを使わずに別名保存で「/」と「\」を使用した場合は保存されたのですが、なぜマクロだとエラーになってしまうのでしょうか? 入力されたパスの区切り文字をすべて「\」へ変更する処理を加えたので急ぎではないですが、どなたかご教授下さい。

  • エクセルファイルを閉じる方法

    VBでExelファイルを新規作成し、名前をつけて保存するんですが、 objxls.Application.Visible = False として非表示で実行すると、保存した後でも「Bookxx」というExcelファイルが開かれっぱなしになっています。 「Bookxx」が作られない(ちゃんと閉じる)ようにするにはどうすればいいでしょうか。 Excelファイルの閉じ方は objExcel.ActiveWorkbook.Close SaveChanges:=True, FileName:=App.Path & "\bookPaste.xls" でやっています。

  • エクセルのマクロについて質問です

    エクセルのマクロについて質問です 現在のファイル名を取得して マクロの中でマクロを起動したいのですが エラーになってしまいます どこをなおせば動くのでしょうか? マクロ名は起動させたいマクロをいれています。 エクセルは2003 OsはXPです ファイル名 = ActiveWorkbook.Name 'ファイル名を取得 Application.Run "'ファイル名'!マクロ名" 'マクロを起動" ネットで調べたのですが答えが見つからず困り果てています どうか宜しくお願いいたします。

専門家に質問してみよう