Так неожиданная ошибка начала возникать, когда я запускаю свой 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: Я не хотел, чтобы люди, чтобы запустить этот код прямо, только точка была смотреть на него сравнивая пример одного завоза файла, который никогда не замерзает и тот, который замораживает. Объявления не включены. Извините за любые путаницы.
Можете ли вы опубликовать фактический рабочий пример? Предоставленный фрагмент кода имеет синтаксические ошибки и не соответствует контексту конкретной процедуры. 108. [something] не является допустимым именем переменной, я не уверен, как вы его даже запускаете, поскольку это синтаксическая ошибка на моем конце. –