2013-05-05 8 views
1

Я пытаюсь изменить следующий код, который копирует sheet1 из активной книги и сохраняет его в папку с помощью функции CreateFolder, все работает хорошо.Изменить копию листа1 для копирования рабочей книги в макрос

Отсюда: Tweak code to copy sheet1 of a excel file to sheet1 new excel file

Я пытаюсь изменить его, чтобы скопировать всю книгу, чтобы отправить в папку, созданную на CreateFolder.

Благодаря

Edit: Обновлен код

Sub CopySheets() 

Dim SourceWB As Workbook 
Dim filePath As String 

'Turns off screenupdating and events: 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 


'path refers to your LimeSurvey workbook 
Set SourceWB = ActiveWorkbook 

filePath = CreateFolder 

SourceWB.SaveAs filePath 
SourceWB.Close 
Set SourceWB = Nothing 

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 

End Sub 
Function CreateFolder() As String 

Dim fso As Object, MyFolder As String 
Set fso = CreateObject("Scripting.FileSystemObject") 

MyFolder = ThisWorkbook.Path & "\360 Compiled Repository" 


If fso.FolderExists(MyFolder) = False Then 
    fso.CreateFolder (MyFolder) 
End If 

MyFolder = MyFolder & "\" & Format(Now(), "MMM_YYYY") 

If fso.FolderExists(MyFolder) = False Then 
    fso.CreateFolder (MyFolder) 
End If 

CreateFolder = MyFolder & "\360 Compiled Repository" & " " & Range("CO3") & " " & Format(Now(), "DD-MM-YY hh.mm") & ".xls" 
Set fso = Nothing 

End Function 

ответ

1

Чтобы скопировать всю книгу вы можете использовать следующий код

Sub CopySheets() 


    Dim SourceWB As Workbook 
    Dim filePath As String 

    'Turns off screenupdating and events: 
    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 


    'path refers to your LimeSurvey workbook 
    Set SourceWB = Workbooks.Open(ThisWorkbook.Path & "\LimeSurvey.xls") 

    filePath = CreateFolder 

    SourceWB.SaveAs filePath 
    SourceWB.Close 
    Set SourceWB = Nothing 

    Application.ScreenUpdating = True 
    Application.DisplayAlerts = True 

End Sub 
Function CreateFolder() As String 

    Dim fso As Object, MyFolder As String 
    Set fso = CreateObject("Scripting.FileSystemObject") 

    MyFolder = ThisWorkbook.path & "\Reports" 


    If fso.FolderExists(MyFolder) = False Then 
     fso.CreateFolder (MyFolder) 
    End If 

    MyFolder = MyFolder & "\" & Format(Now(), "MMM_YYYY") 

    If fso.FolderExists(MyFolder) = False Then 
     fso.CreateFolder (MyFolder) 
    End If 

    CreateFolder = MyFolder & "\Data " & Format(Now(), "DD-MM-YY hh.mm.ss") & ".xls" 
    Set fso = Nothing 

End Function 
+0

Сантош ваш код был настолько полезным, я нуждался в другом проекте !. Я обновил код, который я использую (выше), все работает 'except' после запуска кода. На моем экране нет файла (excel открыт, но нет активного файла). В исходной версии после запускается код. У меня есть исходный файл. Есть ли способ для этой версии сделать то же самое? 'Спасибо ' – xyz

+0

@Tim Вышеприведенный код открывает книгу в соответствии с' SourceWB' и просто делает SaveAs для создания копии и сохраняет ее в папке. – Santosh

+0

Я изменил 'Set SourceWB = Workbooks.Open (ThisWorkbook.Path &" \ LimeSurvey.xls ")' to 'Установить SourceWB = ActiveWorkbook', и это, кажется, вызывает потерю файла, показывающего в конце, может быть? – xyz

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