2013. 5. 14. 11:28

작업 결과를 백업파일에 자동 저장하기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

엑셀로 데이터를 처리한 후 이를 특정파일에 일일이 저장하는 것은 생각보다 번거로운 일입니다. 

가끔 잊어버리는 경우 백업본이 생성되지 않아 작업결과를 잃어버리기도 하지요. 

아래 코드는 자료 처리를 완료한 후 새로운 엑셀 파일을 만들거나 기존 파일에 작업결과를 저장하는 코드입니다. 




    ' 시트를 새로 만든다.

   ' 현재 작업 파일 정보를 저장한다. 

    orgBookName = ActiveWorkbook.Name

    

    '먼저 기존 파일 존재 여부 체크함.

    dFile = "C:\temp\result\"

    fFile = "점검결과-" & Year(Date) & Month(Date) & ".xlsx"

    newFileName = dFile & fFile

    Set fs = CreateObject("Scripting.FileSystemObject")

    fileChkTF = fs.fileexists(newFileName)

    

    '만약 파일이 있으면 기존 파일에 시트를 추가하고 시트명을 부여함.

    If fileChkTF = True Then

  Workbooks.Open newFileName

' 첫번째 시트 앞에 상세시트 추가

        Sheets.Add before:=Sheets(1)

' 시트명이 중복되지 않도록 시분초를 붙임

        Sheets(1).Name = "점검결과상세-" & Date & Hour(Time) & Minute(Time) & Second(Time)

'첫번째 시트 앞에 결과 시트 추가

        Sheets.Add before:=Sheets(1)

        Sheets(1).Name = "점검결과-" & Date & Hour(Time) & Minute(Time) & Second(Time)

    

    ' 만약 파일이 없으면 새로 파일을 만들어 시트명을 변경함.

    Else

            

        Workbooks.Add

        ActiveWorkbook.SaveAs Filename:=newFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

        Sheets(1).Name = "점검결과-" & Date & Hour(Time) & Minute(Time) & Second(Time)

        Sheets(2).Name = "점검결과상세-" & Date & Hour(Time) & Minute(Time) & Second(Time)

    

    End If

    

    '작업 파일 활성화, 시트 선택후 작업결과부분 복사

    Workbooks(orgBookName).Activate

    Sheets(2).Select

    ccCnt = Cells(5, 3)

    Range(Cells(3, 8), Cells(abCnt, 12)).Copy


   ' 백업 파일을 활성화하여 붙여 넣기    

    Workbooks(fFile).Activate

    Sheets(1).Select

    Cells(2, 1).Select

    ActiveSheet.Paste

  

  ' 필요할 경우 번호를 자동 부여 함. 

    Cells(2, 1) = 1

    Cells(3, 1) = 2

    Range("a2:a3").Select

    Selection.AutoFill Destination:=Range(Cells(2, 1), Cells(20000, 1))

    

    Cells(1, 1) = "제목"

    Cells(1, 2) = "세부내용"

    Cells(1, 3) = "수량"

    Cells(1, 4) = "비고"

                            

   ' 다시 작업 파일 활성화 후 복사

    Workbooks(orgBookName).Activate

    Sheets(2).Select

    hcCnt = Cells(2, 17)

    Range(Cells(2, 16), Cells(hcCnt + 2, 18)).Copy


   ' 두번째 시트에 내용 입력    

    Workbooks(fFile).Activate

    Sheets(2).Select

    Cells(2, 1).Select

    ActiveSheet.Paste

                            

    Cells(1, 1) = "날짜"

    Cells(1, 2) = "제목"

    Cells(1, 3) = "결과수"

 

  ' 저장후 종료                            

    ActiveWorkbook.Close SaveChanges:=True

    

   '점선 모양 반짝이는 선택 창을 비활성화

    Application.CutCopyMode = False


  ' 가장 앞 셀로 이동       

    Cells(1, 1).Select