2016-11-01 2 views
0

Я пишу часть кода в Excel VBA, в которой мне нужно было создать макрос, который позволяет пользователю нажимать кнопку ActiveX, в результате чего файл затем сохраняется в указанном месте. Как только этот новый файл будет создан, я хотел бы запрограммировать так, чтобы новый файл (который успешно сохраняет в альтернативном указанном местоположении) не имеет кнопки ActiveX Command Button. Кроме того, после нажатия кнопки из исходного файла я хотел каким-то образом закрыть главный файл и автоматически открыть новый сохраненный файл. Пожалуйста, кто-нибудь может помочь?Excel VBA Code - Как вызвать определенные действия для созданных файлов

код до сих пор:

Sub CommandButton1_Click() 

    ActiveSheet.Copy 
    Dim SaveName As String 
    SaveName = ActiveSheet.Range("C1").Text 
    With ActiveWorkbook 
    .SaveAs "File path Specified" & _ 
    SaveName & ".xls" 
    .Close 0 
    End With 

End Sub 

ответ

0

Мой первый раствор (в зависимости от того, что вам действительно нужно сделать) заключается в следующем:

Во-первых, вы будете нуждаться в этом:

Me.SaveCopyAs "<full_Path>" 

См подробнее об этом здесь: https://msdn.microsoft.com/en-us/library/office/ff835014.aspx

Это создаст копию файла fi le на указанный путь с любым именем, которое вы хотите. Прежде чем вы это сделаете, вы можете скрыть свою кнопку, а затем сохранить ее как копию, чтобы сохранить ее с помощью скрытой кнопки.

И, наконец, если вы хотите закрыть оригинал и открыть копию, вам придется придать копии другое имя. Затем откройте новый файл и закройте оригинал.

Ваш код должен выглядеть примерно так:

Sub CommandButton1_Click() 
    ActiveSheet.Copy 
    Dim SaveName As String 
    SaveName = ActiveSheet.Range("C1").Text 
    With ActiveWorkbook 
     .Worksheets("<your_worksheet>").CommandButton1.visible = False 
     .SaveCopyAs "File path Specified" & SaveName & ".xls" 
    End With 
    Workbooks.Open ("File path Specified" & SaveName & ".xls") 
    Workbooks("<Original_name.xlsm>").close False 
End Sub 

Другим решением может быть сохранение рабочей книги с SaveAs. До этого сохраните оригинал. Скрыть кнопку. И saveas закроет оригинал и автоматически откроет новый.

Ваш код должен выглядеть примерно так:

Sub CommandButton1_Click() 
    ActiveSheet.Copy 
    Dim SaveName As String 
    SaveName = ActiveSheet.Range("C1").Text 
    With ActiveWorkbook 
     .Save 
     .Worksheets("<your_worksheet>").CommandButton1.visible = False 
     .SaveAs "File path Specified" & SaveName & ".xls" 
    End With 
End Sub 
+0

Привет Blenikos. Спасибо за Ваш ответ. Когда я использую это, строка с .CommandButton1.Visible = False возвращает ошибку, говоря, что объект не поддерживает это свойство или метод? – Syed

+0

Я не тестировал код так, чтобы у него были некоторые ошибки. Мне нужен ваш файл excel, чтобы проверить его. Тем не менее, я отредактировал свой текущий ответ, и теперь он должен работать. Пожалуйста, дайте мне знать, если это так! – Blenikos

+0

Привет, Blenikos, на aprt, где у нас есть. Рабочие листы («») мне нужно написать свое местоположение файла и имя файла? Или просто имя листа? – Syed

Смежные вопросы