2013-06-05 5 views
0

다음과 같은 문제점이 있습니다. 나는 이미 일부 워크 시트가있는 Excel 파일을 가지고 있는데,이 파일을 내 메인 파일이라고 부르며 하위 디렉토리에는 각각 하나의 시트가 들어있는 5 개의 다른 Excel 파일이 있습니다. 이제 Excel 파일의 내용을 내 주 파일에 복사해야하고 내 주 파일에는 하위 파일의 모든 파일에 대한 시트가 있어야합니다.Excel 파일에서 워크 시트 복사

이 나에게 그렇게 쉬운 일이 아닙니다하지만 난 다음있어, 그래서 내가 VBA에 새로운 오전 :

Sub Makro1() 

Dim objWorkbook As Workbook 
Dim mybook As Workbook 
Set basebook = ThisWorkbook 

Dim strPath As String 
strPath = ThisWorkbook.Path + "\data" 

Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = False 
objExcel.DisplayAlerts = False 

Set objFso = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFso.GetFolder(strPath) 

Dim ws As Worksheet 

For Each objFile In objFolder.Files 

If objFso.GetExtensionName(objFile.Path) = "xls" Then 

Set objWorkbook = objExcel.Workbooks.Open(objFile.Path) 
objWorkbook.Worksheets(1).Copy 
Set ws = basebook.Sheets.Add 
ws.Paste 

objWorkbook.Close 
Set objWorkbook = Nothing 
Set ws = Nothing 


End If 

Next 

objExcel.Quit 

End Sub 

그래서 내 주요 파일의 시트를 만들지 만이 파일의 내용을 붙여 doesnot 이 시트에 서브 디렉토리에 있지만 Ctrl + C로 복사 한 것.

해결책이나 힌트에 감사드립니다. 사전에

덕분에
데이비드

답변

0

당신은 당신의 대상 시트에 소스 시트에서 데이터를 복사해야합니다. 당신은 마지막 줄을 볼

Dim wbDest As Workbook 
Dim wbSource As Workbook 
Dim shDest As Worksheet 
Dim shSource As Worksheet 

Set wbDest = Workbooks("Missing_Paper_Spreadsheet.xlsm") 
Set wbSource = Workbooks("Missing_Paper_Assist.xls") 

Set shDest = wbDest.Sheets("Weekly") 
Set shSource = wbSource.Sheets("Main") 

Dim rngNumUnits As Range 

Set rngNumUnits = shSource.Range("A9:A50") 

, 그것은 "shSource.Range()"는 말한다 : 여기에 VBA 프로젝트에서 몇 가지 예제 코드는? .Range()를 사용하여 워크 시트의 셀에 액세스 할 수 있습니다. 수행하려는 작업을 수행하기 위해 한 워크 시트의 셀 범위를 변수에 할당 한 다음 해당 범위 값을 다른 워크 시트의 셀에 복사 할 수 있습니다.

+0

대단히 감사합니다. 나는 objWorkbook.Worksheets (1) .UsedRange.Copy'를 사용하여 끝 냈습니다. 왜냐하면 워크 시트가 얼마나 큰지 미리 알지 못했기 때문입니다.하지만 이제는 잘 작동하고 있습니다. 다시 감사합니다 –