[[20210316105652]] 『【マクロ】シートを別ファイルにコピーし、セルの』(MF) ページの最後に飛ぶ

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

 

『【マクロ】シートを別ファイルにコピーし、セルの値をファイル名として保存』(MF)

シートを別ファイルにコピーし、セルの値をファイル名として保存したいのですがセルの値をファイル名にするところでエラーとなってしまいました。
お手数ですが、書き方を教えてください。


元ファイル
ひとつめのシート:SOP
ふたつめのシート:1.支払明細_提出用
みっつめのシート:2.請求書_提出用
よっつめのシート:3.覚書_提出用

元ファイルから"1.支払明細_提出用", "2.請求書_提出用", "3.覚書_提出用"シートを別ファイルへ「移動またはコピー」し、元ファイルの"SOP"シートのA2セルの値をコピー先のファイル名としたい。


下記の"C:\支払明細\202103"の「202103」のところを「" & Range("A2").Text & "」にしてみたりしたのですが「'SaveAs'メソッドは失敗しました:'_Workbook'オブジェクト」エラーが出てしまいました。


Sub ファイル名つけて保存()
'
' ファイル名つけて保存 Macro
'

'

    Range("A1").Select
    Sheets(Array("1.支払明細_提出用", "2.請求書_提出用", "3.覚書_提出用")).Select
    Sheets("SOP").Activate
    Sheets(Array("1.支払明細_提出用", "2.請求書_提出用", "3.覚書_提出用")).Copy
    ChDir _
        "C:\支払明細"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\支払明細\202103" & ".xlsx", _
         FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Windows("支払明細作成.xlsm").Activate
    Sheets("SOP").Select
    MsgBox ("ファイル保存完了")
End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


■1
VBAの世界では基本的にシートやセル(オブジェクトといいます)を明示すれば、いちいち選択したりアクティブにしたりする必要はありません。

■2
「標準モジュール」で「Range("A1")」のような書き方をした場合、「ActiveSheet.Range("A1")」のようにアクティブシートを指定したものとして扱われます。
また、「Worksheets(1)」のように、ブックを指定しない場合も同様にアクティブブックを指定したものとして見なされるルールです。
したがって、想定外のシートやブックを対象にしないためにも、1と併せて対象のオブジェクトは明示したほうがよいとおもいます。

■3
SaveAsメソッドの前に、カレントフォルダの変更をおこなっていますが、SaveAsメソッドでちゃんとフルパスを指定すれば、カレントフォルダの変更は必要ないです。
(提示されたものはフルパス指定してますし)

■4
>下記の"C:\支払明細\202103"の「202103」のところを「" & Range("A2").Text & "」にしてみたりした
実際にどのように記述したのか少々気になりますが、少なくとも「ThisWorkbook.Worksheets("SOP").Range("A2").Text」としないと目的のセルが参照できないとおもいます。

■5
以上を踏まえるとこんな感じではないでしょうか

    Sub ファイル名つけて保存_改()
        Stop 'ブレークポイントの代わり

        Sheets(Array("1.支払明細_提出用", "2.請求書_提出用", "3.覚書_提出用")).Copy

        Workbooks(Workbooks.Count).SaveAs _
            Filename:="C:\支払明細\" & ThisWorkbook.Worksheets("SOP").Range("A2").Text, _
            FileFormat:=xlOpenXMLWorkbook

        MsgBox ("ファイル保存完了")
    End Sub

(もこな2) 2021/03/16(火) 13:46


ありがとうございます。
こんなにシンプルに記載できるんですね。
いろいろ活用いたします。
本当に助かりました。
(MF) 2021/03/16(火) 15:12

コメント返信:

[ 一覧(最新更新順) ]


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