エクセルマクロでファイルオープンでシートカットが使えない

このQ&Aのポイント
  • エクセルのVBAマクロについて教えて下さい。"Application.GetSaveAsFilename"にて指定したファイルがシートカットの時にエラーで停止する。
  • エクセルマクロでファイルオープンする際に、シートカットの場合にエラーが発生しますか?
  • エクセルマクロでのファイルオープン時、シートカットのファイルでエラーが発生する問題について教えてください。
回答を見る
  • ベストアンサー

エクセルマクロでファイルオープンでシートカットが使えない

エクセルマクロでファイルオープンでシートカットが使えない エクセルのVBAマクロについて教えて下さい。 ”Application.GetSaveAsFilename”にてファイルを指定して、”Workbooks.OpenText Filename”にてファイルをオープンするときに、”Application.GetSaveAsFilename”にて指定したファイルがシートカットの時にエラーで停止する。 もし、”Application.GetSaveAsFilename”が実際のファイルの場合には、エラーで停止しない。 ■実際のVBA aFile = Application.GetSaveAsFilename(InitialFileName:=TaskF & "\" & "*.xls", FileFilter:="Excel(xls)ファイル (*.xls),*.xls") Workbooks.OpenText Filename:=aFile  ←左記の箇所でエラー停止する。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

今の設定だと、拡張子がxlsで無い場合、「.xls」を後ろに付けたファイル名が変数「aFile」に入ります。 ショートカットは、普段は見えないようになっていますが、拡張子は「.lnk」なので、保存ボタンを押した時、変数aFileに入るファイル名は「○○○.lnk.xls」になってしまいます。 GetSaveAsFilenameの所を以下の様に変更して見てください。 ショートカットの場合、本来のファイル名とパスが変数aFileに入るようになります。 aFile = Application.GetSaveAsFilename(InitialFileName:=TaskF & "\" & "*.xls")

Comarch18
質問者

お礼

回答ありがとうございます。 ご指摘通りの変更をしましたが同じエラーで停止しています。 追加で申し訳ありませんが下記の項目追加させてください。 (1)マクロは、汎用性を持たせるためリンク指定、実ファイル指定のどちらでも実行させるようにしたい。 (2)以前に同じようなマクロがあり、それは実ファイル、リンクファイルとも実行が出来た。 (作成された方が会社を変えられたため連絡が出来ません・・・知りません) ■実行が出来るマクロ 同じようなマクロですが下記の場合には、リンクでも実ファイルでも問題なく実行出来ます。。。 Dim aFile As Variant Rem aFile = Application.GetOpenFilename _ ("案件内容転記 (*.xls), *.xls", , , , True) If IsArray(aFile) Then For i = 1 To UBound(aFile) Debug.Print i & ":", aFile(i) Next i Else Debug.Print aFile End If Workbooks.OpenText Filename:=aFile(1)

Comarch18
質問者

補足

再度確認してたところmt2008様のご指摘方法で問題なく動作します。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

「シートカット」→「ショートカット(*.lnk)」と読み替えます。 >エクセルマクロでファイルオープンでシートカットが使えない 何度読んでも、良く理解できない質問です。 *ロジックは間違いないけれども、こういうようには書きませんね。     ↓ >”Application.GetSaveAsFilename”にてファイルを指定して、 * >”Workbooks.OpenText Filename”にてファイルをオープンするときに、 >”Application.GetSaveAsFilename”にて指定したファイルがシートカットの時にエラーで停止する。 ショートカットをオープンするというのは、Workbooks.OpenText ではないはずですし、こういうロジックはマクロとしてはイレギュラーです。 >ファイルがシートカットの時にエラーで停止する。 ショートカットを作るという意味でしょうか。それなら、まったくコードが違います。 開けるときに、そのままなら、ショートカットなどを指定することは出来ないはずです。 >(1)マクロは、汎用性を持たせるためリンク指定、実ファイル指定のどちらでも実行させるようにしたい。 リンク指定なら、その拡張子で、切り替えるようにしなければなりません。 エラーそのものよりも、全体のロジックがどうなっているか、どういうことをしたいのか、フォルダは、ネットワーク(仮想)か、物理的フォルダなのか、まず、今までのコードは忘れて、どういう仕様でマクロを実行させたいのか、最初から構築したほうが早いような気がします。話を理解すれば、コードは作れますが、今のままで、切ったり貼ったりという方式では不可能だと思います。 それと、ファイルを開くことと、ファイルを閉じることとは、話が別です。

Comarch18
質問者

お礼

Wendy02様 回答ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

ANo.1です。 > ご指摘通りの変更をしましたが同じエラーで停止しています。 エラーの内容を提示してください。 また、ちゃんと動くコードがあるのでしたら、なぜそちらを使わないのですか?

Comarch18
質問者

お礼

mt2008様 No.1の方法で解決しました。 ありがとうございます。 本当に助かりました。 エラーメッセージを確認するために再度書き直して実行したら問題なく実行することが出来ました。 本当に本当にありがとうございます。

関連するQ&A

  • マクロでファイルオープン

    エクセルのマクロでtest.xlsファイルをオープンする際に元々test.xlsファイルの属性が読み取り専用になっているものを、読み取り専用チェックをはずした状態でオープンすることは可能でしょうか? Workbooks.Open Filename:="test.xls" ReadOnlyRecommended:=False とかやってもなかなか上手くいきません。

  • エクセルVBA

    こんばんは! エクセルマクロ初心者です。 エクセルVBAについて教えてください! パス(?)を指定して、ファイルを開けてから実行する マクロを書きたいのですが、エラーになってしまいます。 Dim Filename as string (1)Workbooks.Open Filename:= "\D\MyDocument\●●.xls" (●●はファイル名) (2)Workbooks("●●").Activate (1)の部分は実行されて目的のファイルは開くのですが(2)でエラーになってしまいます。 どなたか教えてください! 以前までは、このマクロ実行できていたのですが、突然できなくなりました。 困ってます。

  • エクセルVBAでの呼出操作をマクロ化するには?

    エクセルVBAでの呼出操作をマクロ化するには? エクセル2000です。宜しくお願いします。 VBAで、ファイルを呼び出したいのですが、Workbooks.openの書き方が良く分かりません。 呼び出すファイル名は決まっていなくて、フォルダ名は固定です。 エクセルの操作で言うと、ファイルを開くを押して、フォルダを選ぶとこまでをマクロかしたいのですが。 例えば、ドライブDの「作業用」フォルダを開きたい場合は、どう記述すれば宜しいでしょうか? 基礎的な部分でお恥ずかしいのですが、以下で実行しても動かんのです。 ChDir "D:\作業用" Workbooks.OpenText Filename:= "D:\作業用\*.*"

  • エクセルのマクロでファイルを自動で保存するには?

    こんにちは。お世話になります。 エクセルのVBAマクロ文の書き方でお知恵を拝借したいと思います。 さて、私のかかる業務でエクセルファイルで営業実績を出しています。 COBOLで作ったファイルをCSVにインポートして そのCSVの値を別のエクセルファイルで引っ張るという手順を踏んでいますが、 それをマクロで動かすとエクセル上で『保存しますか?』と聞いてきます。 答えは『はい(Y)』で確定しているので、その命令文さえ組み込められればいいのですが、 その命令文の書き方が判りません。 (解決したいVBAマクロの命令文) Workbooks.Open Filename:="D:\(Aファイル).csv" Workbooks.Open Filename:="D:\(Aファイルの値を引っ張るBファイル).xls" ThisWorkbook.Saved = True (ここで聞いてくる注意に自動で『Y』を入れたいと思っています。) ActiveWindow.Close ActiveWindow.Close 以上、お知恵を拝借したく、お願いいたします。

  • Excelマクロについて

    Excelマクロ(VBA)で複数のExcelファイルを一括で処理するプログラムを作っているのですが、処理対象のExcelファイルにはマクロが記述されていて、Excelを開く毎に記述のマクロが動いてしまいます。 対象のExcelファイルをオープンする時に、マクロを無効にして開くすることは可能でしょうか? 今現在、Excelファイル開く時に使ってる命令は、 Workbooks.Open Filenameです。

  • ワードのマクロからエクセルシートを開きデータを読み込む

    ワードマクロからエクセルシートのデータを読み込みたいのですが、マクロを実行すると「コンパイルエラー:変数が定義されていません。」というエラーが出てしまいます。変数xlUpで引っかかってるようなんですが、どのように定義すればよいですか? コードは以下です。 Dim Workbooks As Object Dim ecell As Integer Workbooks.Open FileName:="namesheet.xls" ecell = Workbooks("namesheet.xls").Worksheets(1).Range("B100").End(xlUp).Row よろしくお願いいたします。

  • Excelファイルのマクロによる排他制御

    A.xlsというExcelファイルの内容を更新するのですが。 更新しにいくのは、複数のExcelのマクロで作成したツールです。 その複数のツールから同時にA.xlsの更新にいくと当然タイミングによって更新内容が上書き等され壊れてしまいます。 そこで、お互いのツールで排他制御を行おうと思っているのですが、A.xlsを開くopen文での記述が解りません。 どなたか教えていただけないでしょうか。 使用している構文は、こんな感じです。 Workbooks.Open Filename:="A.xls" on errorで重複openのエラーになるかと思ったのですが、エラーになってくれず、重複エラーを検知できません。 よろしくお願いします。

  • エクセルマクロでマクロをアクティブにしたくない

    エクセルのマクロをひとつの「マクロA」という名前で、データーファイルからセルに入っている内容などを呼び出しながらまくろAのシートにデーターを貼り付けながら作業をしています。 Workbooks.Open Filename:= _ "C:\Documents and Settings\owner\My Documents\マクロ.xls" Application.Run "マクロ.xls!マクロ" と記載すると、マクロXLSがアクティブになってしまいます。 その為記載に'ActiveWindow.WindowState = xlMinimized と入れたりするのですが、アクティブになるシートがマクロ以外にうまくいかないことがあるのです。 データーシートは、毎回データーが変わる関係で、DATA.xlsがAのときやBのときが発生します。

  • ExcelのマクロでCSVファイルを開くと遅いのですが

    ExcelのマクロでCSVファイルを開くと遅いのですが速く開く方法はありますか? 普通にファイル-開くに比べてかなり遅いです。 下記のVBAで記述してあります。 Workbooks.Open Filename:=fname ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close savechanges:=False

  • 引用符がある、またはないCSVファイルをExcelマクロで開くには?

    カンマ区切りの複数のCSVファイルがあります。 ファイルによって、引用符がダブルクォーテーションであるものと、引用符がないものがあります。 1つのファイルの中では、引用符は統一されています。 この複数のCSVファイルをマクロで1つのExcelファイルにまとめたいと思います。 そこで、CSVファイルを一つ一つExcelで開いて、データをコピー&ペーストしたいのですが、 引用符の違いによって分岐させる処理がうまく動きません。 分岐処理は下記のようにしました。 アドバイスをお願いいたします。 On Error GoTo err1 Workbooks.OpenText Filename:=myPath & fname, Comma:=True err1: Workbooks.OpenText Filename:=myPath & fname, textqualifier:=xlTextQualifierNone, Comma:=True

専門家に質問してみよう