2015-12-16 3 views
1

Я связал таблицу с базой данных и создал макрос, который очищает содержимое листа и пасты. В результатах SQL я отправляю в базу данных.Макрос SImple для удаления всех неиспользуемых столбцов и строк

Он возвращает около 30 столбцов данных, содержащих около 6000 строк данных, но размер файла вздувается до 22 МБ !? Я читал здесь об удалении/скрытии пустых столбцов и ячеек, и это уменьшило файл до 2,5 МБ.

Есть ли быстрый макрос, который спасет меня от необходимости делать это вручную каждый день, пожалуйста? Я видел много вариантов в Google, и я не могу заставить их работать правильно.

Количество столбцов остается одинаковым каждый день, но количество строк колеблется.

+0

Re: * Мне нужно отправить мой код? * - да, обычно, но, возможно, не в этом случае :) Возможно, выберите один из вариантов и укажите * детали * того, что не работает. – pnuts

+1

Я сократил его до минимума, удалил имена и пароль DB и любые идентификаторы. – HeyVBA

+0

Выглядит хорошо. Спасибо. К сожалению, нигде почти не следуют указания [mcve] (http://stackoverflow.com/help/mcve). Добро пожаловать в SO! Я подозреваю, что вас очень ценят. – pnuts

ответ

1
Sub hide_Empty_Columns() 
Dim lastCol&, i& 
Dim dataCol$ 

lastCol = Cells(1, Columns.Count).End(xlToLeft).Column 

For i = lastCol To 1 Step -1 
    With Columns(i) 
     If WorksheetFunction.CountA(Columns(i)) = 0 Then 
      Columns(i).Hidden = True 
     End If 
    End With 
Next i 

End Sub 

Довольно просто. Вы можете настроить по мере необходимости. Он скрывает любой столбец, который полностью пуст. Если вы хотите удалить столбец, измените строку Columns(i).Hidden на Columns(i).EntireColumn.Delete.

+0

Спасибо, я попробую это сейчас. Поставил ли я это в конце моего кода? – HeyVBA

+0

@HeyVBA - Я не знаю, как выглядит ваш код, поэтому я не уверен. Вы могли бы просто называть это, когда вам нужно. (Введите свой код в OP, если вы хотите, чтобы я посмотрел, могу ли я сказать, где его добавить). – BruceWayne

0

Привет, у меня тоже была эта проблема в прошлом. В основном макросы для удаления неиспользуемых столбцов и строк не помогли. (некоторые, но немного).

Я обнаружил, что большая часть проблемы была 2 вещи. 1) Excel, сохраняющий кучу истории XML. 2. Беспорядок VBA.

Попробуйте эти две вещи. 1) Сохраните файл как файл xlsb. Это изменит все на двоичное и сохранит пустое пространство xml. 2) используйте утилиту для очистки кода, найденную здесь http://www.appspro.com/Utilities/CodeCleaner.htm Удивительно, сколько места может спасти ваша вещь.

BTW, если вы сохраните файл как файл myfile.zip, вы можете открыть его и посмотреть, где находится основная часть вашей проблемы. Будьте осторожны при редактировании там, потому что вы можете повредить вещи.

Надеюсь, это поможет.

Смежные вопросы