0 / 0 / 0
Регистрация: 11.03.2011
Сообщений: 19

Получить список листов в эксель файле без его полной загрузки + 1 вопрос

11.03.2011, 12:30. Показов 4064. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, сейчас использую такой код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim objExcelOld As New Excel.Application
 
ComboOld.Text = "Файл загружается..."
objExcelOld.Workbooks.Open "C:\1.xlsx|, ReadOnly:=True
objExcelOld.Visible = False
 
ComboOld.Clear
For i = 1 To objExcelOld.Sheets.Count
ComboOld.AddItem objExcelOld.Sheets(i).Name
Next i
ComboOld.ListIndex = 0
objExcelOld.Workbooks.Close
Так заполняем комбобокс списком листов в файле.
Если файл много весит, этот процесс занимает значительное время - пока полностью загрузится, мы получим список и выгрузим файл.

Как можно ускорить данный процесс?

Думал использовать ADO

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim conn As New ADODB.Connection
Dim rrr As New ADODB.Recordset
 
ComboNew.Clear
            
Do While Not rrr.EOF
    Debug.Print rrr.Fields("TABLE_NAME").Value
    ComboNew.AddItem rrr.Fields("TABLE_NAME").Value
    rrr.MoveNext
Loop
 
ComboNew.ListIndex = 0
но перед получением списка листов почему-то сначала идут 2 левые строки:
_xlnm#_FilterDatabase
_xlnm#Print_Titles

'Оплата ОБОР без курс#раз_New$' - имя листа в книге эксель. почему-то _точка_ заменена на # в конце бакс.

sql знаю не очень, бакс думаю связан с его синтаксисом, а точку почему убрали?


Есть ли другие способы для моей задачи, лучше попроще и побыстрее

+ вопрос.
если, например, способа нету, то как передать файл после открытия в одной процедуре в другую процедуру?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub ButtonNew11111111111111111111_Click()
Dim objExcelNew As New Excel.Application
 
Call OpenFileDialog(TextNew) ' Это common file dialog для нахождения адреса файла, например "c:\1.xlsx"
 
'Загружаем новый файл
If Not TXTTrig.Text = "False" Then 'Проверка на то, была ли нажата "отмена"
ComboNew.Text = "Файл загружается..."
objExcelNew.Workbooks.Open TextNew.Text, ReadOnly:=True
objExcelNew.Visible = False
 
'---Заполняем комбо боксы списком листов в книге эксель Новый ------
ComboNew.Clear
For i = 1 To objExcelNew.Sheets.Count
ComboNew.AddItem objExcelNew.Sheets(i).Name
Next i
ComboNew.ListIndex = 0
'-------------------------------------------------------------------
objExcelNew.Workbooks.Close
TXTTrigNew.Text = "True"
Else 'Если в меню не выбран файл, очищаем все...
TXTTrigNew.Text = "False"
TextNew.Text = "Выберите новый файл..."
ComboNew.Clear
ComboNew.Text = "Загрузите файл..."
 
End If
End Sub
Как их этой процедуры перекинуть файл в другую, где идет основной код, чтобы файл заново не открывался?

У меня сейчас сделано, что 1 раз файл экселевский открывается чтобы заполнить комбо бокс списком листов, выбрать нужный лист, а потом над ним произвести минипуляции.
2 раза грузить файл очень долго.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2011, 12:30
Ответы с готовыми решениями:

Чтение из xml без полной его загрузки в память
Привет всем! У меня есть программа, которая работает с базой данный в xml-формате, полученной из сети. База весит почти 90 мегабайт....

Получение cookie без полной загрузки страницы
Здравствуйте товарищи программисты. Подскажите пожалуйста на каком языке быстрее, удобней и легче будет сделать скрипт или программу...

Как сменять контент в ASP.NET без полной загрузки?
Здравствуйте, я ни как не могу разобраться с тем что в ASP.NET нет фреймов и как реализовать такую функциональность ,чтоб щелкая на кнопке...

3
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 141
20.06.2019, 16:12
Надо получить из файла с большим кол-вом листов, таблицу из двух колонок:
1. Имя листа;
2. Содержимое ячейки A9 каждого листа (это текст, название организации).

Кто может подсказать?
Можно в отдельном файле, можно в том же на новый лист.

Спасибо.
0
1104 / 480 / 33
Регистрация: 05.07.2018
Сообщений: 1,870
Записей в блоге: 7
20.06.2019, 17:18
Уважаемый FUrystorm,
у меня возникла мысль. А что если считать файл в строковую переменную или массив.
Тогда это легко можно передать в любую процедуру...
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
21.06.2019, 19:39
Открыть файл как ZIP архив и проанализировать содержимое.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.06.2019, 19:39
Помогаю со студенческими работами здесь

Работа со StringGrid. Выдать список листов за дату, список листов с протяженностью более заданной...
Здравствуйте! Помогите доработать. Программа должна выдавать список листов за дату, список листов с протяженностью более заданной,...

Получить список имен листов
В файле много листов. Имена у листов меняются. У листы делятся на группы. Каждая группа выполняет свою функцию. Всё это не...

Вывести список листов книги без ее открытия
Добрый день. В ячейке прописан полный путь к книге, например C:\Excel\123.xlsx. Возможно ли получить список листов данной книги без её...

Как сделать, чтобы какой- либо элемент появлялся только после полной его загрузки (например картинка)?
Как сделать, чтобы какой- либо элемент появлялся только после полной его загрузки (например картинка)? Желательно средствами html и css.

Как сделать, чтобы какой- либо элемент появлялся только после полной его загрузки (например картинка)?
Как сделать, чтобы какой- либо элемент появлялся только после полной его загрузки (например картинка)?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru