[[20190802101748]] 『今開いているファイル名を変更してもコードを変え』(長州力) ページの最後に飛ぶ

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

 

『今開いているファイル名を変更してもコードを変えずに動かすには』(長州力)

初歩的な質問ですが宜しくお願いします。。
下記のコードを作成しました。

Sub CcopyPpaste()

'  データ転記
'

    Workbooks.Open FileName:=ThisWorkbook.Path & "\DATA_01.xlsm"
    Sheets("Sheet1").Select
    Range("A1:Z3").Select
    Selection.Copy
    Windows("転記Ver1.xlsm").Activate
    Range("D8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False '
'    Selection.Copy

'  参照元のファイルを閉じる
'

    Application.DisplayAlerts = False
    If Workbooks.Count > 1 Then 'ファイルが複数開かれているか確認
    For Each myBK In Workbooks

' 現在選択しているファイル以外の名前のファイルを閉じる

    If myBK.Name <> ActiveWorkbook.Name Then     myBK.Close      End If
    Next
    End If
    Application.DisplayAlerts = True
'
    ActiveWorkbook.Save '  本マクロファイルを上書き保存する
End Sub

簡単に説明しますと、「DATA_01.xlsm」のSheet1のA1セル〜Z3セルの値を
そのまま本ファイル「転記Ver1.xlsm」のD8セル以降に貼り付けます。
その後、参照元の「DATA_01.xlsm」を閉じ、本マクロファイル
「転記Ver1.xlsm」を上書き保存して終了します。
ここで質問ですが、本マクロファイル「転記Ver1.xlsm」の名前を変更しても
これらのコードを変更せずに動かすには、どのようにしたらよいでしょうか。

現状ですと、マクロファイル名を「転記Ver2.xlsm」と変更した場合、
  Windows("転記Ver1.xlsm").Activate
でファイル名を指定していますので、ここを書き換えなければなりません。
  ActiveWorkbook.Save
のように、今開いているファイルの名前を変更してもコードを変えずに
動かすには、どのようにしたら宜しいでしょうか。

初歩的な質問で申し訳ありませんが、宜しくお願い致します。

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


他のブックを開く前に、元シートの情報を変数に代入しておけば良いです。

しかし、アクティブなものに頼ったぜい肉だらけのコードは美しくないので、以下のようにしてはどうでしょうか?(ニックネームを見ると、無駄な肉が付いている事を良しとする方ではないと思われますので)

 Sub test()
    Dim ws As Worksheet

    Set ws = ActiveSheet

    With Workbooks.Open(ThisWorkbook.Path & "\DATA_01.xlsm", False, True)
        .Sheets("Sheet1").Range("A1:Z3").Copy
        ws.Range("D8").PasteSpecial Paste:=xlPasteValues
        .Close False
    End With
    ActiveWorkbook.Save
 End Sub
(???) 2019/08/02(金) 11:26

どうも有り難うございました。
大変助かりました。

随分すっきりとまとまるのですね。
頭の中がぜい肉だらけなので、いい勉強になりました。

また質問させて頂くことがあるかもしれませんが
その時は宜しくお願い致します。
(長州力) 2019/08/02(金) 11:50


また教えて頂きたいのですが、これを実行すると、DATA_01.xlsmがクローズする際に保存するかどうかメッセージが出ます。このメッセージが出ない様にするには、どうすればいいですか。
度々申し訳ありませんが、宜しくお願い致します。

(長州力) 2019/08/02(金) 15:23


メッセージが出ないように .Close False のように指定したのですが、ブック内のマクロが動いたのですかね? ブックを開く前と(Falseにする)、Close した後に(Trueにする)、以下を加えてみてください。
    Application.DisplayAlerts = False
    Application.EnableEvents = False

    Application.EnableEvents = True
    Application.DisplayAlerts = True
(???) 2019/08/02(金) 17:41

連絡遅くなり申し訳ありません。
きちんと動作する様になりました。
どうもありがとうございました。
また宜しくお願い致します。
(長州力) 2019/08/04(日) 08:59

コメント返信:

[ 一覧(最新更新順) ]


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