Как я могу скопировать следующие данные Excel в другую рабочую книгу и попросить пользователя сохранить? - PullRequest
0 голосов
/ 04 марта 2019

По сути, у меня есть следующий код, указывающий, какие ячейки я хотел бы скопировать в другую книгу:

Application.CopyObjectsWithCells = False
ActiveSheet.Copy
Range("A1:T40").Copy

Range("A1:T40").PasteSpecial Paste:=xlPasteValues
Application.CopyObjectsWithCells = True

Сценарий VBA автоматически открывает новую книгу со всеми даннымивставлено из другой книги.

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

ОБНОВЛЕНИЕ:

Следующий код предлагает пользователю сохранить книгу Excel, что я могу добавить, чтобы сохранить ее в определенном файле с определенным именем?

fileSaveName = Application.GetSaveAsFilename( _
 fileFilter:="Excel Workbooks (*.xlsx*),*.xlsx*")
If fileSaveName <> False Then
 MsgBox "Save as " & fileSaveName

End If

ОБНОВЛЕНИЕ 2

Dim path As String
Dim filename1 As String


Application.CopyObjectsWithCells = False
ActiveSheet.Copy
Range("A2:T40").Copy

Range("A2:T40").PasteSpecial Paste:=xlPasteValues
Application.CopyObjectsWithCells = True



path = "C:\Users\jmills\Documents\Report\"

filename1 = Range("H1")
Application.DisplayAlerts = True
ActiveWorkbook.SaveAs Filename:=path & filename1 & ".xlsx", FileFormat:=xlOpenXMLWorkbook

Application.DisplayAlerts = True


End Sub

Как сохранить сохранение как приглашение?Я хотел бы, чтобы он позволил мне отредактировать имя до того, как оно сохранит

В настоящее время с кодом выше, оно сохраняет автоматически с тем, что написано в ячейке H1

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете вызвать диалоговое окно сохранения имени файла с помощью Application.SaveAsFileName.Вот дополнительная информация о том, что вы можете с ним сделать: https://docs.microsoft.com/en-us/office/vba/api/excel.application.getsaveasfilename

Вывод этого пути - это путь, в который вы можете сохранить рабочую книгу.Поэтому после этого вам нужно использовать что-то вроде ActiveWorkbook.SaveAs Filename:=[output from application.saveasfilename]

Примерно так:

path = "C:\Users\jmills\Documents\Report\"
fileSaveName = Application.GetSaveAsFilename( initialFilename:=path & "myworkbook", _
 fileFilter:="Excel Workbooks (*.xlsx*),*.xlsx*")
Application.DisplayAlerts = True
ActiveWorkbook.SaveAs Filename:=fileSaveName, FileFormat:=xlOpenXMLWorkbook

Где вы можете изменить myworkbook на то, что вы хотите.Пользователь может изменить это также в диалоге файла, если он хочет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...