電子書籍の厳選無料作品が豊富!

ExcelのVBAで、同じ名前で拡張子が違うファイルを操作するマクロを使用しています。(○○.txtと○○.xlsなど)

フォルダオプションで「拡張子を表示しない」設定になっていた場合におこりうる不具合を教えてください。

私は以下のような不具合に遭遇しました。
○○.txtを読み込み○○.xlsにコピペするマクロ
 ・まず○○.xlsを開く。
 ・次に○○.txtを開き中身をコピー。
 ・貼り付け先の○○.xlsをアクティブにしようとするが、
  ○○.txtがアクティブになったまま。

そもそも同じ名前なのがいけないとは思いますが、ファイル名はそのままでエラーを回避できる方法があれば、それも知りたいです。

よろしくお願いします。

A 回答 (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

この回答への補足

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

補足日時:2010/04/09 13:48
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/09 14:00

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で実行しています。
よろしくお願い致します。。

補足日時:2010/04/09 12:00
    • good
    • 0

マクロ中でちゃんと拡張子を指定していれば問題はないかと思われます。



>  ・貼り付け先の○○.xlsをアクティブにしようとするが、
>   ○○.txtがアクティブになったまま。

Windows("○○").Activate と、していませんか?
Windows("○○.xls").Activate と、拡張子も付けてください。

拡張子非表示の場合、同じ名前のウィンドウが複数存在出来てしまいますので単にWindows("○○").Activate とした場合は後に開いたウィンドウの方がアクティブになった様に思います。

この回答への補足

ご回答ありがとうございます!
お待ちしておりました^^

はい。 Windows("○○.xls").Activate と
マクロのなかで拡張子を指定しています。
逆に言うと拡張子でしか区別できないので…。
でもなぜか Windows("○○.xls").Activate
の実行後でも ○○.txt がアクティブになった
ままなのです。
ちなみに拡張子を表示しておくと正常に動きます。

実際のコードを載せた方がいいでしょうか??

補足日時:2010/04/09 11:01
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/13 10:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!