2017-02-13 2 views
0

기존 통합 문서를 열고 동일한 통합 문서에서 코드를 실행할 수있는 방법을 찾고 있습니다.VBA를 통해 Excel 통합 문서 열기

저는 VBA에 대한 지식이별로 없으며 누군가가 도울 수 있기를 바랬습니다. 내 연구를 통해 필자는 통합 문서를 열고 파일에 대한 매핑을 매크로 코드에 붙여 넣으면 동일한 통합 문서에서 코드를 실행할 수 있음을 알고 있습니다. 나는 대화 상자를 열어 그것을 선택할 수 있기를 원합니다. 이 코드 :

Option Explicit 
Private Sub CommandButton1_Click() 

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer, fd As Office.FileDialog 

Set fd = Application.FileDialog(msoFileDialogFilePicker) 

With fd 

.AllowMultiSelect = False 

.Title = "Please select the file." 

.Filters.Clear 
.Filters.Add "Excel 2003", "*.xls?" 

If .Show = True Then 
fileName = Dir(.SelectedItems(1)) 

End If 
End With 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

Workbooks.Open (fileName) 

For Each sheet In Workbooks(fileName).Worksheets 
total = Workbooks("import-sheets.xlsm").Worksheets.Count 
Workbooks(fileName).Worksheets(sheet.Name).Copy _ 
after:=Workbooks("import-sheets.xlsm").Worksheets(total) 
Next sheet 

Workbooks(fileName).Close 

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 

열려있는 대화 상자를 통해 파일을 선택할 수 있지만 통합 문서가 새 창에서 열립니다. 선택한 통합 문서의 내용을 빈 코드로 복사하여 나머지 코드를 실행할 수 있도록 변경하는 방법이 있습니까?

이 질문은 충분히 길기 때문에 현재의 문제와 관련이 없으므로 나머지 코드는 포함하지 않았습니다. 포함 시키면 도움이 될지 알려 주시면 질문을 수정하겠습니다.

답변

0

구문이 잘못되었지만 오류 메시지가 표시되지 않습니다. 변수에 새롭게 문을 연 통합 문서를 할당 시도하고, 예를 들어 다음과 같이 그 통해 참조 :

Dim ImportBook as Workbook 
Dim ExportBook as Workbook 

Set ImportBook = Workbooks.Open (fileName) 
Set ExportBook = Workbooks.Open ("import-sheets.xlsm") 

당신이 전체 통합 문서의 복사본을 만드는과에 저장되어 무슨 일을하는지처럼 보인다 그러나 새 파일을 만들 수 있습니다.이 경우 한 번에 하나의 시트를 만드는 것보다 더 나은 방법이있을 수 있습니다.

Workbook.SaveAs 방법이 여기에 더 적합할까요?

관련 문제