例文を使って繰り返し業務を時短

【マクロ・VBA】名前をつけてエクセルファイルに保存

エクセル、マクロ、VBAでエクセルファイルを名前を付けて保存する VBA

(保存先を指定して)名前をつけて保存する4つの方法

1.名前をつけてファイルに保存する方法

SaveAsメソッドを使用することで、現在のブックを新しいファイル名で保存することができます。以下は、SaveAsメソッドを使用してブックを保存する例です。

ActiveWorkbook.SaveAs Filename:="C:\Users------パスを指定-------------.xlsx"

2.GetSaveAsFilename関数を使用する方法

GetSaveAsFilename関数を使用することで、保存先のファイル名をダイアログボックスから選択することができます。以下は、GetSaveAsFilename関数を使用してブックを保存する例です。

Dim fileName As String
fileName = Application.GetSaveAsFilename(InitialFileName:="newfile.xlsx", _
                                          FileFilter:="Excel Workbook (*.xlsx), *.xlsx")
If fileName <> False Then
    ActiveWorkbook.SaveAs Filename:=fileName
End If

3.FileDialogオブジェクトを使用する方法

FileDialogオブジェクトを使用することで、保存先のファイル名をダイアログボックスから選択することができます。以下は、FileDialogオブジェクトを使用してブックを保存する例です。

Dim fileDialog As FileDialog
Set fileDialog = Application.FileDialog(msoFileDialogSaveAs)
fileDialog.InitialFileName = "newfile.xlsx"
fileDialog.Filters.Clear
fileDialog.Filters.Add "Excel Workbook", "*.xlsx"
If fileDialog.Show = -1 Then
    ActiveWorkbook.SaveAs Filename:=fileDialog.SelectedItems(1)
End If

4.FileSystemObjectを使用する方法

FileSystemObjectを使用することで、ファイルの保存先やファイル名を直接指定することができます。以下は、FileSystemObjectを使用してブックを保存する例です。

Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fileName As String
fileName = "C:\Users\username\Documents\newfile.xlsx"
If Not fso.FileExists(fileName) Then
    ActiveWorkbook.SaveAs Filename:=fileName
End If

アクティブシートを名前を付けて保存

*ハイライトの箇所を修正して利用してください

*保存先:使用しているファイルと同じ場所

Sub アクティブシートのみ名前をつけて保存()
        
ThisWorkbook.ActiveSheet.Copy
A = ThisWorkbook.path & "\" & "保存_" & VBA.Format(Now, "yyyymmdd " & "hh-mm-ss")
ActiveWorkbook.SaveAs FileName:=A
    
Application.CutCopyMode = False
ActiveWorkbook.Close

MsgBox "完了"
End Sub

解説

  • 3行目:アクティブシートをコピー
  • 4行目:現在のファイルと同じ保存先に「保存」+日付の名前をつけて保存
        *任意のファイル名に変更して利用してください
  • 8行目:ファイルを閉じる

保存先を指定してアクティブシートのみ名前を付けて保存

*指定する保存先のフォルダに名前をつけて保存

 ⇒”C:\ ~~ ¥”

Sub 特定シートだけ別のフォルダに保存()

ThisWorkbook.ActiveSheet.Copy
ActiveWorkbook.SaveAs _
FileName:="C:(ここにファイルパスを記入)\" & "保存_" & VBA.Format(Now, "yyyymmdd " & "hh-mm-ss"), _
FileFormat:=xlOpenXMLWorkbook

MsgBox "完了"
End Sub

解説

  • 5行目:保存先のPassを記入

ダイアログ開いてアクティブシートを名前をつけて保存

*保存先:ダイアログを開いて指定

Sub ファイル保存_ダイアログ開く()
    Dim FileName As Variant
    FileName = Application.GetSaveAsFilename( _
        InitialFileName:="規定の名称.xlsx", _
        FileFilter:="Excel2003以前,*.xls,Excelファイル,*.xlsx,Excelマクロブック,*.xlsm", _
        FilterIndex:=2)
    If FileName = False Then
        Exit Sub
    End If
    ActiveWorkbook.SaveAs FileName
MsgBox "完了"
End Sub

・FileName = Application.GetSaveAsFilename(InitialFileName:=”規定の名称.xlsx”,
 FileFilter:=”Excelファイル,*.xlsx”)

ダイアログ開いてアクティブシートを名前をつけて保存 Part2

Sub SaveActiveSheetAs()
    Dim fileName As Variant
    fileName = Application.GetSaveAsFilename(InitialFileName:=ActiveWorkbook.Name, _
        FileFilter:="Excel Files (*.xlsx), *.xlsx")
    If fileName <> False Then
        ActiveSheet.Copy
        With ActiveWorkbook
            .SaveAs fileName
            .Close False
        End With
    End If
End Sub

コメント

タイトルとURLをコピーしました