2016-10-18 11 views
0

동시에 실행중인 Excel-vba의 인스턴스가 3 개 있습니다. 때로는 때로는 복사 & 붙여 넣기가 실패합니다. 실패하면 코드의이 부분을 다시 실행하면 제대로 실행됩니다. 그것은 내 코드의 붙여 넣기 메서드로 발생할 수 있습니다.wiith를 실행하려고하면 붙여 넣기가 실패합니다.

여러 인스턴스를 사용하는 것으로 알고 있습니다. 이유를 알고 싶습니다. 도와 줘서 다행이야!

'Copy to a new Sheet 
Call findAndSelectRange("Fabricante", "Grand Total", 5) ' make one selection 
Selection.Copy 
Workbooks("FFQ.xlsm").Activate 
Sheets.Add After:=Workbooks(WORKBOOK_MAIN).Sheets(Workbooks(WORKBOOK_MAIN).Sheets.count) 
ActiveSheet.Name = sheetName1 
'ThisWorkbook.Worksheets.Select (ThisWorkbook.Worksheets.Count) 
Range("A2").Select 
ActiveSheet.Paste 

답변

1

워크 북/시트/셀을 참조하는 것보다는 많은 선택과 활성화가 필요합니다.

FindAndSelectRange 프로 시저의 결과를 처리하는 방법은 약간 어렵습니다. 범위 객체를 반환하는 FindAndReferenceRange 함수로 더 좋을 것이라고 생각하지만 말입니다.

아래 코드에서 유용하게 사용할 수 있습니다 (아무 것도 선택하거나 활성화하지 않음).

Sub Test1() 

    'Variables to hold references to both workbooks and new worksheet. 
    Dim WORKBOOK_MAIN As Workbook 
    Dim wrkBk As Workbook 
    Dim wrkSht As Worksheet 

    'Set references to workbooks. 
    Set WORKBOOK_MAIN = ThisWorkbook 
    Set wrkBk = Workbooks("FFQ.xlsm") 
    'Set wrkBk = Workbooks.Open("fullpath & name") 

    'Create new sheet and set reference to it. 
    wrkBk.Worksheets.Add After:=wrkBk.Worksheets(wrkBk.Worksheets.Count) 
    Set wrkSht = wrkBk.Worksheets(wrkBk.Worksheets.Count) 

    'Copy cell from B2 to A2. 
    'The info before `Copy` could be returned by your `findAndSelectRange` function. 
    'If the function returns a valid range reference you could just write: 
    'findAndSelectRange("Fabricante", "Grand Total", 5).Copy Destination:=wrkSht.Range("A2") 
    WORKBOOK_MAIN.Worksheets("Sheet1").Range("B2").Copy _ 
     Destination:=wrkSht.Range("A2") 

    'If you're only interested in the unformatted value you could use: 
    'wrkSht.Range("A2") = findAndSelectRange("Fabricante", "Grand Total", 5).Value 

End Sub 
+0

감사합니다. 이로 인해 문제가 해결되었습니다. 전자 칠판은 공유되어있어 여러 인스턴스에서 상당히 위험합니다. – Rajivdmo