Создать новую книгу, затем использовать это имя WB в качестве переменной - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь создать новую рабочую книгу для сохранения рабочих таблиц. Я создаю новую книгу, запрашиваю имя. Это все работает, моя проблема в том, что мне нужно создать переменную с этим новым именем, чтобы мне было легче переходить назад и вперед при копировании в нее таблиц.

Sub SaveInfo()
'
' SaveInfo Macro
'
Dim NWB As Workbook
Dim TWB As Workbook
Dim Fname As String

Dim MyTargetFile As Variant
Dim UserInput As Variant
Dim WBName As String

Workbooks.Add 
MyOpenedFile = ActiveWorkbook.Name

'Here get a file name from user
UserInput = Application.InputBox(prompt:="Enter File name to save")

If UserInput <> "" Then
'Save the opened excel file by renaming it , here UserInput is used  as new file name.
Workbooks(MyOpenedFile).SaveAs Filename:="G:\Clearwater\Archive Data\" & UserInput
End If
'Here I try to get that name of the new workbook
    WBName = ThisWorkbook.Name
    'Here I try to declare that workbook as a variable
    Set NWB = Workbooks("WBName")

    Set TWB = Workbooks("Historical Data Creation Tool ERIK New.xlsm")

Здесь я снова и снова буду называть эту «Новую рабочую книгу» NWB

TWB.Activate
Sheets("CW_AmortEarn").Select
Sheets("CW_AmortEarn").Copy Before:=NWB.Sheets(1)

TWB.Activate
Sheets("CW_FMV_FY").Select
Sheets("CW_FMV_FY").Copy Before:=NWB.Sheets(1)

Я застрял. Возможно, есть лучший способ, чем то, что я пытаюсь сделать здесь. Любые идеи будут полезны.

1 Ответ

1 голос
/ 08 октября 2019

Редактировать: @BigBen уже указал это в комментарии ...

Workbooks.Add возвращает ссылку на добавленную рабочую книгу, поэтому запишите ее и используйте:

Dim wb As Workbook, UserInput 

Set wb = Workbooks.Add()

UserInput = Application.InputBox(prompt:="Enter File name to save")

If UserInput <> "" Then
    wb.SaveAs Filename:="G:\Clearwater\Archive Data\" & UserInput
End If

'wb is still a reference to the newly-added workbook
Debug.Print wb.Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...