[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『EXCEL VBA sheet1を新規BOOKにコピー、名前をつけて保存』(kashi)
VBA素人となります。タイトル通りですが、マクロを登録しているsheet1を新規BOOKにコピーし、その新規bookの名前を付けて保存したいです。コードを教えていただけますでしょうか。
< 使用 Excel:unknown、使用 OS:unknown >
VBAで新規ブックにシートをコピーする | Excel作業をVBAで効率化
https://vbabeginner.net/copy-sheet-to-new-workbook/
VBAでブックに名前を付けて保存する(SaveAs) | Excel作業をVBAで効率化
https://vbabeginner.net/save-the-workbook-as/
(白茶) 2023/06/15(木) 15:57:38
既に適切な回答をいただいています。蛇足かもしれませんが、追記します。 その動作をマクロ記録してみたらどうでしょうか。 ほぼそのまま使えそうなコードが得られるように思われます。 (xyz) 2023/06/15(木) 16:00:54
(白茶) 2023/06/15(木) 18:17:35
>名前をsheet1のA1セルの情報にして保存をしたい それでは、現時点でのコードを示してください。 それに手を加えましょう。
(xyz) 2023/06/15(木) 19:10:40
xyz様、ありがとうございます。コードは以下の通りとなります。以下の通り、仮に"test"というタイトルとしておりますが、それをsheet1のA1セルの情報をタイトルとして引っ張ってきたいです。
Sheets("雛型").Select Sheets("雛型").Copy Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWorkbook.SaveAs Filename:="C:\Users\221882\Desktop\test.xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
MsgBox "指定場所へ保存しました" (kashi) 2023/06/19(月) 08:37:56
例えば、保存する部分のコードをこんな風にしたらどうでしょうか。 Dim filePath As String filePath = "C:\Users\221882\Desktop\" & ThisWorkbook.Worksheets("Sheet1").Range("A1") & ".xlsx" ActiveWorkbook.SaveAs Filename:=filePath, _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
(ちなみに、保存以外のところは問題ないという前提です。 Selection.Copy が実行されるときのSelectionは何になっているのか不定のような気もします。 コードの一部なんでしょうか。 少し気になりました。) (xyz) 2023/06/19(月) 09:34:41
'outlookを起動する Dim toaddress, ccaddress, bccaddress As String '変数設定:To宛先、cc宛先、bcc宛先 Dim subject, mailBody, credit As String '変数設定:件名、メール本文、クレジット、添付 Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mailItemObj As Outlook.MailItem 'Outlookで使用するオブジェクト生成
'差出人、本文、署名を取得する--- toaddress = Range("B10").Value 'To宛先 ccaddress = Range("B11").Value 'Cc宛先 subject = Range("B12").Value & Range("C12").Value & Range("G12").Value & Range("D12").Value & Range("G12").Value & Range("E12").Value & Range("G12").Value & Range("F12").Value '件名 mailBody = Range("B13").Value '本文 credit = Range("B14").Value 'クレジット
'メールを作成して、差出人、本文、署名を入れ込む---
Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = 2 'htmlテキストに変更 mailItemObj.To = toaddress 'to宛先をセット mailItemObj.CC = ccaddress 'ccをセット mailItemObj.subject = subject '件名をセット mailItemObj.Body = mailBody & vbCrLf & vbCrLf & credit 'メール本文 改行 改行 クレジット
'---コード6|メールを送信する--- 'mailItemObj.Save '下書き保存 mailItemObj.Display 'メール表示 (kashi) 2023/06/19(月) 11:00:12
例えば、 https://access-skill.com/vba-create-outlook-mail/ などに書かれています。
(xyz) 2023/06/19(月) 11:20:02
Sub 名もなきマクロ() Dim ファイルパス As String Dim mailItemObj As obj
With ThisWorkbook.Sheets("雛型") .Copy
With Workbooks(Workbooks.Count) .Worksheets(1).UsedRange.Copy .Worksheets(1).UsedRange.PasteSpecial Paste:=xlPasteValues
.SaveAs _ Filename:="C:\Users\221882\Desktop\" & .Worksheets(1).Range("A1").Value, _ FileFormat:=xlOpenXMLWorkbook
ファイルパス = .FullName
.Close False '★添付するファイルは閉じる End With
Set mailItemObj = CreateObject("Outlook.Application").CreateItem(olMailItem)
mailItemObj.BodyFormat = 2 mailItemObj.To = .Range("B10").Value mailItemObj.CC = .Range("B11").Value mailItemObj.Subject = Join(Array(.Range("B12").Value & .Range("C12").Value, .Range("D12").Value, .Range("E12").Value, .Range("G12").Value), .Range("G12").Value) mailItemObj.Body = .Range("B13").Value & vbCrLf & vbCrLf & .Range("B14").Value
mailItemObj.【添付ファイルを追加する命令】 ファイルパス mailItemObj.Display End With End Sub
全体の提示がないので詳細がわかりませんが↑のように、
(1) 添付する段階では該当ファイルは閉じておく (2) Selectionに依存しない (3) 変数盛沢山にしない
というような考え方もあるんじゃないかと思いました。参考まで。
(もこな2) 2023/06/19(月) 18:37:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.