Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2009, 10:57   #1
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию Сообщение недостаточно ресурсов

Работает макрос, в процессе работы выдает:
Цитата:
Недостаточно ресурсов! Выберите меньше данных или закройте другие приложения
. Но при этом он все делает, что должен был. Можно избавиться от этого сообщения ибо оно выскакивает 15 раз за время работы макроса.
Код:
On Error Resume Next
не работает!
mephist вне форума Ответить с цитированием
Старый 27.07.2009, 11:07   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Если Вы в макросе используете много переменных(особенно типы: объекты(As Object и т.п.), массивы), то посоветовал бы удалять данные о них из памяти - уничтожать такие переменные после того как они отработали свою здачу:
Object:
Код:
Dim oObject as Object
set oObject = Sheets(1)
'отработал
Set oObject = Nothing
Массивы:
Код:
Dim avArray as Variant'либо другие типы
ReDim avArray(1000)
'заполнили данными - отработал
Erase avArray
А возможно пытаетесь выполнить операции над слишком большим объемом данных(большой массив) и у Вас не хватает сис.памяти для обработки такого массива полностью. В данном случае Excel пытается сам освободить часть памяти для выполнения процесса.


Это мое мнение. Сейчас может спецы подключаться и посоветуют чего-нибудь более толковое...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 27.07.2009, 12:02   #3
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Спасибо, толковая идея. Я должен был написать, что в макросе я копирую листы с вложенными Вордовскими файлами. Память после копирования вроде чищу, а он все равно ругается. Сам код:
Код:
Sub blank_fill_89()
Dim li As Long, asFileNames
    Application.Calculation = xlCalculationManual: Application.ScreenUpdating = False: Application.CutCopyMode = False: On Error Resume Next
    ActiveWorkbook.RemovePersonalInformation = False:
    asFileName = Array("hq.xlsx", "sz.xlsx", "sd.xlsx", "mk.xlsx", "mp.xlsx", "mc.xlsx", "ug.xlsx", "mn.xlsx", mh.xlsx")
    For li = LBound(asFileName) To UBound(asFileName)
        Filename = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, asFileName(li))
        With Workbooks.Open(Filename, False, , , , , True)
            Dim Sh As Worksheet
            For Each Sh In Sheets
                Sh.Unprotect
                Sh.UsedRange.Value = Sh.UsedRange.Value
            Next
        .Worksheets(14).Cells.Copy ThisWorkbook.Worksheets(li + 1).[a1]
        .RemovePersonalInformation = False
        .Close False
        End With
    Next li
    ThisWorkbook.Save
    Application.Calculation = xlCalculationAutomatic
End Sub
mephist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
недостаточно памяти kaizer131 Microsoft Office Access 12 04.03.2010 05:14
недостаточно оперативной памяти для отображения информации VVlad69 Microsoft Office Access 0 02.04.2009 14:51
файл ресурсов Rozalinda Общие вопросы Delphi 3 20.10.2008 20:31
Thread creation error - Недостаточно памяти RealSwift Общие вопросы Delphi 1 06.07.2008 12:27
Фаил ресурсов Лёка Общие вопросы Delphi 13 14.05.2008 18:08