- ベストアンサー
ExcelのVBAで同じ名前で拡張子が違うファイルを操作する際に生じる不具合と回避方法
- ExcelのVBAで同じ名前で拡張子が異なるファイルを操作する際には、拡張子を表示しない設定になっている場合に不具合が生じることがあります。
- 具体的な不具合としては、ファイルを開いてコピーした後に貼り付け先のファイルをアクティブにしようとしても、元のファイルがアクティブなままとなることがあります。
- 同じ名前で拡張子が違うファイルを操作する場合、ファイル名をそのままにしてエラーを回避する方法はありませんが、ファイル名を変更することで回避することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1です。 では、確実にブックを指定できるこんなのは? Dim test1 As Workbook Dim test2 As Workbook Set test1 = Application.Workbooks.Open("C:\temp\○○.xls") Set test2 = Application.Workbooks.Open("c:\Temp\○○.txt") ActiveCell.SpecialCells(xlLastCell).Select ix1 = ActiveCell.Row Range("A3:AG" & ix1).Copy test1.Activate ActiveSheet.Range("A2").PasteSpecial Paste:=xlValues, Operation:=xlNone
その他の回答 (2)
- mt2008
- ベストアンサー率52% (885/1701)
ANo.1です。 マクロ自体は○○.xlsにあるのですよね? だとしたら ThisWorkbook.Activate なら間違いなく○○.xlsがアクティブになります。 これで駄目なら実際のコードを提示願います。
補足
ご回答ありがとうございます!! マクロは ○○_m.xls という、マクロ実行用のファイルにあります。 コードは以下の通りです。 Sub auto_open() Application.Workbooks.Open Filename:="C:\temp\○○.xls" Workbooks.OpenText Filename:="c:\Temp\○○.txt" ActiveCell.SpecialCells(xlLastCell).Select ix1 = ActiveCell.Row Range("A3:AG" & ix1).Copy Windows("○○.xls").Activate Range("A2").PasteSpecial Paste:=xlValues, Operation:=xlNone (続く…) 凝ったコードではありません; また、別のパターンなのですが、 ○○.txtと○○.csvというファイルがあった場合、 ○○.txtと指定しているにもかかわらず○○.csvを 読もうとしてしまいエラーとなった事もあります。 おくれましたが、Excel2003で実行しています。 よろしくお願い致します。。
- mt2008
- ベストアンサー率52% (885/1701)
マクロ中でちゃんと拡張子を指定していれば問題はないかと思われます。 > ・貼り付け先の○○.xlsをアクティブにしようとするが、 > ○○.txtがアクティブになったまま。 Windows("○○").Activate と、していませんか? Windows("○○.xls").Activate と、拡張子も付けてください。 拡張子非表示の場合、同じ名前のウィンドウが複数存在出来てしまいますので単にWindows("○○").Activate とした場合は後に開いたウィンドウの方がアクティブになった様に思います。
お礼
お付き合いありがとうございました! とても嬉しかったです。
補足
ご回答ありがとうございます! お待ちしておりました^^ はい。 Windows("○○.xls").Activate と マクロのなかで拡張子を指定しています。 逆に言うと拡張子でしか区別できないので…。 でもなぜか Windows("○○.xls").Activate の実行後でも ○○.txt がアクティブになった ままなのです。 ちなみに拡張子を表示しておくと正常に動きます。 実際のコードを載せた方がいいでしょうか??
お礼
ごめんなさい…。 「No.2さんへの…」って。 同じ方でしたね。
補足
ありがとうございます!! そうですね。開いたブックが正しければこれでいいと思います! しかし、No..2さんへの補足に書かせていただいた例でいくと、 もしかしたら Application.Workbooks.Open("C:\temp\○○.xls") で○○.txtが開いてしまうのではないかとの不安が残ります。 貴重なご意見ありがとうございました♪ また何かわかりましたら教えてくださいね。