[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『【マクロ】シートを別ファイルにコピーし、セルの値をファイル名として保存』(MF)
シートを別ファイルにコピーし、セルの値をファイル名として保存したいのですがセルの値をファイル名にするところでエラーとなってしまいました。
お手数ですが、書き方を教えてください。
元ファイルから"1.支払明細_提出用", "2.請求書_提出用", "3.覚書_提出用"シートを別ファイルへ「移動またはコピー」し、元ファイルの"SOP"シートのA2セルの値をコピー先のファイル名としたい。
'
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 >
■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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.