[[20230615145439]] 『EXCEL VBA sheet1を新規BOOKにコピー、名前をつax(kashi) ページの最後に飛ぶ

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

 

『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

白茶様、XYZ様 ご回答どうもありがとうございます。そのままマクロ記録でもできました。追加で気になりましたが、FILEの名前をsheet1のA1セルの情報にして保存をしたいのですが、コードをお教えいただくことはできますでしょうか。A1セルをFILEのタイトルにしたいです。よろしくお願いします!
(K) 2023/06/15(木) 18:14:24

セル値でExcelファイルを保存する方法は?
https://ja.extendoffice.com/documents/excel/2266-excel-save-file-as-cell-value.html

(白茶) 2023/06/15(木) 18:17:35


 >名前をsheet1のA1セルの情報にして保存をしたい
 それでは、現時点でのコードを示してください。
 それに手を加えましょう。

(xyz) 2023/06/15(木) 19:10:40


白茶様、ありがとうございます。すみません、URL確認しましたがよくわかりませんでした。。。

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

xyz様、無事に出力できました!本当にありがとうございます。
そして申し訳ございません。一発でお伺いできず恐縮ですが、最後にもう一つ関連の疑問がでてまいりました。このexcel fileをデスクトップ上に保存すると同時に、OUTLOOKメールを起動しdraftまで作成するようVBAを設定しているのですが、このoutlookメールに作成したfileを自動で添付させるようにVBAを組むことは可能なのでしょうか。メールのコードは以下の通りとなります。もし分かりましたらどうぞよろしくお願いいたします。

 '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

「outlook vba 添付ファイル」でネット検索しましょう。
 例えば、
https://access-skill.com/vba-create-outlook-mail/
 などに書かれています。

(xyz) 2023/06/19(月) 11:20:02


無事添付することができました。どうもありがとうございました。
(kashi) 2023/06/19(月) 15:34:32

解決したようですが何点か。
    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.