※ ChatGPTを利用し、要約された質問です(原文:Excelのマクロで、セル内の文字をファイル名にしたい)
Excelマクロでセル内の文字をファイル名にする方法
このQ&Aのポイント
Excelのマクロを使用してセル内の文字をファイル名にする方法について説明します。
具体的な手順として、以下の動作をするマクロを作成します。1)指定されたExcelファイルを開き、それを指定されたファイル形式に変換します。2)指定されたファイル名にコピーします。3)コピーしたファイルを削除します。
しかし、マクロの中で構文エラーか型に一致しないというエラーが発生しています。セルの内容をファイル名に取得する方法についてアドバイスをいただきたいです。
Excelのマクロで、セル内の文字をファイル名にしたい
”プロト.xls”というExcelファイルの中に、以下の動作をするマクロを作成したいのです。
(1)”C:\顧客\顧客納期連絡.xls”というExcelファイルを開き、
それを”C:\顧客\A.csv”という名前のcsvファイルにする。
(2)”C:\顧客\A.csv”を”xxxxxxxxxxxxxxxxxx”(※注1)という名前にしてコピーする。
※注1:”xxxxxxxxxxxxxxxxxx”の部分は、”プロト.xls”ファイルのSheet”マスター”のセルD9から取得させる。
そのセルは、 C:\顧客\ABCDEF0215.csv と記述しています。
(3)コピー後、”C:\顧客\A.csv”を削除する。
-------------------------------------------------------------------
Sub 顧客納期連絡()
'
' 顧客納期連絡 Macro
' マクロ記録日 : 2010/2/15 ユーザー名 : xxxxxxx
'
'
ChDir "C:\顧客"
Workbooks.Open Filename:="C:\顧客\顧客納期連絡.xls"
ActiveWorkbook.SaveAs Filename:="C:\顧客\A.csv", FileFormat:=xlCSV, _
CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
ActiveWorkbook.Save
Dim fname1 As String
Dim fname2 As String
fname1 = "C:\顧客\A.csv"
fname2 = Workbooks("プロト.xls"), Sheets("マスター"), Cells("D9")
FileCopy fname1, fname2
Kill "C:\顧客\A.csv"
End Sub
-------------------------------------------------------------------
上記のマクロを作成したのですが、FileCopyの行で、構文エラーか型に一致していない、
というエラーになりマクロ再生が停止します。
セルの内容をファイル名にしたいのですが、何か良い方法はございませんでしょうか?
私は超初心者なので、何卒宜しくお願い致します。
お礼
>エラーになっているのはFileCopyの行ではなく、その上の行では無いですか? 仰るとおり、FileCopyの行ではなく、fname2の行でした。 何か勘違いしていました。 申し訳ございませんでした。 >fname2 = Workbooks("プロト.xls"), Sheets("マスター"), Cells("D9") >↓ >fname2 = Thisworkbook.Sheets("マスター").Range("D9") > >これで動きそうな気がします。 ご教示いただいた通りに修正したところ、正常に動作しました。 とても助かりました。 当方、文法も解らずに勘で作成したので、動きませんでした。 ご教示いただき、誠に有難うございました。