powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в эксель на один и тот-же лист
15 сообщений из 15, страница 1 из 1
Экспорт в эксель на один и тот-же лист
    #39912374
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форме находится кнопка экспорта в эксель,при нажатии которой должен происходить экспорт
одного из двух запросов (взависимости от положения выключателя на тойже форме - 'vklPoiskPKI')
В запросе "ForExportPKI" экспортируются записи из таблицы1 по определенному критерию на лист экселя ForExportPKI,а в запросе "ForExportPKIfull"-
экспортируется вся таблица1 на лист экселя ForExportPKIfull (они создаются автоматом при срабатывании того или иного запроса).
Как сделать так,чтобы все экспортировалось на один и тот-же лист?

Вот мой код:
fileroads = CurrentProject.Path & "\PKI.xls"
If (Me.vklPoiskPKI = 0) Then
DoCmd.TransferSpreadsheet acExport, 8, "ForExportPKI", fileroads, False, ""
Else
DoCmd.TransferSpreadsheet acExport, 8, "ForExportPKIfull", fileroads, False, ""
End If
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39912376
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...с перезаписью разумеется
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39912426
drafty, уточните вопрос. Вы хотите, чтоб в результате любого экпорта в созданном файле лист назывался одинаково? Тогда:
Код: vbnet
1.
2.
3.
DoCmd.TransferSpreadsheet acExport, 8, "ForExportPKI", fileroads, False, "ИмяЛиста"
Else
DoCmd.TransferSpreadsheet acExport, 8, "ForExportPKIfull", fileroads, False, "ИмяЛиста"
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39912446
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
drafty, уточните вопрос. Вы хотите, чтоб в результате любого экпорта в созданном файле лист назывался одинаково? Тогда:
Код: vbnet
1.
2.
3.
DoCmd.TransferSpreadsheet acExport, 8, "ForExportPKI", fileroads, False, "ИмяЛиста"
Else
DoCmd.TransferSpreadsheet acExport, 8, "ForExportPKIfull", fileroads, False, "ИмяЛиста"


Да,то что надо.Работает в соответствии с задумкой.
Премного благодарен 👍
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39912651
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий,
Случайное совпадение, но в одно и тоже время рядом оказались два топика с одной той же проблемой - задание имени листа при экспорте в Ексель.
Еще раз спасибо.
Вы про эту возможность узнали случайно(незадокументированную)?
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39913115
ИВП
задание имени листа при экспорте в Ексель.
Вы про эту возможность узнали случайно(незадокументированную)?
Нет, не случайно.
Дело в том, что TransferSpreadsheet после выгрузки присваивает имя диапазону с данными, а такое же имя листа, то это уже вторично. По умолчанию это имя таблицы/запроса.
Альтернатива этому методу - запрос на создание таблицы.
Выглядит так: SELECT ... INTO [ Имя ] IN 'Путь' [Excel...]
Заметьте - [Имя], а не [Имя$], как указывается имя листа.
Т.е. запрос умеет задавать имя диапазона, а TransferSpreadsheet - нет?! Вот и полез пробовать.
Оказалось, что это не все плюшки. Метод умеет повторно выгружать данные в тот же диапазон в том же файле, причем:
1. Имя листа не имеет значения;
2. Если кол-во записей изменилось, то размеры диапазона меняются (уменьшаются без проблем, а увеличиваются, если требуемые строки пусты.
Файл должен быть закрыт.

Попробуйте создать заготовку для выгрузки (или доработать результат экспорта) с достаточным количеством строк, оформлением и итогами внизу. Присвойте диапазону имя и выполнить TransferSpreadsheet, указав это имя.
Мне понравилось...
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39913936
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий,

Попробовал вот так
Код: vbnet
1.
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, Запрос, Файл, , "Лист$Диапазон"


Запрос - имя запроса
Файл - имя файла с путем к нему

Ругается на "Лист$Диапазон". Как же указать и лист и диапазон?
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39914115
ИВП
Ругается на "Лист$Диапазон". Как же указать и лист и диапазон?

Правильно ругается. Указанное имя никак не должно быть похоже на адрес.
Но я не понял смысл вашей хотелки. Если не учитывать описанные выше возможности, то TransferSpreadsheet выгружает данные на новый лист в верхний левый угол.
Если же вы тренируетесь с шаблоном, то нужно просто указать имя, присвоенное диапазону ранее.
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39914352
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
Если же вы тренируетесь с шаблоном, то нужно просто указать имя, присвоенное диапазону ранее.
Вот я и хочу вывести результат запроса на лист с задаваемым именем (получилось) и в задаваемый диапазон (не получается).
Как же задать одновременно имя листа и имя диапазона (на котором задан формат)?
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39914372
Я же писал уже! Заранее задайте имя нужному диапазону (с запасом строк) на нужном листе, а затем выполните TransferSpreadsheet, указав имя диапазона.
Если вас такой подход не устраивает, то используйте метод CopyFromRecordset Ёкселя. Он вставит данные в любое указанное место. А другими методами Ёкселя можно переименовать лист, отформатировать, добавить итоги и т.д.
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39914450
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий,
Имя диапазона задано и указывается в TransferSpreadsheet, а для какого листа - где это задать?
Лист, имя которого совпадает с именем запроса?
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39914463
ИВП
Имя диапазона задано и указывается в TransferSpreadsheet, а для какого листа - где это задать?
Нигде. Если экспорт выполняется в новый файл, то это всегда новый лист с данными в левом верхнем углу.
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39914464
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий,
Получилось!!!
Всегда считал, что имя диапазона может быть не уникальным (повторяться на разных листах).
Поэтому и возник вопрос в предыдущем сообщении.
Оказывается, что нет! Т.е. в TransferSpreadsheet указывается имя диапазона без имени листа, а оно единственное во всей книге!!!

Спасибо!

Ваше последнее сообщение появилось после того, как получилось.
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39914716
ИВП
Всегда считал, что имя диапазона может быть не уникальным (повторяться на разных листах).
Вообще-то может. По умолчанию имя уникально для всей книги, но если имя присваивать через меню, то можно указать видимость в пределах листа.
...
Рейтинг: 0 / 0
Экспорт в эксель на один и тот-же лист
    #39914780
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
... По умолчанию имя уникально для всей книги, но если имя присваивать через меню, то можно указать видимость в пределах листа.

Вообщем, для себя сделал вывод такой.
В параметре Region указывается имя Диапазона.
Если такой диапазон в книге есть, то вывод производится в него.
Если нет - то создается лист с таким именем, вывод производится на этот лист начиная с ячейки A1
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в эксель на один и тот-же лист
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]