Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/35: Рейтинг темы: голосов - 35, средняя оценка - 4.69
23 / 1 / 0
Регистрация: 01.01.2015
Сообщений: 60
1

Ошибка открытия файла после сортировки: Удалось открыть файл, восстановив или удалив нечитаемое содержимое

03.04.2015, 18:23. Показов 6317. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!

Делаю на листе Excel сортировку через VBA, всё ок, закрываю файл.

Открываю снова и выходит ошибка:

"Excel удалось открыть файл, восстановив или удалив нечитаемое содержимое.
Удаленные записи: Сортировка из части /xl/worksheets/sheet1.bin"

Закрываю эту ошибку, файл открывается, никаких критичных изменений не вижу.
Сохраняю файл повторно - ошибка больше не появляется. И так каждый раз после сортировки и сохранения файла после нее.

В чем может быть проблема?

Сам код сортировки (буду благодарен, кто научит сокращать код сортировки по многим полям):

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
lastRow = Sheets("блокировки").Cells(Rows.Count, 3).End(xlUp).Row
 
With Worksheets("блокировки").Sort.SortFields
        .Add Key:=Range("C2", Range("C" & lastRow)), order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
        .Add Key:=Range("E2", Range("E" & lastRow)), order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
        .Add Key:=Range("F2", Range("F" & lastRow)), order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
        .Add Key:=Range("A2", Range("A" & lastRow)), order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
        .Add Key:=Range("B2", Range("B" & lastRow)), order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
        .Add Key:=Range("U2", Range("U" & lastRow)), order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
        .Add Key:=Range("V2", Range("V" & lastRow)), order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
        .Add Key:=Range("W2", Range("W" & lastRow)), order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
End With
    
With ActiveWorkbook.Worksheets("блокировки").Sort
    .SetRange Range("A1", Range("AB" & lastRow))
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2015, 18:23
Ответы с готовыми решениями:

Ошибка: LoadPicture: не удалось открыть файл
ошибка: LoadPicture: не удалось открыть файл..... В чем дело?

Переписать содержимое файла в другой файл, предварительно удалив из него все символы -и /
Дан символьный файл. Переписать его содержимое в другой файл, предварительно удалив из него все...

Не удалось открыть поток: нет такого файла или каталога
Установил через композер laravel 5.2 При попытке запуска вылазит такая ошибка Warning:...

Открыть файл с помощью определённой программы и сделать её программой по умолчанию для открытия этого файла
Как открыть файл с помощью определенной проги и установить её программой по умолчанию для этого...

4
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
03.04.2015, 19:37 2
Лучший ответ Сообщение было отмечено JohnDrinking как решение

Решение

1. Можно очищать параметры сортировки после применения сортировки, чтобы они не сохранялись в файле
Visual Basic
1
Worksheets("блокировки").Sort.SortFields.Clear
Кстати, Вам реально нужна 8-уровневая сортировка?
Я со времен XL2000 привык обходиться 3-уровневой, и только однажды понадобилась 4-уровневая (которую было несложно реализовать второй сортировкой).

2.
Цитата Сообщение от JohnDrinking Посмотреть сообщение
буду благодарен, кто научит сокращать код сортировки по многим полям
Visual Basic
1
2
3
4
5
With Worksheets("блокировки").Sort.SortFields
    For Each x In Split("C E F A B U V W")
      .Add Key:=Range(x & "2:" & x & lastRow), Order:=xlAscending, SortOn:=xlSortOnValues, DataOption:=xlSortNormal
    Next
End With
3
6930 / 2838 / 545
Регистрация: 19.10.2012
Сообщений: 8,670
04.04.2015, 00:58 3
Я не спец по сортировкам - но почему ключи задаются со второй строки, а сама сортировка с первой?
0
23 / 1 / 0
Регистрация: 01.01.2015
Сообщений: 60
04.04.2015, 12:10  [ТС] 4
Цитата Сообщение от Казанский Посмотреть сообщение
1. Можно очищать параметры сортировки после применения сортировки, чтобы они не сохранялись в файле
Спасибо большое! Попробую на работе.

Цитата Сообщение от Казанский Посмотреть сообщение
Кстати, Вам реально нужна 8-уровневая сортировка?
есть Номер Поставщика и различные параметры, такие как Номер Склада, Условия Хранения, Ассортимент и т.д. - могут быть в любых сочетаниях, а макрос в массиве должен проходить по каждой строчке, чтобы похожие строчки были вместе для правильно работы макроса. Для того, чтобы анализировать таблицу без сортировки приходят на ум только SQL-запросы, но там один геморрой в работе с Excel с форматами, значениями NULL .

Цитата Сообщение от Hugo121 Посмотреть сообщение
Я не спец по сортировкам - но почему ключи задаются со второй строки, а сама сортировка с первой?
Вообще, начал писать со 2-й строки, чтобы не указывать в каждом поле Header = xlYes (для сокращения кода).
Я так понимаю, что в моем коде не сортируется вторая строка в таблице? (т.к. "шапка" указана по второй строке)
0
6930 / 2838 / 545
Регистрация: 19.10.2012
Сообщений: 8,670
04.04.2015, 12:15 5
Цитата Сообщение от JohnDrinking Посмотреть сообщение
макрос в массиве должен проходить по каждой строчке, чтобы похожие строчки были вместе для правильно работы макроса
Напишите другой, которому это не важно.
0
04.04.2015, 12:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2015, 12:15
Помогаю со студенческими работами здесь

InstallUtil. Не удалось загрузить файл или сборку. Не удалось найти указанный файл
Имеется bat файл для запуска службы windows: ...

Возможно ли восстановить содержимое раздела, восстановив файловую систему?
Хотел перераспределить пространство жесткого диска между логическими разделами и, внезапно,...

Ошибка. Не удалось загрузить файл или сборку MySql.Data.CF
При запуске exe файла из папки Release или Debug появляется окно с ошибкой: ...

Открыть текстовый файл, дозаписать в него данные, вывести содержимое файла (файловый ввод/вывод)
Открыть текстовый файл 1.txt, имя файла указывается в командной строке. Дозаписать в него данные....

Открыть диалоговое окно с открытием файла, потом, выбрав файл txt, в textbox вывести содержимое
Недавно начал изучать c# Может быть мой вопрос прозвучит банальным. Как мне при нажатии на кнопку...

Ошибка C1083 "Не удалось открыть файл источник..."
Скачал Visual Studio 2015. После компиляции, Visual выдал ошибку "Не удалось открыть файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru