2017-03-22 16 views
0

정말 간단한 매크로를 작성해야한다고 생각하고 있습니다. 나는 매일 같은 보고서를 다루는데, 매일 아침마다 업데이트됩니다. 즉, 내가 어제 같이 근무한 데이터를 주어진 아침의 새로운 데이터와 동일한 워크 북에 포함시킬 수 있다는 것이 정말 좋을 것입니다.Excel VBA를 사용하여 파일 브라우저를 사용하여 선택한 통합 문서에서 워크 시트를 복사하는 방법은 무엇입니까?

기본적으로 다른 통합 문서 (어제의 보고서가있는 보고서)의 워크 시트를 파일 브라우저를 사용하여 현재 활성 통합 문서 (오늘 보고서가있는 보고서)로 복사하면됩니다.

Application.GetOpenFilename 메서드는 원하는대로 파일 브라우저를 엽니 다. 그러나 원하는 워크 시트에서 복사 할 디렉터리 문자열을 사용하는 방법을 알 수 없습니다. 사람이 내가 여기에 잘못 뭘하는지 말해 줄 수 있다면

Sub Macro5() 

Dim todayWBName As String 
Dim yesterdayWB As Workbook 
Set todayWB = ActiveWorkbook 
todayWBName = todayWB.Name 

'open file from last business day 
    yesterdayWBName = Application.GetOpenFilename(_ 
         Title:="Select backorder file from last business day", _ 
         MultiSelect:=False) 
    If yesterdayWBName = False Then 
     Exit Sub 
    Else 
     End If 
    Workbooks.Open yesterdayWBName 
    Set yesterdayWB = ActiveWorkbook 
    todayWB.Activate 

'copy in yesterday's info 
    yesterdayWB(1).Copy After:=todayWB.Sheets(1) 
    yesterdayWB.Close 
    Sheets("Sheet 1 (2)").Name = "YesterdayResolution" 
    Sheets(1).Activate 

End Sub 

, 내가 정말 고맙겠 :

여기 내가 사용하고 코드입니다.

미리 감사드립니다.

답변

1

시도해보십시오. GetOpenFileName의 문자열 결과를 사용하고 Workbooks.Open 메서드에 직접 전달하여 yesterdayWB 개체에 할당 된 개체 (통합 문서)로 반환 값을 처리합니다.

yesterdayWB(1).Copy After:=todayWB.Sheets(1) 

통합 문서 객체, 당신은 무엇을 의미하지 첨자에 (내 생각)한다 yesterdayWB.Worksheets(1).Copy ...

Sub Macro5() 

    Dim yesterdayWB As Workbook 
    Dim yesterdayWBName As String 
    Dim todayWB As Workbook 

    Set todayWB = ActiveWorkbook 

    'open file from last business day 
    yesterdayWBName = Application.GetOpenFilename(_ 
         Title:="Select backorder file from last business day", _ 
         MultiSelect:=False) 
    If yesterdayWBName = False Then 
     Exit Sub 
    End If 
    Set yesterdayWB = Workbooks.Open(yesterdayWBName) 

    'copy in yesterday's info 
    yesterdayWB.Worksheets(1).Copy After:=todayWB.Sheets(1) 
    yesterdayWB.Close 
    ' the sheet you copied is at index "2" because you put it after Sheets(1) 
    todayWB.Sheets(2).Name = "YesterdayResolution" 
    todayWB.Sheets(1).Activate 

End Sub 
이었다 또한

, 오류가