エクセルマクロでファイルオープンでシートカットが使えない
エクセルの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 ←左記の箇所でエラー停止する。
No.1ベストアンサー
- 回答日時:
今の設定だと、拡張子がxlsで無い場合、「.xls」を後ろに付けたファイル名が変数「aFile」に入ります。
ショートカットは、普段は見えないようになっていますが、拡張子は「.lnk」なので、保存ボタンを押した時、変数aFileに入るファイル名は「○○○.lnk.xls」になってしまいます。
GetSaveAsFilenameの所を以下の様に変更して見てください。
ショートカットの場合、本来のファイル名とパスが変数aFileに入るようになります。
aFile = Application.GetSaveAsFilename(InitialFileName:=TaskF & "\" & "*.xls")
回答ありがとうございます。
ご指摘通りの変更をしましたが同じエラーで停止しています。
追加で申し訳ありませんが下記の項目追加させてください。
(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)
No.3
- 回答日時:
「シートカット」→「ショートカット(*.lnk)」と読み替えます。
>エクセルマクロでファイルオープンでシートカットが使えない
何度読んでも、良く理解できない質問です。
*ロジックは間違いないけれども、こういうようには書きませんね。
↓
>”Application.GetSaveAsFilename”にてファイルを指定して、 *
>”Workbooks.OpenText Filename”にてファイルをオープンするときに、
>”Application.GetSaveAsFilename”にて指定したファイルがシートカットの時にエラーで停止する。
ショートカットをオープンするというのは、Workbooks.OpenText ではないはずですし、こういうロジックはマクロとしてはイレギュラーです。
>ファイルがシートカットの時にエラーで停止する。
ショートカットを作るという意味でしょうか。それなら、まったくコードが違います。
開けるときに、そのままなら、ショートカットなどを指定することは出来ないはずです。
>(1)マクロは、汎用性を持たせるためリンク指定、実ファイル指定のどちらでも実行させるようにしたい。
リンク指定なら、その拡張子で、切り替えるようにしなければなりません。
エラーそのものよりも、全体のロジックがどうなっているか、どういうことをしたいのか、フォルダは、ネットワーク(仮想)か、物理的フォルダなのか、まず、今までのコードは忘れて、どういう仕様でマクロを実行させたいのか、最初から構築したほうが早いような気がします。話を理解すれば、コードは作れますが、今のままで、切ったり貼ったりという方式では不可能だと思います。
それと、ファイルを開くことと、ファイルを閉じることとは、話が別です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
- Visual Basic(VBA) エクセルVBA 既存エクセルを開きその中のシートとしてCSVファイルを開く 3 2023/05/31 13:11
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
PDF ファイルが開けません。
-
複数のExcelブックから一覧表を...
-
EXCEL VBA ー 同一フォルダ内の...
-
コマンドボタンがあるかどうか...
-
EXCELのセルへ、デジタル時計を...
-
コマンドボタンで「終了ボタン...
-
押したボタンの位置取得(共通の...
-
エクセルのマクロでワードのマ...
-
Excel VBA のdebug(F8キー) が...
-
Excel:コマンドボタンの移動
-
マクロ登録ボタンに色をつける
-
ローマ字→カタカナへ変換(エク...
-
開いているフォルダを全て閉じ...
-
コマンドボタンを押すたびに大...
-
InDesignには「1段階戻る」の...
-
コマンドボタンで印刷ボタンを...
-
Excelシート上でボタン1つで交...
-
チェックボックスで「いずれか1...
-
エクセルVBAでOptionButtonのオ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
ファイルを並び替えるときの「...
-
EXCELのVBAで画像を選んだ順に...
-
Teraマクロで日付ディレクトリ...
-
エクセルファイルから指定した...
-
PDF ファイルが開けません。
-
エディタで効率的な切り出し方法
-
エクセルからスキャナVBAで連動...
-
=CELL("filename")で取得したフ...
-
CSVで文字化けしてしまうのを直...
-
VLOOKUP関数とネットワークに置...
-
Excel VBAで自動的にハイパーリ...
-
エクセル 一括リンクの解除
-
ハイパーリンクで前回値をひき...
-
EXCELのマクロを使って、テキス...
-
EXCELで複数のファイルから抽出
-
ミュージックファイルのファイ...
-
Notes 開発で、 excelファイル...
-
Excelでリンクを使用すると#N/A...
おすすめ情報