Создайте новую книгу Excel слепой с одного листа в открытой книге - PullRequest
0 голосов
/ 26 февраля 2019

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

  1. У меня есть некоторый код VBA, который записывает соответствующие данные на новый лист (скажем, Sheet3).
  2. Затем я хотел бы выписать всеSheet3 в новый файл Excel "output.xlsx" в заданной папке (скажем, F: \ test)
  3. Я надеялся, что процесс создаст слепой файл xlsx, заполнит Sheet1, сохранит и закроет файлпользователь никогда не увидит открытый файл output.xlsx.

РЕДАКТИРОВАТЬ # 2: работа с этим точным кодом:

Dim FPath As String, FName As String, filenamex As String
Dim NewBook As Workbook

Application.DisplayAlerts = False
Application.ScreenUpdating = False

FPath = "F:\test\"
FName = "output" & ".xlsx"
filenamex = FPath & FName
Set NewBook = Workbooks.Add
Worksheets("Sheet3").Range("A1:N100").Copy 
Destination:=NewBook.Worksheets("Sheet1").Range("A1")
Application.CutCopyMode = False
NewBook.Close savechanges:=True, Filename:=filenamex

Application.DisplayAlerts = True
Application.ScreenUpdating = True

Результат № 2: (a) Файл Exceloutput.xls создан и СОХРАНЕН (спасибо) (b) Три листа созданы так, как они существуют в исходном файле (c) Все три листа все еще не заполнены.Мне нужен только лист 3, скопированный из исходного файла.

Спасибо

1 Ответ

0 голосов
/ 26 февраля 2019

Прежде всего, вы можете просто отключить ScreenUpdating.

Sub copy_to_new()
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Dim FPath As String, FName As String, filenamex As String
Dim NewBook As Workbook, oldBook as Workbook

Set oldBook = ActiveWorkbook 
'Or use `ThisWorkbook` if you're running this code from the workbook you want to copy from.

FPath = "F:\test\"
FName = "output.xls"
filenamex = FPath & FName
Set NewBook = Workbooks.Add
oldBook.Worksheets("Sheet3").Range("A1:N100").Copy Destination:=NewBook.Worksheets("Sheet1").Range("A1")
Application.CutCopyMode = False

' We can use the .Close command to close and save the file in one line
NewBook.Close savechanges:=True, Filename:=filenamex

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