Как я могу скопировать лист в новую несозданную рабочую книгу? - PullRequest
3 голосов
/ 04 августа 2011

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

Public Sub SaveRaport() 
Dim ws As Worksheet 
Set ws = Worksheets("Raport") 
Dim wb As Workbook 
wb = ws 'here's the problem… I don't know how to do this thing 
Dim TempFilePath, TempFileName, FileExtStr, adrmail As String

wb.Save 
TempFilePath = "C:\Users\ionadr\Desktop\test" & "\" 
TempFileName = "Raportare" & " " & Format(data, "dd-mmm-yy ") & " schimbul " & schimb 
FileExtStr = "." & LCase(Right(wb.Name, Len(wb.Name) - InStrRev(wb.Name, ".", , 1))) 
    MsgBox ("Saving file...") 
    wb.SaveCopyAs TempFilePath & TempFileName & FileExtStr 
End Sub

Я ценю вашу помощь!Спасибо

Ответы [ 3 ]

1 голос
/ 04 августа 2011

ваш wb = ws должен выдавать ошибки. Вы пытаетесь установить два объекта, равные друг другу, которые имеют разные типы (невозможно).

Dim newWB As Workbook
Dim originalWorkbook As Workbook 'declare a variable of the workbook type (still an uncreated file)
Set newWB = Workbooks.Add() 'create your new file
Set originalWorkbook = ThisWorkbook
originalWorkbook.Sheets(2).Copy after:=newWB.Sheets(1) 'replace the sheet indicies I used with whatever yours are or with strings...

тогда вы можете сохранить книгу, используя метод saveas newWB.SaveAs()

1 голос
/ 04 августа 2011

Если вы просто хотите сохранить рабочую таблицу «Raport» и ничего больше, что-то вроде этого поможет вам начать:

Sub Report()

    Dim ws As Worksheet
    Set ws = Worksheets("Raport")

    ws.Copy
    ActiveWorkbook.SaveAs "NewCopy.xlsx"

End Sub

Очевидно, вам придется изменить имя файла в соответствии с вашими потребностями,Если вы еще не хотите сохранять новую копию, вызов только ws.Copy создаст новую рабочую книгу с данными в электронной таблице «Raport» (по моему опыту - только что протестировал код минуту назад).

Надеюсь, это поможет.

0 голосов
/ 05 августа 2011

Вот код, который вам нужен, и который я использую почти все время.Предполагая, что вы хотите экспортировать лист с именем «Отчет» как C: \ Report.xlsx

Sub ExportSummary()

Dim WsToExport As Worksheet
Set WsToExport = Sheets("Report")
Dim CurrentWbk As Workbook
Dim NewWbk As Workbook

Set CurrentWbk = ActiveWorkbook

Workbooks.Add
Set NewWbk = ActiveWorkbook

CurrentWbk.Activate
WsToExport.Select
WsToExport.Copy Before:=NewWbk.Sheets(1)

NewWbk.Activate
NewWbk.SaveAs "C:\Report.xlsx"
NewWbk.Close

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