Помощь с справочной ячейкой Excel VBA для перемещения листа в новую книгу и сохранения - PullRequest
0 голосов
/ 07 декабря 2018

Я просмотрел этот и другие форумы, чтобы создать код для выполнения этой задачи.У меня нет опыта работы с VBA, поэтому, пожалуйста, будьте осторожны.

По сути, я бы хотел, чтобы пользователь заполнил форму Excel и нажал кнопку.Кнопка будет ссылаться на то, что было выбрано в ячейке K4, а затем на основе этого выбора скопировать скрытый лист в новую книгу и затем предложить пользователю сохранить.

Код, который я использую:

Private Sub RSM_Click()
    Dim newWkbk As Workbook
    Dim newWksht As Worksheet
    Dim wksht As Worksheet
    Dim test As String

    If StrComp(Me.Range("K4").Text, "INTERNAL USB", vbTextCompare) = 0 Then
        test = "RSM_InternalUSB"
    ElseIf StrComp(Me.Range("K4").Text, "INTERNAL 24 HR", vbTextCompare) = 0 Then
        test = "RSM_Internal24Hr"
    Else
        test = "RSM_External"
    End If


    For Each wksht In ThisWorkbook.Worksheets
        If wksht.Name = test Then
            wksht.Visible = xlSheetVisible
            Set newWksht = wksht.Copy
            newWksht.Name = "RSM Onboarding Guide"
            Set newWkbk = newWksht.Parent
        End If
    Next wksht

    Dim varResult As Variant
    Dim ActBook As Workbook

    'displays the save file dialog
    varResult = Application.GetSaveAsFilename(FileFilter:= _
             "Excel Files (*.xlsm), *.xlsm", Title:="RSM Guide", _
            InitialFileName:="\\Onboarding\")

    'checks to make sure the user hasn't canceled the dialog
    If varResult <> False Then
        ActiveWorkbook.SaveCopyAs Filename:=varResult
        Exit Sub
    End If
End Sub

Однако я получаю

Ошибка компиляции: ожидаемая функция или переменная

на цепочке Set newwksht = wksht.Copy.Копия ему не нравится.

Я даже не знаю, сработает ли часть сохранения, так как я не смог пройти через это

1 Ответ

0 голосов
/ 08 декабря 2018

может попробовать это:

If GetSheet(test, newWksht) Then
    With newWksht
        .Visible = xlSheetVisible
        .Copy ' this will make a copy of the referenced sheet in a newly created workbook
        ActiveSheet.Name = "new"
        .Visible = xlSheetHidden
    End With
    Dim varResult As Variant
   'displays the save file dialog
    varResult = Application.GetSaveAsFilename(FileFilter:= _
             "Excel Files (*.xls*), *.xls*", Title:="RSM Guide", _
            InitialFileName:="\\Onboarding\")
    With ActiveWorkbook ' reference the newly created workbook, which is the "active" one
        'checks to make sure the user hasn't canceled the dialog
        If varResult <> False Then .SaveAs Filename:=varResult
    End With
End If

, где он использует эту GetSheet() «вспомогательную» функцию:

Function GetSheet(shtName As String, retSht As Worksheet) As Boolean
    Set retSht = Worksheets(shtName)
    GetSheet = Not retSht Is Nothing
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...