[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでダウンロードしたExcelファイルが開かない。』(タカノリ)
マクロでエクセルファイルをダウンロードした後開くコードを下記のように組んでいます。
以下コードです。
Ret = URLDownloadToFile(0, MyDLF, MySVF, 0, 0) 'DL実行
If Ret = 0 Then 'DL成功ならEXCEL起動================ Cells(1 + Range("V19").Value, 22) = Range("V5").Value 'DLファイル名を記録
Workbooks.Open Filename:=MySVF 'C:\MyDocument から起動
With Workbooks(strFLN & ".xls") .Worksheets("menu").Range(strCell).Value = strName 'DLしたファイルの決まったセルに文字列を入力 .RunAutoMacros xlAutoOpen 'DLしたファイルのAuto_Openを実行
End With Exit Sub Else MsgBox "ダウンロードは失敗しました" End End If
これが開く場合とそうでない場合があり、対応に苦慮しています。
複数のファイル(どれもマクロ付き)をDLしますが。中には開かないものがあり一度開かなくなると以降、それが続きます。
エラーメッセージは「拡張子が違う、あるいはファイルが破損している可能性がある。」です。
ただし、手動でDLしてみると正常に開きます。
また、PCの環境が変わると、この事象が発生したり、逆に治ったりします。
PCのファイヤーウォールによるアプリケーションの許可を、Excelのところにチェックマークを入れてみても結果は同じです。
何か解決法をアドバイスいただけないでしょうか?
< 使用 Excel:Excel2016、使用 OS:Windows10 >
> With Workbooks(strFLN & ".xls") ~~↑~
プログラムの全貌が不明ですが、 拡張子を「.xls」で決め打ちしているのが問題かもです。
「.xls」の他に「.xlsx」「.xlsm」「.xlsb」などの可能性があるんですから、 実際の拡張子に合わせるべきではないですか?
(半平太) 2020/11/16(月) 12:10
(γ) 2020/11/16(月) 12:17
半平太さん レスありがとうございます。excel2003のころ作ったファイルで、そのままずーっと使ってきたもので 今まで .xls で、問題なく動いてきたのでそのままになっています。今はわけあって、システムをいじれないのでダメなんですが、後で、ここの部分だけxlsmでやってみたいと思います。
Yさん 手動で開けばAuto_Openは機能しますが、 workbook.open だけでは動きませんでした。RunAutoMacros を追加してうまくいったので、このコードを長年使用してます。workbook_open のイヴェントプロシージャよりもAuto_Open が安定して動作するので、自分の場合いつもこっちを使っています。
(タカノリ) 2020/11/16(月) 15:32
コメント拝見しました。
(1) xlsファイルを使われるのは結構ですが、 ダウンロードしたものもすべてxlsなんですか? 一般的には、殆どがxlsx,xlsmじゃないかと思います。
(2) Auto_Openのほうが安定しているというのは、寡聞にして存じませんでした。 それは古いタイプとの整合性のために残してある機能、 というのが一般の理解かと思います。 (Excel2003などでは逆にWorkbook_Openのほうが安定していないんですかね。 なお、コードの最初のほうで Application.EnableEvents = False を実行しています、などということはないですよね。)
(3) ちなみに、両者の比較に関しては、下記が参考になります。 「ブックが開いた時に自動実行(Workbook_OpenとAuto_Open)」 https://excel-ubara.com/excelvba4/EXCEL239.html
| 他のブックのマクロVBAでブックをOpenした時には、 | Workbook_Openは起動されますが、Auto_Openは起動されません。 とされています。 閲覧されている方が誤解してはいけないので、コメントしておきます。
Excel2003形式のブックが特別なんですかね。 いずれにしても今回相手にしているのが、xlsm形式だとすると、 RunAutoMacros xlAutoOpenは余り効果がないと思います。
(γ) 2020/11/16(月) 16:36
Ret = URLDownloadToFile(0, MyDLF, MySVF, 0, 0) これが成功しているなら、 Workbooks.Open Filename:=MySVF これが失敗するわけないのですが...
With Workbooks(strFLN & ".xls")
MySVFとstrFLNはどういう関係ですか? Openするとき、WorkBookオブジェクト型の変数にいれればいいのでは? (´・ω・`) 2020/11/16(月) 16:56
これが失敗するわけないのですが... With Workbooks(strFLN & ".xls")
MySVFとstrFLNはどういう関係ですか?
MySVF=フルパス+ファイル名 strFLN =ファイル名です
(タカノリ) 2020/11/16(月) 18:48
>MySVF=フルパス+ファイル名 strFLN =ファイル名です
質問1 ファイル名って拡張子含んでますか?含んでませんか?
質問2 MySVFの拡張子は、なんですか?
質問3 With Workbooks(strFLN & ".xls") と拡張子つけてますが、MySVFの拡張子と一致してますか?
質問4 With Workbooks(strFLN & ".xls") は なぜパスを指定しないのですか? その意図は? Openするとき、パス指定しないとカレントディレクトリから読み込もうとしますが、 カレントディレクトリは、ファイルのパスと一致していますか? (´・ω・`) 2020/11/16(月) 18:54
ごめんなさい 質問4はなしです。無視してください。 Open とWorkbooksコレクションの指定の話がごっちゃになって、おかしなことになってしまいました。 (´・ω・`) 2020/11/16(月) 18:59
(γ) 2020/11/16(月) 19:10
(γ) 2020/11/16(月) 19:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.