powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Преобразование таблиц в Excel
25 сообщений из 33, страница 1 из 2
Преобразование таблиц в Excel
    #36979538
smnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, помогите написать скрипт для автоматического преобразования таблицы на Листе1 в таблицу на Листе2.
Пример в файле.
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36979574
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smntпомогите
А где попытки что-то сделать?
Или хотя бы вопросы по существу?

пока это звучит как "сделайте мне", а не как "помогите"
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36979620
smnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProА где попытки что-то сделать?
Или хотя бы вопросы по существу?

Для этого надо хоть что то знать в VB, я же полный 0... :-(
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36979840
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smntShocker.ProА где попытки что-то сделать?
Или хотя бы вопросы по существу?

Для этого надо хоть что то знать в VB, я же полный 0... :-(

ну если не полный ноль в чем-нить еще:
организация цикла:
Код: plaintext
1.
2.
For i= 1  to  10 
...
Next
Считывание из ячейки:
Код: plaintext
s=Cells(i,  2 )
запись в ячейку:
Код: plaintext
1.
Cells( 1 , i)=s
обращение к ячейке на конкретном листе:
Код: plaintext
Worksheets("Лист2").Cells(i,  2 )

дерзайте, подскажем
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36979923
накатило
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
smnt,
Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
' ************************************************
' копирование данных с листа на лист с преобразованием структуры
' ТЗ: http://www.sql.ru/forum/actualthread.aspx?tid=809349
' используютя объекты ADODB.Connection и ADODB.Recordset
Sub SmartCopy()

Const s_WkSheetFrom$ = "Лист1"      ' лист-источник
Const s_WkSheetTo$ = "Лист2"        ' лист-получатель
Const i_MaxCriteria% =  8             ' кол-во "критериев"
                        ' (!) при большом кол-ве критериев рискуем нарваться
                        ' на ограничение длины текста запроса

Dim oCnn As Object, oRst As Object  ' подключение и наборзаписей (ADO)
Dim sConnStr$                       ' строка соединения
Dim sSQL$                           ' текст запроса
Dim sFrom$                          ' auxiliarry var
Dim i%                              ' counter


' формирование текста запроса
sFrom = " FROM [" & s_WkSheetFrom & "$]"

sSQL = "SELECT [Дата], 'Данные1' as Критерий, [Данные1] as Показатель"
sSQL = sSQL & sFrom

For i =  2  To i_MaxCriteria
    sSQL = sSQL & " UNION ALL"
    sSQL = sSQL & " SELECT [Дата], 'Данные" & i & "', [Данные" & i & "]"
    sSQL = sSQL & sFrom
Next i

' строка подключения к файлу Excel
sConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Mode=Read;Data Source=" _
    & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'"

' создание объекта подключение, открытие подключения
Set oCnn = CreateObject("ADODB.Connection")
oCnn.Open sConnStr

' создание объекта наборзаписей как результат выполнения запроса в подключении
Set oRst = oCnn.Execute(sSQL)


With Worksheets(s_WkSheetTo)
    ' формирование заголовков столбцов на листе-получателе
    For i =  0  To oRst.Fields.Count -  1 
        .Cells( 1 , i +  1 ).Value = oRst(i).Name
    Next i
    
    ' копирование данных из наборзаписей на лист-получатель
    .Range("A2").CopyFromRecordset oRst
End With

' закрытие и уничтожение объектов наборзаписей и подключение
oRst.Close: Set oRst = Nothing
oCnn.Close: Set oCnn = Nothing

End Sub
ЗЫ: да простит меня Shocker.Pro
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36979946
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: накатило
> ЗЫ: да простит меня Shocker.Pro


Как лихо ты перевел разговор с "сделайте за меня" на "пробовал так, но правильно не получается"


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36979957
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
накатилоЗЫ: да простит меня Shocker.Pro

А я-то че? Я ниче.
Я, каюсь, сначала было решил, что студент очередной, потом увидел сообщения и тематику.

Осталось по стилю попытаться опознать накатившего... Шаманус что ли....
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36979968
накатило
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОФФИгорь ГорбоносКак лихо ты перевел разговор с "сделайте за меня" на "пробовал так, но правильно не получается"

Папа, это ты сейчас с кем разговаривал?(с)
Прощения просил у многоуважаемого Shocker.Pro за прерывание учебно-воспитательного процесса. А Вы о чем подумали?

Shocker.ProОсталось по стилю попытаться опознать накатившего... Шаманус что ли....
Вы мне льстите *накатило зарделся от смущения*
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36980022
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF> Автор: накатило
> А Вы о чем подумали?

Я именно об этом и подумал, о чем тонко и тактично намекнул

P.S. Что-то Адуки давненько не слышно


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36980023
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
накатилоПрощения просил у многоуважаемого Shocker.Pro за прерывание учебно-воспитательного процесса. А Вы о чем подумали?

Да брось, я ж сказал, что ошибся насчет студента, так чего ж воспитывать. Просто некогда писать (по большей части - отлаживать) - а еще начнешь писать, так выянится, что какой-нить накатило уже написал

Shocker.ProВы мне льстите *накатило зарделся от смущения*

мало кто у нас работает через рекордсеты внутри эксельного файла... ну как-то не могу сообразить
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #36980046
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пошли в курилку
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033407
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
накатило
Код: plaintext
1.
2.
' строка подключения к файлу Excel
sConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Mode=Read;Data Source=" _
    & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'"
Можно ли задать в качестве источника данных конкретный лист и/или конкретный диапазон ячеек?
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033420
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George Ru,

В селекте - имя таблицы - это и есть имя листа.
Отбор - с помощью where
кажется, иначе никак, но пусть меня поправят старшие товарищи
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033498
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProВ селекте - имя таблицы - это и есть имя листа.
Отбор - с помощью where
кажется, иначе никак, но пусть меня поправят старшие товарищи
На сколько я понимаю, данная конструкция обращается к первому Листу Книги Excel
и предполагает, что таблица находится начиная с ячейки A1
и в первой строке расположены заголовки столбцов.

Вопрос:
Можно ли конкретно задать другой Лист и другой диапазон ячеек?
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033523
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
George RuShocker.ProВ селекте - имя таблицы - это и есть имя листа.
Отбор - с помощью where
кажется, иначе никак, но пусть меня поправят старшие товарищи
На сколько я понимаю, данная конструкция обращается к первому Листу Книги Excel
и предполагает, что таблица находится начиная с ячейки A1
и в первой строке расположены заголовки столбцов.

Вопрос:
Можно ли конкретно задать другой Лист и другой диапазон ячеек?
Уже увидел
Код: plaintext
1.
' формирование текста запроса
sFrom = " FROM [" & s_WkSheetFrom & "$]"
Shocker.ProВ селекте - имя таблицы - это и есть имя листа.
А вот диапазон ячеек похоже только с A1
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033532
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George Ru,

кто вам мешает в первой строке рабочего листа прописать
-имя исходного листа
-диапазон

можете иметь сто рабочих листов, обрабатываемых обним макросом
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033555
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: George Ru
> На сколько я понимаю, данная конструкция обращается к первому Листу Книги Excel

Нет, в кляузе from указываешь имя листа с которого нужно запросить данные

> и предполагает, что таблица находится начиная с ячейки A1

Предполагается, что данные находятся в используемом диапазоне(UsedRange) который всегда начинается со столбца А

> и в первой строке расположены заголовки столбцов.

А на этот случай у нас есть багор (c) День радио эта настройка HDR=Yes; говорит что в первой стироке - заголовки,
а так - HDR=No; - скажет что заголовков нет :)

> Вопрос:
> Можно ли конкретно задать другой Лист и другой диапазон ячеек?

Можно, во from прописываешь имя листа, как правильно именуются листы можно посмотреть в MSQuery, я раньше всегда там
подсматривал :)
Диапазон ячеек всегда будет от А1(2) до конца используемого диапазона(посмотреть можно нажав Ctrl+End).
Дальше в where прописываешь условие отбора, а в select указываешь какие столбцы тебя интересуют в результате :)
Ещё момент, по значениям первых одной-трем строкам определяетмя тип данных в результирующем столбце и если у тебя
сначала идут цифры, а потом текст(например номер платежки у меня он может быть как толькоциферный, так и
буквенноциферный) то столбец будет числовой, а вместо текста будет Null.

Как-то так. :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033557
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Игорь Горбонос


Да, и ещё по моему есть возможность делать запрос к именованному диапазону. а он может быть в любом месте листа\книги


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033603
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что значит
Код: plaintext
IMEX= 2 
?

Игорь Горбоноспосмотреть в MSQuery
Подскажите, пожалста, как.

Игорь ГорбоносHDR=No; - скажет что заголовков нет :)
Дальше в where прописываешь условие отбора, а в select указываешь какие столбцы тебя интересуют в результате :)
Т.е. если HDR=No к столбцам в запросе обращаться по номеру или по названиям столбцов (A,B,C...) или как?

Игорь ГорбоносЕщё момент, по значениям первых одной-трем строкам определяетмя тип данных в результирующем столбце
Может быть можно как-то задать тип данных в запросе или в коннекте?
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033613
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь ГорбоносДа, и ещё по моему есть возможность делать запрос к именованному диапазону. а он может быть в любом месте листа\книги

А вот это может помочь!!!
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033617
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George RuИгорь ГорбоносЕщё момент, по значениям первых одной-трем строкам определяетмя тип данных в результирующем столбце
Может быть можно как-то задать тип данных в запросе или в коннекте?
9964408
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033643
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: George Ru
> а что значит
> IMEX=2?

что-то насчет разнотиповых данных в столбце


> Подскажите, пожалста, как.

C:\Program Files\Microsoft Office\OFFICE11\MSQRY32.EXE

> Т.е. если HDR=No к столбцам в запросе обращаться по номеру или по названиям столбцов (A,B,C...) или как?

Я пишу Select F1, F2, F3 from Лист1$ но я пишу в Фокспро :)

> Может быть можно как-то задать тип данных в запросе или в коннекте?

Можно попробовать

:)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37033660
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
George RuИгорь ГорбоносДа, и ещё по моему есть возможность делать запрос к именованному диапазону. а он может быть в любом месте листа\книги

А вот это может помочь!!!
Всё оказалось проще, можно задать конкретный диапазон ячеек, например так:
Код: plaintext
1.
2.
' формирование текста запроса
sFrom = " FROM [Лист1$B2:J5]"
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37034074
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, благодаря этой теме, удалось создать пример решения для темы Выбор данных их таблицы
...
Рейтинг: 0 / 0
Преобразование таблиц в Excel
    #37195100
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интелектуаллы моют косточки этому топику, осенью 2010 меня Эксель не интересовал
Хотел спросить, не понял в чём была трудность, с листа на лист одного документа всего то, или так лучше???
и почему Const i_MaxCriteria% = 8 ' кол-во "критериев" вроде же на Лист 1 9 столбцов???
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Преобразование таблиц в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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