Страница 1 из 2
Ошибка обработки макросов
Добавлено: 07 фев 2014 14:40
krasenkov
Здравствуйте, подскажите можно как-то вылечить эту ошибку?
Настройка макросов VBA - Проверить макрос на прайс-листе
Выдает ошибку, см. скриншот.
Ну и понятное дело, эта ошибка стопорит импорт при импорте всех прайсов.
В настройках офиса макросы разрешены. Раньше все работало, а сейчас не понятно что произошло.
На новой базе ошибка не уходит, переустановка PLI с поднятием бекапа БД не помогает.
Макрос и прайс прилагается
Re: Ошибка обработки макросов
Добавлено: 10 фев 2014 10:42
support
Вероятнее всего ошибка в макросе. Обратитесь к разработчику макроса.
Re: Ошибка обработки макросов
Добавлено: 11 фев 2014 08:06
Ixenon
Привет, попробуй этот.
Re: Ошибка обработки макросов
Добавлено: 11 фев 2014 16:53
krasenkov
Ixenon писал(а):Привет, попробуй этот.
Что-то не хотит
Re: Ошибка обработки макросов
Добавлено: 11 фев 2014 18:25
Ixenon
Первый блин получился комом

Вот исправленный вариант.
Код: Выделить всё
Option Explicit
Public Sub MainVBA()
Dim lngSheetID As Long ' номер листа с которым работать
Dim varNewFileName As Variant
Dim fs As Variant
Dim i As Long
Dim j As Long
Dim RowsCount As Long
Dim ColumnsCount As Long
Dim PriceColumn As Long
Dim Brand As String
Dim Category As String
Dim FileNameInFull As String
Dim FileNameInDataModifySplit As Variant
Dim FileNameInDataModify As String
Application.ScreenUpdating = False
'Корректируем
For i = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(i, 1) <> "" And Trim(Cells(i, 2)) = "" Then
Category = Cells(i, 1)
Else
Cells(i, 5) = Category
If Cells(i, 1) <> "" And Trim(Cells(i, 2)) <> "" And Cells(i, 1).Interior.ColorIndex = 35 Then
Brand = Cells(i, 1)
Cells(i, 6) = Brand
Cells(i, 7) = Cells(i, 6) & " " & Cells(i, 2)
Else
Cells(i, 6) = Brand
Cells(i, 7) = Cells(i, 6) & " " & Cells(i, 2)
End If
End If
Next i
'Сохраняем данные в новом файле из буфера обмена
Set fs = CreateObject("Scripting.FileSystemObject")
varNewFileName = Replace(ActiveWorkbook.FullName, ActiveWorkbook.Name, "") & "_" & ActiveWorkbook.Name
If fs.FileExists(varNewFileName) = True Then
Kill varNewFileName
End If
Application.CutCopyMode = False
Application.DisplayAlerts = False
Dim nSourceFile As Long
Dim nDestFile As Long
Dim nTotalSheets As Long
Dim nSheetsAdd As Long
nSourceFile = Workbooks.Count
nTotalSheets = Workbooks.Item(nSourceFile).Worksheets.Count
Workbooks.Add
nDestFile = Workbooks.Count
If nTotalSheets > 3 Then
For nSheetsAdd = 1 To nTotalSheets - 3
Workbooks.Item(nDestFile).Sheets.Add
Next nSheetsAdd
End If
For lngSheetID = 1 To nTotalSheets
Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).Activate ' активируем лист источник
Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).UsedRange.Copy
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Activate ' активируем новый лист
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Paste
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Name = Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).Name
Next lngSheetID
Workbooks.Item(nDestFile).Sheets.Item(1).Activate
Workbooks.Item(nSourceFile).Sheets.Item(1).Activate
Application.ScreenUpdating = True
Workbooks.Item(nDestFile).SaveAs varNewFileName, Workbooks.Item(nSourceFile).FileFormat, , , False, False, 1, 2
Workbooks.Item(nDestFile).Close
'Application.Quit
End Sub
Re: Ошибка обработки макросов
Добавлено: 11 фев 2014 19:10
krasenkov
Все равно что-то ругается
Re: Ошибка обработки макросов
Добавлено: 12 фев 2014 05:40
Ixenon
Попробуйте этот:
Код: Выделить всё
Option Explicit
Public Sub MainVBA()
Dim lngSheetID As Long ' номер листа с которым работать
Dim varNewFileName As String
Dim fs As Variant
Dim i As Long
Dim Brand As String
Dim Category As String
Application.ScreenUpdating = False
'Корректируем
On Error Resume Next
For i = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(i, 1) <> "" And Trim(Cells(i, 2)) = "" Then
Category = Cells(i, 1)
Else
Cells(i, 5) = Category
If Cells(i, 1) <> "" And Trim(Cells(i, 2)) <> "" And Cells(i, 1).Interior.ColorIndex = 35 Then
Brand = Cells(i, 1)
Cells(i, 6) = Brand
Cells(i, 7) = Cells(i, 6) & " " & Cells(i, 2)
Else
Cells(i, 6) = Brand
Cells(i, 7) = Cells(i, 6) & " " & Cells(i, 2)
End If
End If
Next i
'Сохраняем данные в новом файле из буфера обмена
Set fs = CreateObject("Scripting.FileSystemObject")
varNewFileName = Replace(ActiveWorkbook.FullName, ActiveWorkbook.Name, "") & "_" & ActiveWorkbook.Name
If fs.FileExists(varNewFileName) = True Then
Kill varNewFileName
End If
Application.CutCopyMode = False
Application.DisplayAlerts = False
Dim nSourceFile As Long
Dim nDestFile As Long
Dim nTotalSheets As Long
Dim nSheetsAdd As Long
nSourceFile = Workbooks.Count
nTotalSheets = Workbooks.Item(nSourceFile).Worksheets.Count
Workbooks.Add
nDestFile = Workbooks.Count
If nTotalSheets > 3 Then
For nSheetsAdd = 1 To nTotalSheets - 3
Workbooks.Item(nDestFile).Sheets.Add
Next nSheetsAdd
End If
For lngSheetID = 1 To nTotalSheets
Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).Activate ' активируем лист источник
Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).UsedRange.Copy
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Activate ' активируем новый лист
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Paste
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Name = Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).Name
Next lngSheetID
Workbooks.Item(nDestFile).Sheets.Item(1).Activate
Workbooks.Item(nSourceFile).Sheets.Item(1).Activate
Application.ScreenUpdating = True
Workbooks.Item(nDestFile).SaveAs varNewFileName, Workbooks.Item(nSourceFile).FileFormat, , , False, False, 1, 2
Workbooks.Item(nDestFile).Close
'Application.Quit
End Sub
Re: Ошибка обработки макросов
Добавлено: 13 фев 2014 17:10
krasenkov
Работает, большое спасибо.
Re: Ошибка обработки макросов
Добавлено: 13 фев 2014 17:47
Ixenon
krasenkov писал(а):Работает, большое спасибо.
Пожалуста

Re: Ошибка обработки макросов
Добавлено: 23 фев 2016 19:12
Sancho.smadshop
Dim lngSheetID As Long ' номер листа с которым работать
Как прописать больше листов? Отпишитесь если кто в курсе. Если ничего не прописать - импортируется только первый лист.