2017-10-01 17 views
0

이것은 일반적인 목표 인 것처럼 보입니다. 그러나 나와 같은 문제가있는 다른 사람을 찾을 수 없습니다. 나는 교환 원으로부터 가격을 기록하기를 기대하고 있으며, 가격은 교환기에서 Excel 문서로 자동으로 업데이트됩니다.VBA를 사용하여 라이브 가격 데이터 복사, 원본 값을 스트림으로 업데이트하지 않음

원본 데이터를 필터링하는 조회 (단순히 vlookups)에서 복사하여 붙여 넣기위한 코드를 작성했습니다. 이 작업이 실행되면 조회에있는 새 값을 복사하지 않고 첫 번째 루프에서 본 원래 값을 계속 사용하여 각 줄마다 정보를 복제합니다. 그것은 원래 데이터에 붙어있어 루프의 각 반복마다 새로 고치지 않는 것 같습니다.

내가 누락 된 부분에 대해 조언을 줄 수 있습니까?

Sub Copying() 

Dim lRow As Long 

For lRow = 2 To 13000 
    ActiveWorkbook.RefreshAll 
    Application.CutCopyMode = False 
    Sheets("Bet Angel").Calculate 
    Sheets("Data Pull").Calculate 
    Sheets("Data Pull").Select 
    Range("A2:Q2").Select 
    Selection.Copy 
    Sheets("Data").Select 
    Range("A" & lRow).Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
:=False, Transpose:=False 
    Application.Wait (Now + TimeValue("0:00:01")) 
    Sheets("Data").Select 
    Range("A" & lRow).Select 
    Application.CutCopyMode = False 
Next lRow 

최종 하위 매크로 레코더 조각없이 여기

+0

'. 계산 중 '이란 무엇입니까? ''Data Pull''에서 '(A2 : Q2)'를 복사하여'Data'에 붙여 넣습니다. '.Calculation'이 범위 내의 데이터를 변경하지 않으면 항상 같은 데이터를 복사합니다.'Don use'.'/'.Selection'을 선택하면 [how-to-avoid-using-select-in-excel -vba] (https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba) – BitAccesser

+0

실행 시간을 예상 했습니까? 1 초 대기 + 다른 코드 실행으로 12999 회 반복)> 12999 초, 3.5 시간 이상! – BitAccesser

답변

0

위 세척 기능 :이 기능은하지 업데이트 된 데이터로 문제가 해결되지 않습니다

Sub Copying() 

Dim lRow As Long 

With ThisWorkbook 'reference to workbook 
    For lRow = 2 To 13000 
     .RefreshAll 'Maybe useless, are there backgroundqueries to refresh on every iteration? 
     'Application.CutCopyMode = False 'useless fragment from marco recorder, like .Select/.Selected 
     .Sheets("Bet Angel").Calculate 
     .Sheets("Data Pull").Calculate 
     .Sheets("Data Pull").Range("A2:Q2").Copy .Sheets("Data").Range("A" & lRow) ' copy by code not by simulating useraction 
     'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
     'Application.Wait (Now + TimeValue("0:00:01")) 'useless without .PasteSpecial unless you need wasteing time 
     ''Sheets(2).Select 'useless 
     'Range("A" & lRow).Select 'useless 
     'Application.CutCopyMode = False 'useless 
    Next lRow 
End With 

End Sub 

하지만 빠른 조명 사본, 이전 코드와 비교하여 ;-)

데이터 새로 고침 작업에 대한 답변입니다.

Application.CutCopyMode은 쓸모가 없습니다.