2016-05-20 14 views
0

Так неожиданная ошибка начала возникать, когда я запускаю свой VBA. Это включает в себя открытие нескольких файлов excel и включение их значений в основной файл Excel, где он затем создает кучу вещей.VBA зависает, пытаясь. Закройте, но только при втором запуске

Он работал нормально, пока не понял, что он сбой, когда пользователь импортирует данные более одного раза, пока файл открыт. (Таким образом, он работает отлично, если он запускается в первый раз, или если вы выходите из него, запустите его только один раз, но если вы запускаете его более одного раза без выхода из него, он зависает)

После использования метода шагов я обнаружил, код зависает, и когда он пытается закрыть одну специальную рабочую книгу. По какой-то причине он не зависает ни по одному из других, и он только зависает на этом, если вы запускаете код импорта более одного раза за сеанс. Любые идеи, почему это может быть сделано?

Вот пример импорта, который отлично работает, а затем под ним тот, который он замерзает. Я могу только предположить, что это имеет какое-то отношение к методу copy-paste, но с тем, как форматируется второй файл, это единственный способ узнать, как получить значения без сложного импорта.


If CbxImport108.Value = True Then 

    108.Rows("2:100000").Delete 
    'open and transfer 108--------------------------- 
    Workbooks.Open 108Combination 
    ActiveSheet.Unprotect 
    Set CurrentBook = Workbooks(ActiveWorkbook.Name) 

    If tbx108T.Value = "" Then 
     Set CurrentPage = CurrentBook.Sheets(ActiveSheet.Name) 
    Else 
     Set CurrentPage = CurrentBook.Sheets(tbx108T.Value) 
    End If 


    'transfer the data 
    TranCounter = 1 
    Do While TranCounter < 100 Or CurrentPage.Range("A" + TranCounter).Value <> "" 

     TranCounter = TranCounter + 1 
    Loop 
    Finalcounter = TranCounter 

    108.Range("A1:AZ" + Finalcounter).Value = CurrentPage.Range("A1:AZ" + Finalcounter).Value 

    CurrentBook.Close 
End If 


If cbxHS.Value = True Then 

    HS.Rows("1:100000").Delete 
    'open and transfer HS-------------------------------------- 
    Workbooks.Open HSCombination 
    ActiveSheet.Unprotect 
    Set CurrentBook = Workbooks(ActiveWorkbook.Name) 

    If tbxHST.Value = "" Then 
     Set CurrentPage = CurrentBook.Sheets(ActiveSheet.Name) 
    Else 
     Set CurrentPage = CurrentBook.Sheets(tbxHST.Value) 
    End If 


    'transfer the data 
    TranCounter = 1 
    Do While TranCounter < 100 Or CurrentPage.Range("A" + TranCounter).Value <> "" 

     TranCounter = TranCounter + 1 
    Loop 
    Finalcounter = TranCounter 

    CurrentPage.Range("A1:Z" + Finalcounter).NumberFormat = "@" 

    Application.CutCopyMode = False 
    CurrentPage.Range("A1:AA" + Finalcounter).Copy 
    HS.Range("A1:AA" + Finalcounter).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 

    CurrentBook.Close 

End If 

EDIT: Я не хотел, чтобы люди, чтобы запустить этот код прямо, только точка была смотреть на него сравнивая пример одного завоза файла, который никогда не замерзает и тот, который замораживает. Объявления не включены. Извините за любые путаницы.

+0

Можете ли вы опубликовать фактический рабочий пример? Предоставленный фрагмент кода имеет синтаксические ошибки и не соответствует контексту конкретной процедуры. 108. [something] не является допустимым именем переменной, я не уверен, как вы его даже запускаете, поскольку это синтаксическая ошибка на моем конце. –

ответ

0

Может быть с помощью CurrentPage со ссылкой клеток вызывают его перенаправление различных файлов первенствовать при запуске второго раза

0

Так что я понял, как исправить глюк, хотя я до сих пор не понимаю/почему это делалось или почему это сработало: после завершения копирования и вставки, но перед тем, как ему будет предложено закрыть книгу, я добавил в «Application.CutCopyMode = True», и замораживание остановилось. Мне удалось запустить код импорта более 5 раз подряд без проблем. Это объясняет, почему он продолжал рушиться в этой книге, и ни одна из других.

Спасибо за помощь всем!


Application.CutCopyMode = False 
    CurrentPage.Range("A1:AA" + Finalcounter).Copy 
    Haystack.Range("A1:AA" + Finalcounter).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 
    Application.CutCopyMode = True 
    CurrentBook.Close