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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2009, 01:15   #11
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Итак, как Эксель ел память, так он ее и есть, но при этом макрос делает свое дело. По логике мне по фигу - у меня еще и виртуальная память есть. Хотя с 23 метров в памяти во время работы на самом большом файле Эксель вырос до 42 метро. Почти в два раза.

Итак, мои ошибки

1. Я убрал лишний код активации окна
Код:
'Application.Workbooks(SHB_file).Activate
на фиг это надо, если это окно потом и так закрывается.

2. Самая прикольно, где и возникала ошибка. Зачем делать СОХРАНИТЬ КАК, и тут же потмо СОХРАНИТЬ?
Код:
Application.Workbooks(SHB_file).SaveAs Filename:=symbol, _
        FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False

'ActiveWorkbook.Save
Во - первых медленне, после оставления только первого сохранения - прога условно говоря - полетела.
Во - вторых макрос первый раз сработал без вопросов о памяти и сохранении левого имени файла типа ERFDR34345.xls

3. Я услышал советы и использовал
Код:
Option Explicit
- кстати он помог мне увидеть, что в первоначальном коде было две схожих переменных str_Zero и str_Sero - так что нужна штука для приучения следить за "базаром".

Вообщем всем спасибо. Может не оптимально, но я задачу решил. Хотя вопрос - почему Эксель жрет память остался. но пока так и не нашел ответа. По моей логике - закрыл книгу и освободи ресурс, а он растет с каждой открытой книгой....

И еще прикол - вынеся объявления переменных за код процедуры я слегка уменьшил рост памяти, так и не поняв с чем это связано. Но, грубо говоря, с переменными внутри память росла на 400-500 кб, без них на 100-220 кб.
Странно, однако....
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 23.09.2009, 05:19   #12
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте grenles.
небольшая деталь, такое объявление и VB(A):
Dim WorkBookMy, SHB_path, SHB_file, SHB_sheet, ISU_path, ISU_file, ISU_sheet As String
задает тип String только последней переменной ISU_sheet, все остальные будут иметь тип Viriant, исправляется так:
Dim WorkBookMy As String, SHB_path As String, SHB_file As String,...
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 23.09.2009, 11:03   #13
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте grenles.
небольшая деталь, такое объявление и VB(A):
Dim WorkBookMy, SHB_path, SHB_file, SHB_sheet, ISU_path, ISU_file, ISU_sheet As String
задает тип String только последней переменной ISU_sheet, все остальные будут иметь тип Viriant, исправляется так:
Dim WorkBookMy As String, SHB_path As String, SHB_file As String,...
Евгений.
ОПа... Вот спасибо, а я то думал, я умный )))))))))))))
и это пройдет...
grenles вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос при сохранении Полина Л. Помощь студентам 0 14.09.2009 16:30
[Pascal] вывод элементов из файла случайным образом Рамик Помощь студентам 4 28.05.2009 17:18
Как вывести на экран двумерный массив случайным образом? Stager Общие вопросы C/C++ 5 07.01.2009 20:53
Машина случайным образом генерирует натуральные числа в промежутке [0, 1, 2, … 100] JustinTI Помощь студентам 4 21.12.2008 14:31
Машина случайным образом генерирует натуральные числа в промежутке [0, 1, 2, … 10] до тех пор, пока не 0 JustinTI Помощь студентам 3 21.12.2008 14:31