2016-12-16 7 views
5

Mam skoroszyt, w którym można przyspieszyć obliczenia (długa historia) Utworzono makro, aby skopiować trzy arkusze do innego pliku, a następnie inne makro, aby je skopiować.Makro do kopiowania arkuszy do skoroszytu zatrzymuje się po jednym arkuszu

Makro do skopiowania działa poprawnie, jednak makro do skopiowania z powrotem zatrzymuje się po skopiowaniu na jednym arkuszu.

Szukałem w ramach StackOverflow i znalazłem kilka podobnych pytań, ale nie mogłem znaleźć odpowiedzi, która zadziałała. Jeden post pomyślał, że jest związany z wersjami Office, a jeden z kluczem Shift.

Oto kod:

Application.Calculation = xlCalculateManual 
Application.ScreenUpdating = False 
Application.DisplayAlerts = True 
Application.EnableEvents = False 

' 
' Set up the workbooks 
' 
Set ThisWkb = ThisWorkbook 
Fname = Application.GetOpenFilename(_ 
    fileFilter:="Excel Macro Files, *.xlsm", _ 
    Title:="Select the Storage File", _ 
    MultiSelect:=False) 
Set StorageWbk = Workbooks.Open(Fname) 
' 
MsgBox ("Beginning process - please click ok to any macro warning - you will see a confirmation when complete") 


StorageWbk.Sheets("Sh A").Copy After:=ThisWkb.Sheets(ThisWkb.Sheets.Count) 
StorageWbk.Sheets("Sh B").Copy After:=ThisWkb.Sheets(ThisWkb.Sheets.Count) 
StorageWbk.Sheets("Sh C").Copy After:=ThisWkb.Sheets(ThisWkb.Sheets.Count) 

StorageWbk.Close 

czasem okaże się, że gdybym znowu skasować nowy arkusz i uruchomić makro to czasami działa i czyta wszystkie trzy arkusze, ale także czasami nie.

Każda pomoc jest bardzo doceniana.

+1

Makro zatrzymuje się po jednym arkuszu lub pojawia się błąd? –

+1

Cześć Tim, dzięki za pytanie. Makro kończy się bez błędu. – Boomer

+3

Co się stanie, jeśli skopiujesz wszystkie trzy arkusze naraz? - StorageWbk.Sheets (Array ("Sh A", "Sh B", "Sh C")). Copy After: = ThisWkb.Sheets (ThisWkb.Sheets.Count) '? – YowE3K

Odpowiedz

0

Cytowanie zarówno YowE3K i nbayly dać poprawną odpowiedź z uwag bezpośrednio tutaj (miałem go szukać):

odkryć Twojej ukryte arkusze i skopiować trzy linki na raz, używając:

StorageWbk.Sheets(Array("Sh A", "Sh B", "Sh C")).Copy After:=ThisWkb.Sheets(ThisWkb.Sheets.Count) 
Powiązane problemy