2015-02-04 2 views
0

저는 초보자 VBA 프로그래머입니다. 나는 일들 사이의 중단 시간에만 그것을 할 수 있습니다. 어쨌든 나는 나 자신과 동료들을 위해 사건 추적자를 위해 일해 왔으며, 내가 "가져 오기"기능을 추가하려고 시도해 왔던 새로운 기능으로 그것을 업데이트 할 때 그들을 도와 주었다.다른 스프레드 시트의 셀을 활성 시트로 복사 (가져 오기)

각 달마다 별도의 워크 시트가 있습니다 (1 월에서 12 월까지 및 OT라고하는 초과 근무 시간을위한 다른 시트). 코드는 올바른 시트에서 복사하여 같은 이름의 시트에 붙여 넣어야합니다.

그래도 제대로 작동하지 않습니다. 이것은 내가 지금까지 가지고있는 것입니다 :

'Import Incident 
Sub ImportIncidents() 

Dim OpenFileName As String 
Dim wb As Workbook 
Dim ws As Worksheet 
Dim myRng As Range 
Dim MyWB As Workbook 

'store the current workbook in a variable 
Set MyWB = ActiveWorkbook 

'Select and Open workbook 
OpenFileName = Application.GetOpenFilename 

If OpenFileName = False Then 
    MsgBox ("Import Failed!") 
    Exit Sub 
End If 

Set wb = Workbooks.Open(OpenFileName, UpdateLinks:=0) 

'Get data 
wb.Activate 
For Each ws In wb.Worksheets 

       Set myRng = ws.Range("A6:AV45") 
       myRng.Copy 
       MyWB.Activate 


       Set myRng = 

       wb.Activate 

Next 


MsgBox ("Import Complete!") 

End Sub 

아무도 나를 놀라게 할 수 있다면. 내 VBA 책을 제대로 읽은 후 (VBA Dummy, ahah!) 작업을 마칠 수있을 것이라고 확신합니다. 그러나 나는 많은 시간을 할 때 앉아서 주말을 찾는 데 어려움을 겪고 있습니다. .

답변

0

초심자를위한 코드가 전혀 나쁘지 않습니다. 다른 시트의 동일한 범위로 복사한다고 가정하면 for 루프에 한 줄만 있으면됩니다.

myRng.Copy Destination:=MyWB.Worksheets(myRng.Name).Range("A6:AV45") 

이렇게하면 서식을 포함한 모든 내용이 복사됩니다.

+0

도움 주셔서 감사합니다. 그 코드를 내 코드에 넣었지만 형식 불일치 오류가 발생합니다 (Office 2013에서는이 문제가 어디에 구체적으로 발생하는지 알려주지 않습니다). 내가 일하고 구형 버전에서이 오류가 발생했을 때 "If OpenFileName = False Then"행이 멈출 곳을 강조 표시 한 것 같습니다. 나는 전에 이것을 처리하지 않았다. – JaayB

+0

'Dim OpenFileName As String'을 'Dim OpenFileName As Variant'로 대체하십시오. Application.GetOpenFilename 함수는 Variant 형식을 반환합니다. –

0

다음을 시도하십시오 :

If OpenFileName = "False" then 

나는 내 컴퓨터에서 테스트하고 문자열로 OPENFILENAME DIM 경우 아무 것도 선택하지 않는 경우는 OPENFILENAME에 "거짓"전달합니다보다.

추 신 : OpenFileName = False와 OpenFileName = "False"가 모두 내 끝에서 작동하므로 누구나 답변을 얻을 수 있습니까?

0

당신이 저에게 주신 제안에 응답하지 않은 사과. 말한 모든 것이 도움이되었습니다.

폴 (Paul)은 바리안트로가는 것이 옳았고, 토마스는 또한 오류를 극복하는 데 도움이되었습니다. 불행히도 이러한 작업을 수행 한 후에 400 개의 오류가 발생하여 내가 수행 한 작업에 문제가있었습니다.

내가 그것을 알아낼 수 있었다 결국

다음과 같은 코드는 매우 원유 방법으로 ... 작동합니다

'Import Incident 
Sub ImportIncidents() 

Dim OpenFileName As Variant 
Dim wb As Workbook 
Dim ws As Worksheet 
Dim myRng As Range 
Dim MyWB As Workbook 

'store the current workbook in a variable 
Set MyWB = ActiveWorkbook 

'Select and Open workbook 
OpenFileName = Application.GetOpenFilename 

If OpenFileName = False Then 
    MsgBox ("Import Failed!") 
    Exit Sub 
End If 

Set wb = Workbooks.Open(OpenFileName, UpdateLinks:=0) 

'Import Data 
wb.Activate 
Application.DisplayAlerts = False 
For Each ws In wb.Worksheets 


       Set myRng = ws.Range("A6:AV45") 
        myRng.Copy Destination:=MyWB.Worksheets(myRng.Parent.Name).Range("A6:AV45") 
        'ActiveWorkbook.Close = False 
        MyWB.Activate 

Next 
Application.DisplayAlerts = True 
    MsgBox ("Import Complete!") 

End Sub 

이 좋은 시작이다 내가 지금은 갈 데에 있어요 시트를 통해 나는 for the loop를 for the year의 달에 링크 시켜서 사용한다. (시트가 어떻게 배치되어 있는가? 문제가 발생할 수 있으므로 데이터 시트를 복사 할 필요가 없다.)

모든 도움 주셔서 감사합니다.

관련 문제