С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 30
1

Перенос данных excel -excel на разные листы

06.05.2015, 13:41. Показов 2810. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Возникла небольшая проблема:
Переношу данные из книги в книгу, но в каждой книге по 3 листа, а данные переносятся только в тот лист в котором задействован макрос или нажата кнопа.
Дак вот, сам вопрос: что дописать, что бы не приходилось использовать 3 кнопки или прожимать 3 макроса, а сделать выбор листа в самом коде?
Кликните здесь для просмотра всего текста
Visual Basic
1
2
'строка на которую грешу...
Cells(i, 2) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "L143'!" & Range("B14").Range("A1").Address(, , xlR1C1))


Кликните здесь для просмотра всего текста
Visual Basic
1
2
'пробовал так, но не вышло:
Cells(i, 2) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "L143'!" & Sheets("Лист1").Range("B14").Range("A1").Address(, , xlR1C1))


весь скрипт:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub ìàêðîñ()
    Dim path As String, file As String, arg As String, i As Long, n As Long
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Óêàæèòå ðàáî÷óþ ïàïêó": .Show
        If .SelectedItems.Count = 0 Then Exit Sub Else path = .SelectedItems(1) & "\"
    End With
       Rows("14:" & Rows.Count).ClearContents: file = Dir(path & "*.xls"): i = 14
     Do While file <> ""
    n = n + 1
   
        Cells(i, 1) = n
        Cells(i, 2) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "L143'!" & Range("B14").Range("A1").Address(, , xlR1C1))
        Cells(i, 3) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "L143'!" & Range("C14").Range("a1").Address(, , xlR1C1))
        Cells(i, 4) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "L143'!" & Range("D14").Range("A1").Address(, , xlR1C1))
        Cells(i, 5) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "L143'!" & Range("E14").Range("A1").Address(, , xlR1C1))
        Cells(i, 6) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "L143'!" & Range("F14").Range("A1").Address(, , xlR1C1))
        Cells(i, 7) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "L143'!" & Range("G14").Range("A1").Address(, , xlR1C1))
        i = i + 1: file = Dir
    Loop
UserForm1.Hide
End Sub


просто сам макрос расположен на кнопке,в форме, вместе и с остальными кнопками, и тому подобным.
Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2015, 13:41
Ответы с готовыми решениями:

Перенос данных из excel в excel по запросу
Привет! Нужна помощь, сто лет не программировала..Надо перенести данные из одного файла в другой....

Копировать листы из файлов Excel в один файл Excel
Добрый день, господа! Помогите создать макрос, для того чтобы собрать(скопировать) листы из разных...

Как экспортировать таблицы из access в excel на разные листы?
Привет, подскажите пожалуйста, как заставить процедуру экспортировать таблицы из access в excel на...

Delphi экспорт из stringgrid в excel файла на разные листы
Добрый вечер! Подскажите как экспортировать данные из StringGrid1 в excel файл, при этом нужно,...

4
15153 / 6426 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
06.05.2015, 14:31 2
Cells(i, 2) - это ячейка текущего листа. Если хотите использовать ячейку другого листа, надо указать его:
Visual Basic
1
Sheets("Лист2").Cells(i, 2) = ...
Выбор листа логично сделать с помощью ListBox на форме, вместо "Лист2" подставлять значение листбокса.
1
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 30
06.05.2015, 14:39  [ТС] 3
пробовал, не помогло.
решил проблему так:
Visual Basic
1
Sheets("14.3.").Select
перед каждым while, соответственно с разным значением листов.
единственное, что после этого возникла проблема с нумерацией строк.
0
15153 / 6426 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
06.05.2015, 14:47 4
Цитата Сообщение от hopeantip Посмотреть сообщение
пробовал, не помогло
Как это ?!
Цикл While можно переписать так:
Visual Basic
1
2
3
4
5
6
7
8
9
     Do While file <> ""
        n = n + 1
        arg = "'" & path & "[" & file & "]L143'!R14C"
        Cells(i, 1) = n
        For j = 2 To 7
          Cells(i, j) = ExecuteExcel4Macro(arg & j)
        Next
        i = i + 1: file = Dir
    Loop
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 30
06.05.2015, 14:54  [ТС] 5

Не по теме:

выборка по лист боксам то-же не то, так как перенос данных происходит из множества книг с 3-мя листами в 3 листа моего шаблона, в дальнейшем сохраняется с удалением макросов, кнопок, объединением нужных ячеек, в общем формируется отчет )



Добавлено через 2 минуты
Цитата Сообщение от Казанский Посмотреть сообщение
Как это ?!
Прошу прощения, моя ошибка...
Не правильно указывал имя листа!
0
06.05.2015, 14:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2015, 14:54
Помогаю со студенческими работами здесь

Положить два DataTable в один Excel на разные листы
Всем привет. Нужно при нажатие на кнопку. Положить два datatable в один excel. на разные листы. ...

Текстовые файлы на разные листы в один документ Excel
Народ, подскажите как сделать: есть текстовые файлы с данными - нужно загнать все эти текстовые...

Перенос установленного форматирования на листе на другие листы одной книги Excel
Здравствуйте всем! Нужна помощь в применении условного форматирования. Уже не осталось никаких...

Перенос данных Excel-Word-Excel
Добрый день! Необходима помощь, можно по заказу, в автоматизации рутинной работы. Необходимо...


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

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