2016-11-02 6 views
0

2 매를 복사하여 다른 파일로 저장해야합니다. 시트 "캐시"에서 ("N10 A2")복사 2 매 vba excel

Worksheets("Front").Copy 
 
    With ActiveSheet.UsedRange 
 
     .Value = .Value 
 
    End With 
 
    
 
    Set wbNew = ActiveWorkbook 
 
    wbNew.SaveAs "C:\______\pl.xlsx" 
 
    wbNew.Close True

결과 :

나는 범위를 모든 시트의 "전면" 을 복사하여 아래 추가 필요 새 파일 "PL. XLSX " 곳 A1 : 전면 N25 = 시트

A26 : N43 = 시트 캐시 : D

모든 설교?

+0

Excel에는 [매크로 레코더] (http://www.dummies.com/software/microsoft-office/)라는 훌륭한 기능이 있습니다. 엑셀/기록 방법 - 매크로 - 투 - 자동화 - 작업 - 엑셀 - 2010 /). 이 기능을 사용하여 다음 번에 수동 작업을 VBA로 기록 할 수 있습니다. –

+0

모든 시트를 "Front"로 복사한다는 것은 무엇을 의미합니까? "Front"라는 이름의 시트가 하나 이상 있습니까? –

+0

나는 패킹리스트를 생성하기 위해 xlslx 파일을 가지고있다. 이 파일에는 2 장, FRONT 및 캐시가 있습니다. 새 파일에 두 장을 복사해야합니다 (다른 이름으로 저장). FRONT A1 : N24, CACHE에서 COPY까지의 COPY 범위 : 동적 값 - 순간 a2 : N10. 지금 새 파일에 붙여 넣습니다 -VALUE "FRONT"FROM -VALUE를 "캐시" 에서 나는이 매뉴얼을 만들고 화면 http://srv3.sendfile.pl/pobierz/950031---을 해요 wcfb/5316677400_1326980696.jpg – Grz3siu

답변

0

을 실행 한 다음 입력 할 수 있습니다

Sub main() 
    Worksheets("Front").Copy '<--| this creates a new workbook with one worksheet that becomes the "active" one 
    ThisWorkbook.Worksheets("Cache").Range("A2:N10").Copy '<--| 'ThisWorkbook' refers to the workbook the running macro resides in, no matter which is the "active" workbook 
    Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial '<--| no need to qualify range references up to its worksheet to implicitly assume the "active" one 
    Application.CutCopyMode = False 
End Sub 

을하는 동안 워크 시트의 "전면"과 "캐시"만약 매크로가있는 통합 문서에없는 경우 다음을 입력 할 수 있습니다.

Sub main2() 
    Dim rngToCopy As Range 

    Set rngToCopy = Worksheets("Cache").Range("A2:N10") '<--| set the range to copy before changing the "active" workbook with the worksheet 'Copy' method call   
    Worksheets("Front").Copy '<--| this creates a new workbook with one worksheet that becomes the "active" one 
    rngToCopy.Copy '<--| copy the range you previously stored 
    Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial '<--| no need to qualify range references up to its worksheet to implicitly assume the "active" one 
    Application.CutCopyMode = False 
End Sub 
0
Sub z() 
Dim NewSheet, Cache1, Front1 As Worksheet 
Dim LastRow As Integer 
Set Front1 = ActiveWorkbook.Worksheets("Front") 
Set Cache1 = ActiveWorkbook.Worksheets("Cache") 
Front1.Copy 
Set NewSheet = ActiveWorkbook.ActiveSheet 
LastRow = Front1.UsedRange.Rows(Front1.UsedRange.Rows.Count).Row + 1 
Cache1.Range("A2:N10").Copy 
NewSheet.Cells(LastRow, 1).PasteSpecial 
Application.CutCopyMode = False 
End Sub 

시트가 선언되면 데이터를 쉽게 이동시킬 수 있습니다. 나는이 부분을 테스트했다. 다음 워크 시트의 "전면"과 "캐시"매크로에있는 통합 문서에 있다고 가정하여 저장 코드

+0

단지 몇개의 (아마도) usefule notes 1)'Front1.Copy' 이후에'NewSheet = ActiveWorkbook.ActiveSheet' 문 (그리고'NewSheet' 선언문)을 필요로하지 않습니다. "활성"통합 문서와 그 유일한 워크 시트는 "활성"워크 시트가됩니다. 2) 따라서 NewSheet.Cells (LastRow, 1) .PasteSpecial은 Cells (LastRow, 1) .PasteSpecial이 될 수 있습니다. 3) 또한 선언을 피할 수 있습니다. 당신이 내 대답에 따라 볼 수있는'LastRow'의 계산 – user3598756

+0

나는 나중에 그들을 바꿀 수 있도록 항상 선언한다. –