Для создания новой книги вы должны использовать Workbooks.Add .Чтобы открыть существующий, вы должны использовать Workbooks.Open и затем ссылаться на лист в этой книге.
Чтобы изменить имя файла, вы сохраните его под новым именем, используя SaveAs метод.
Sub Test()
Dim wb As Workbook
Dim ws As Worksheet
Dim FileName As String
Set wb = Workbooks.Add 'Creates a new workbook with default name.
'Set wb = Workbooks.Open("<path to folder>\" & FileName & ".xlsm") 'Open an existing file.
Set ws = wb.Worksheets("Sheet1")
wb.SaveAs "<path to folder>\" & FileName & ".xlsm" 'Save and rename here.
With ws
.Range("A1") = "Adding some text to this cell"
End With
End Sub
В качестве дополнительного примера приведенный ниже код создаст две рабочие книги перед копированием листа из первой рабочей книги в конец второй рабочей книги.
Sub Test1()
Dim wb As Workbook, wb1 As Workbook
Dim ws As Worksheet
'Create first workbook so it contains only 1 sheet (xlWBATWorksheet)
', reference Sheet1 and add some data to it.
Set wb = Workbooks.Add(xlWBATWorksheet)
Set ws = wb.Worksheets("Sheet1")
ws.Range("A1") = "This cell populated in first workbook."
'Create second workbook with default number of sheets
'and copy Sheet1 from first book to the end of this one.
Set wb1 = Workbooks.Add
ws.Copy After:=wb1.Sheets(wb1.Sheets.Count)
End Sub
Снова отредактируйте:
Чтобы определить имя книги на основе WeekNumber_Invoice_Date
, вы можете использовать:
Sub Test2()
Dim wb As Workbook
Dim sPath As String
Dim dDate As Date
dDate = Date 'Todays date
sPath = "C:\MyFolder\"
sPath = sPath & _
WorksheetFunction.WeekNum(dDate, 2) & "_Invoice_" & Format(dDate, "ddmmyyyy") & ".xlsm"
'Open if already exists.
'Set wb = Workbooks.Open(sPath)
'Create and SaveAs new name.
Set wb = Workbooks.Add
wb.SaveAs sPath
End Sub
Это будетукажите путь к файлу C:\MyFolder\43_Invoice_22102018.xlsm
на основе текущей даты 22 октября '18 .
Примечание. Функция WEEKNUM считает неделю, содержащую 1 января, первой неделей в году.