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

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

Для этого надо хоть что то знать в VB, я же полный 0... :-(
...
Рейтинг: 0 / 0
26.11.2010, 17:15
    #36979840
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
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
26.11.2010, 17:40
    #36979923
накатило
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
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
26.11.2010, 17:46
    #36979946
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
> Автор: накатило
> ЗЫ: да простит меня Shocker.Pro


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


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

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

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

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

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

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

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


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

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

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

мало кто у нас работает через рекордсеты внутри эксельного файла... ну как-то не могу сообразить
...
Рейтинг: 0 / 0
26.11.2010, 18:19
    #36980046
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
Пошли в курилку
...
Рейтинг: 0 / 0
24.12.2010, 11:53
    #37033407
George Ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
накатило
Код: 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
24.12.2010, 11:56
    #37033420
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
George Ru,

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

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

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

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

можете иметь сто рабочих листов, обрабатываемых обним макросом
...
Рейтинг: 0 / 0
24.12.2010, 12:32
    #37033555
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
> Автор: 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
24.12.2010, 12:34
    #37033557
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
> Автор: Игорь Горбонос


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


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

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

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

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

А вот это может помочь!!!
...
Рейтинг: 0 / 0
24.12.2010, 12:49
    #37033617
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
George RuИгорь ГорбоносЕщё момент, по значениям первых одной-трем строкам определяетмя тип данных в результирующем столбце
Может быть можно как-то задать тип данных в запросе или в коннекте?
9964408
...
Рейтинг: 0 / 0
24.12.2010, 12:57
    #37033643
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
> Автор: 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
24.12.2010, 13:00
    #37033660
George Ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование таблиц в Excel
George RuИгорь ГорбоносДа, и ещё по моему есть возможность делать запрос к именованному диапазону. а он может быть в любом месте листа\книги

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


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