[[20170518014439]] 『VBAで複数のシートをそれぞれCSVに出力するプログ』(KAZ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで複数のシートをそれぞれCSVに出力するプログラムの途中、元ファイルが出力したCSVになってします。』(KAZ)

現在、VBAで複数のシートをそれぞれCSVに出力するプログラムを作っています。
問題は、SaveAsで、セーブした瞬間に、何故か制御がCSVファイルの方に移ってしまい、その後、元のBOOKに記してあるプログラムに飛べなくなってしまい、
そこでストップしてしまう自称があります。
色々WorkbookやWorksheetなどをsaveasの前にセットしておいて、
SaveAsの後、戻ろうとしてもActiveSheetがCSVファイルのままになっていて、
悩んでいます。

Private Sub CSV_OUT(ByVal sheetnm As String)
Path = ActiveWorkbook.Path + "\CSV\"

Application.DisplayAlerts = False

        filen = Path + sheetnm + ".csv"

        Sheets(sheetnm).Select
        Selection.Copy

        With ActiveWorkbook
        .SaveAs Filename:=filen, FileFormat:=xlCSV, CreateBackup:=False
        End With
==>この瞬間から元のExcelファイルではなく出力したCSVファイルになってしまい、元ファイルの違うプログラムの処理が行えない。

同じ様な質問は色々捜したのですが、これといった方法がなく悩んでいます。
よろしくご教授ください。

< 使用 Excel:Excel2016、使用 OS:Windows7 >


何故か、ではなくて、そういう仕様だからでしょうね。後から開いたブックがアクティブになるのは当たり前なので。

対策は、いちいちSelectせず、対象シートをWorkSheetオブジェクトにでも代入しておいて、これを操作しましょう。
アクティブなシートを操作するコードを動かしていると、途中で他のブックをクリックした場合なんかに誤動作する元です。

または、手っ取り早く解決したいなら、対象としたいシートをSelectまたはActivateし直しましょう。お薦めの解決方法ではありませんが。
(???) 2017/05/18(木) 09:17


ありがとうございます。
とりあえず、別のWorksheetで対応する形で解決できました。
しかし、、、これが仕様とは何か合点がいきませんが。。。

(KAZ) 2017/05/18(木) 12:04


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.