• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同じ名前で拡張子が違うファイル)

ExcelのVBAで同じ名前で拡張子が違うファイルを操作する際に生じる不具合と回避方法

このQ&Aのポイント
  • ExcelのVBAで同じ名前で拡張子が異なるファイルを操作する際には、拡張子を表示しない設定になっている場合に不具合が生じることがあります。
  • 具体的な不具合としては、ファイルを開いてコピーした後に貼り付け先のファイルをアクティブにしようとしても、元のファイルがアクティブなままとなることがあります。
  • 同じ名前で拡張子が違うファイルを操作する場合、ファイル名をそのままにしてエラーを回避する方法はありませんが、ファイル名を変更することで回避することができます。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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

sekkii
質問者

お礼

ごめんなさい…。 「No.2さんへの…」って。 同じ方でしたね。

sekkii
質問者

補足

ありがとうございます!! そうですね。開いたブックが正しければこれでいいと思います! しかし、No..2さんへの補足に書かせていただいた例でいくと、 もしかしたら Application.Workbooks.Open("C:\temp\○○.xls") で○○.txtが開いてしまうのではないかとの不安が残ります。 貴重なご意見ありがとうございました♪ また何かわかりましたら教えてくださいね。

その他の回答 (2)

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

ANo.1です。 マクロ自体は○○.xlsにあるのですよね? だとしたら ThisWorkbook.Activate なら間違いなく○○.xlsがアクティブになります。 これで駄目なら実際のコードを提示願います。

sekkii
質問者

補足

ご回答ありがとうございます!! マクロは ○○_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)
回答No.1

マクロ中でちゃんと拡張子を指定していれば問題はないかと思われます。 >  ・貼り付け先の○○.xlsをアクティブにしようとするが、 >   ○○.txtがアクティブになったまま。 Windows("○○").Activate と、していませんか? Windows("○○.xls").Activate と、拡張子も付けてください。 拡張子非表示の場合、同じ名前のウィンドウが複数存在出来てしまいますので単にWindows("○○").Activate とした場合は後に開いたウィンドウの方がアクティブになった様に思います。

sekkii
質問者

お礼

お付き合いありがとうございました! とても嬉しかったです。

sekkii
質問者

補足

ご回答ありがとうございます! お待ちしておりました^^ はい。 Windows("○○.xls").Activate と マクロのなかで拡張子を指定しています。 逆に言うと拡張子でしか区別できないので…。 でもなぜか Windows("○○.xls").Activate の実行後でも ○○.txt がアクティブになった ままなのです。 ちなみに拡張子を表示しておくと正常に動きます。 実際のコードを載せた方がいいでしょうか??

関連するQ&A