Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/88: Рейтинг темы: голосов - 88, средняя оценка - 4.52
8 / 8 / 6
Регистрация: 05.04.2012
Сообщений: 182
Excel

Запись данных в ячейку из другой книги

12.08.2019, 19:56. Показов 17799. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл VB.xlsm,в нём я создаю макрос,который должен брать данные из другого файла и записывать в ячейку VB.xlsm. Взять получается,но записать в ячейку фала VB.xlsm ну никак. Не понимаю,что не так.
Visual Basic
1
2
3
4
5
6
7
8
Sub MyProgramm()
Dim paste As Integer, copy As Integer
copy = Application.Workbooks.Open("C:\Users\user\Desktop\XLSX\1.xlsx").Worksheets("Лист1").Range("A1")
ActiveWorkbook.Close
paste = Worksheets("Лист1").Range("Q2").Value = copy
ActiveWorkbook.Save
 
End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2019, 19:56
Ответы с готовыми решениями:

Перенос данных с одного листа одной книги на другой лист другой книги с константой
Добрый вечер, товарищи! Есть прайс-лист, который содержит в себе много колонок и строк. На ежедневной основе мне приходится распределять...

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

Запись данных в ячейку TableView
Добрый день. Я только начинаю программировать под iOS, сейчас изучаю работу с таблицами и столкнулся с такой проблемой: пробую добавить в...

33
8 / 8 / 6
Регистрация: 05.04.2012
Сообщений: 182
21.08.2019, 19:05  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ArtNord Посмотреть сообщение
Так получилось:
Не получается,вставляет только в правую часть таблицы.
Мне только одно понять и я бы сам сделал дальше,как передать данные в другой массив в том же порядке с проверкой на цифры.И даже нагуглить ничего похожего не получается.Потом ещё все эти цифры складывать с другими 6 таблицами,а я застрял в самом начале.
0
371 / 269 / 93
Регистрация: 18.11.2015
Сообщений: 1,011
21.08.2019, 20:49
Burnoutman, выложил сам файл с макросом. Если не понятно будет, пишите
Вложения
Тип файла: rar 2массива.rar (11.5 Кб, 3 просмотров)
1
371 / 269 / 93
Регистрация: 18.11.2015
Сообщений: 1,011
21.08.2019, 20:52
Цитата Сообщение от Burnoutman Посмотреть сообщение
ередать данные в другой массив в том же порядк
В моем примере у исходного массива massiv() индекс элемента начинается с 1, а у второго с 0
1
8 / 8 / 6
Регистрация: 05.04.2012
Сообщений: 182
21.08.2019, 23:03  [ТС]
Я не могу понять почему не работает этот код,что я не понимаю. У massiv2(1,2) есть индекс после работы цикла,так почему массиву не получается присвоить число?

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
Sub MyProgramm()
 
Dim massiv() As Variant, massiv2() As Variant
 
massiv = Application.Workbooks.Open("C:\Users\user\Desktop\XLSX\1.xls", 0).Worksheets("Прил 1").Range("I24:N54").Value
 
For Each fe In massiv
For a = 1 To 30
For b = 2 To 31
    If Application.WorksheetFunction.IsNumber(fe) Then
    massiv2(a, b) = fe
    
    Else: massiv2(a, b) = 0
    End If
    Next b
    Next a
 
Next fe
 
ThisWorkbook.Worksheets("Лист 1").Range("G6:L36") = massiv2
 
ThisWorkbook.Saved = True
ActiveWorkbook.Close
 
End Sub
0
371 / 269 / 93
Регистрация: 18.11.2015
Сообщений: 1,011
21.08.2019, 23:20
Цитата Сообщение от Burnoutman Посмотреть сообщение
For b = 2 To 31
замените на: For b = 1 To 30

Добавлено через 1 минуту
a - это номер строка массива1, b - это номер столбца массива1

Добавлено через 1 минуту
Цитата Сообщение от Burnoutman Посмотреть сообщение
If Application.WorksheetFunction.IsNumber(f e) Then
* * massiv2(a, b) = fe
Else: massiv2(a, b) =
а здесь нужно уменьшить на 1:
massiv2(a-1, b-1)

Добавлено через 43 секунды
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
Sub MyProgramm()
 
Dim massiv() As Variant, massiv2() As Variant
 
massiv = Application.Workbooks.Open("C:\Users\user\Desktop\XLSX\1.xls", 0).Worksheets("Прил 1").Range("I24:N54").Value
 
For Each fe In massiv
For a = 1 To 30
For b = 1 To 30
    If Application.WorksheetFunction.IsNumber(fe) Then
    massiv2(a-1, b-1) = fe
    
    Else: massiv2(a-1, b-1) = 0
    End If
    Next b
    Next a
 
Next fe
 
ThisWorkbook.Worksheets("Лист 1").Range("G6:L36") = massiv2
 
ThisWorkbook.Saved = True
ActiveWorkbook.Close
 
End Sub
1
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
22.08.2019, 08:34
Можно менять и значения элементов изначального массива, т.е.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Test()
    Dim a, rw&, cl&, f$, wb As Workbook
    f = "C:\Users\user\Desktop\XLSX\1.xls"
    Set wb = Workbooks.Open(f, 0)
    a = wb.Worksheets("Лист1").Range("I24:N54").Value
    For rw = 1 To UBound(a)
        For cl = 1 To UBound(a, 2)
            If Not IsNumeric(a(rw, cl)) Then a(rw, cl) = 0
        Next
    Next
    ThisWorkbook.Worksheets("Лист1").Range("G6:L36") = a
    wb.Close False
End Sub
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
22.08.2019, 22:02
Можно попробовать ещё и так (пример без реального файла, так что без притензий)

Visual Basic
1
2
3
4
5
6
7
Private Sub Test2()
    With ThisWorkbook.Worksheets("Лист1").[G6:L36]
         .Formula = "='C:\Users\user\Desktop\XLSX\[1.xls]Лист1'!I24"
         .Value = .Value
         On Error Resume Next: .SpecialCells(2, 22) = 0
    End With
End Sub
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
22.08.2019, 23:19
Где задана размерность массива2? А нигде...
0
8 / 8 / 6
Регистрация: 05.04.2012
Сообщений: 182
23.08.2019, 00:39  [ТС]
Цитата Сообщение от Hugo121 Посмотреть сообщение
Где задана размерность массива2? А нигде...
Да,я постоянно и получаю ошибку,что вышло за пределы массива. Но массив динамический,как знать сколько ему задать? Должно быть столько же,сколько у massiv.
0
371 / 269 / 93
Регистрация: 18.11.2015
Сообщений: 1,011
23.08.2019, 08:15
Если знаете размер массива1, то:
Redim massive2(6,6)
Erase massive2 - очистить массив
Но в моем файле отработало все на ура. Или у Вас в для каждого файла свой размер массива?
0
8 / 8 / 6
Регистрация: 05.04.2012
Сообщений: 182
24.08.2019, 11:09  [ТС]
Как можно сложить диапазоны ячеек из разных файлов? Во всех ячейках 100% целые числа.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
24.08.2019, 11:12
Обычно складывают используя символ + или функцию листа СУММ()/SUM()
0
8 / 8 / 6
Регистрация: 05.04.2012
Сообщений: 182
24.08.2019, 11:43  [ТС]
Цитата Сообщение от Hugo121 Посмотреть сообщение
Обычно складывают используя символ + или функцию листа СУММ()/SUM()
Я тоже так подумал и был уверен,что всё будет просто.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub MyProgramm()
 
Dim jeu1 As Variant, jeu2 As Variant, ITOGO As Integer
 
jeu1 = Application.Workbooks.Open("C:\Users\user\Desktop\XLSX\XL1.xlsm", 0).Worksheets("Лист1").Range("G9:L21").Value
ActiveWorkbook.Close
 
jeu2 = Application.Workbooks.Open("C:\Users\user\Desktop\XLSX\XL2.xlsm", 0).Worksheets("Лист1").Range("G9:L21").Value
ActiveWorkbook.Close
 
 
ITOGO = Application.Sum(jeu1, jeu2)
 
 
ThisWorkbook.Worksheets("Лист1").Range("G9:L21").Value = ITOGO
 
 
End Sub
В первом файлы везде 1,а во втором 2,а ответ записывает вместо 3, 78.как он их складывает? Почему если перенести содержимое ячеек из одного файла в другой,очень просто,Excel всё понимает и вставляет как нужно,а вот тут при сложении он уже не понимает,что с чем складывать и куда записывать. Не понятно как в переменной jeu1 хранится диапазон ячеек,как двумерный массив?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
24.08.2019, 14:21
Цитата Сообщение от Burnoutman Посмотреть сообщение
Не понятно как в переменной jeu1 хранится диапазон ячеек,как двумерный массив?
- посмотрите НА ПАУЗЕ КОДА в окне Locals
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.08.2019, 14:21

Эксель. Запись данных в выделенную ячейку
Необходимо передать данные из формы в ячейку, которую выделил пользователь, как это можно реализовать? Например: пользователь ставит...

Запись данных в Excel в первую свободную ячейку
Прошу помощи!!! Я новичек, поэтому сильно не ругайте и не переводите тему типа "вон там посмотри". Хотелось бы увидеть...

Запись данных из нескольких инпутов в одну ячейку бд
Здравствуйте. Так как на этому языку я учусь совсем недавно, у меня возникла проблема. Есть код страницы на которой форма с категориями...

Запись всех данных из DataGridView1 в ячейку DataGridView2
Подскажите пожалуйста как записать все данные из DataGridView1 в ячейку DataGridView2?

Запрос данных из другой книги
есть небольшой модуль но действующий на одном листе полностью, Private Sub Worksheet_Change(ByVal Target As Range) If...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru