Добрый день.
Формирую реестры определенные процедурой, 1 раз запускается - выполняется, второй раз запускаешь - выдается ошибка 400. В окне выбираешь ОК - открывается лист и исходными данными (весь лист выделен), переходишь на основной лист с кнопками, пытаешься выполнить снова - выполняется.
Пытался очистить буфер обмена CutCopyMode, но не помогает = в буфере остаются сгенерированные файлы.
Формирую реестры определенные процедурой, 1 раз запускается - выполняется, второй раз запускаешь - выдается ошибка 400. В окне выбираешь ОК - открывается лист и исходными данными (весь лист выделен), переходишь на основной лист с кнопками, пытаешься выполнить снова - выполняется.
Пытался очистить буфер обмена CutCopyMode, но не помогает = в буфере остаются сгенерированные файлы.
Код |
---|
Public Sub BAK_BIK() ' Отключаем моргание экрана при выполнении Application.ScreenUpdating = False Application.DisplayAlerts = False ' Очищаем буфер обмена Application.CutCopyMode = False ' Получаем имя листа RCVNAME = Worksheets("Макрос").Range("E2").Value Dim lLastRow Dim lLastCol ' Последняя строка lLastRow = Worksheets(RCVNAME).UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 ' Последний стобец lLastCol = Worksheets(RCVNAME).UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1 Worksheets(RCVNAME).Select Selection.AutoFilter Worksheets(RCVNAME).Cells(lLastRow, lLastCol).AutoFilter Field:=17, Criteria1:="<>WARRANTOR" Worksheets(RCVNAME).Cells(lLastRow, lLastCol).AutoFilter Field:=5, Criteria1:="=BAK" _ , Operator:=xlOr, Criteria2:="=BIK" Worksheets(RCVNAME).Cells(lLastRow, lLastCol).AutoFilter Field:=7, Criteria1:="<>0" ' Создаем каталог Dim folder Dim folder2 Dim FilePath FilePath = "BIK_BAK"' MkDir ThisWorkbook.Path + "\" + "BIK_BAK" folder = ThisWorkbook.Path & "\" & FilePath ' MsgBox folder ' Если нет такого каталога, то создаем. If CreateObject("Scripting.FileSystemObject").FolderExists(folder) = True Then Else MkDir folder End If' Выбираем отфильтрованные столбцы Worksheets(RCVNAME).Range("AS:AS,AW:AW,AX:AX,AY:AY,E:E,G:G,I:I").Copy ' Добавляем новый лист и вставляем на него скопированные данные Sheets.Add(, Sheets(Sheets.Count)).Name = "BIK_BAK" Worksheets("BIK_BAK").Paste ' Количество строк Dim Count_str As Integer Dim Count_reestr As Integer Dim Count_str_v_it As Integer Count_str = Application.WorksheetFunction.CountIfs(Sheets("BIK_BAK").Range("A:A"), "<>") Count_reestr = Worksheets("Макрос").Range("G12").Value Count_str_v_it = Fix((Count_str / Count_reestr)) + 1 ' fix, отбрасывает дробную часть, + 1 - когда не целое число получается ' MsgBox Count_str_v_it Dim D_end As Integer D_end = Count_str_v_it * Count_reestr Dim n1 n1 = 1 Dim i For i = n1 To D_end Step Count_str_v_it Worksheets("BIK_BAK").Range(Worksheets("BIK_BAK").Cells(i, 1), _ Worksheets("BIK_BAK").Cells(i + Count_str_v_it - 1, 7)).Copy Sheets.Add(, Sheets(Sheets.Count)).Name = "BIK_BAK" & i Worksheets("BIK_BAK" & i).Paste ' Подготавливаем данные для генерации файла Dim Arr Dim Headers Arr = Worksheets("BIK_BAK" & i).Range("A1:G" & D_end).Value Headers = Array("Тип", "DPD", "Регион", "ID клиента", "Имя", "Отчество", "Фамилия", "Код ручного обзвона") SaveArray Arr, Headers, folder, "Реестр" & i ' создаём из массива Arr файл Excel с именем СКЛАД ' Отключаем уведомления Application.DisplayAlerts = False ' Удаляем листы Worksheets("BIK_BAK" & i).Delete Next ' Удаляем листы Worksheets("BIK_BAK").Delete Worksheets("Макрос").Activate ' Очищаем буфер обмена Application.CutCopyMode = False MsgBox ("Формирование завершено") End Sub |