Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12

Взаимодействие данных с формы и листа Экселя

30.09.2015, 15:58. Показов 1122. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Буду благодарен, кто подскажет: задача: создаю форму, в ней список1 (стул, стол, кровать - к примеру), список2 (цвет синий, черный, зеленый - к примеру). Это создано. Есть лист Эксел. В него ввожу: столбец А - артикулы, столбец В - количество. Нужно, чтобы при нажатии на Комманд (кнопка) введенные данные в строки А2 и до 250 и В2 до 250 заполнялись так в строках А255: oExcel ("А255") = Список1 + столбец А1 + Список2 + столбец В1
oExcel ("А256") = Список1 + столбец А2 + Список2 + столбец В2
oExcel ("А257") = Список1 + столбец А3 + Список2 + столбец В3
и так далее. Соответственно Сохранение и выход. Не могу заставить взять данные из строки и скрепить с данными из формы и вывести в строку: oExcel ("А255") = Список1 + столбец А1 + Список2 + столбец В1. Если будет работать, пусть символически, обсудим в ЛС.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2015, 15:58
Ответы с готовыми решениями:

Обновление данных формы при возврате в Access из другого приложения (Экселя)
Добрый день всем. Собственно вопрос - в названии темы. Более развернуто. Есть база и есть экселевский файл, между которыми с горем...

Взаимодействие С и экселя
Народ, никто не сталкивался с извлечением данных из определенной ячейки? Чтобы потом в формуле использовать, есть такой способ? Если кто...

Импорт листа из экселя в отчет access средствами vba
Всем привет. Подскажите как написать программу, которая при нажатии на кнопку в форме access-а выводила в отчет accessa информацию(весь...

18
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
01.10.2015, 00:51
oExcel ("А255")
oExcel Это что? Приложение? Книга? Лист?
В любом случае не правильно
Если лист, то как-то так oExcel.Range("A255")
Если книга, то примерно так oExcel.Worksheets(1).Range("A255")
Если приложение то и книгу надо указывать

Добавлено через 1 минуту
Ну и для скрепления лучше использовать символ & а не +
0
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
01.10.2015, 10:14  [ТС]
С созданием книги Ех проблемы нет, данные и Списка1-2 Формы работают. Просто написал кратко. ))) Вместо + значок & - да, просто пока исправление общих ошибок.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
01.10.2015, 12:56
Лучший ответ Сообщение было отмечено The trick как решение

Решение

В любом случае проще в программе созздать массив, заполнить его и вывалить на лист.
Более детально без примера сказать не могу
0
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
01.10.2015, 20:12  [ТС]
Спасибо! Справился! Ура! Заработало...)))
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Command1_Click()
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
       
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add("C:\baza.xlsx")
    
   Set oSheet = oBook.Worksheets(1)
   oSheet.Range("A300").Value = Combo1 & ", артикул " & oSheet.Range("A2") & ", в количестве " & oSheet.Range("B2") & " штук, цвет " & Combo2 & ";"
   oSheet.Range("A301").Value = Combo1 & ", артикул " & oSheet.Range("A3") & ", в количестве " & oSheet.Range("B3") & " штук, цвет " & Combo2 & ";"
   
   oBook.SaveAs "C:\test.xlsx"
   oExcel.Quit
   
End Sub
Только часть кода, Заполняю baza, соединяет значения начиная со строки А300 и т.д.
Миниатюры
Взаимодействие данных с формы и листа Экселя  
0
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
03.10.2015, 18:11  [ТС]
Здравствуйте! Снова проблема...(( Гугл не помог...((( Ошибка "Procedure too large". Это тоже понятно. Слишком много знаков для одной команды. Возможно ли мое:

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
Private Sub Command1_Click()
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
       
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add("C:\baza.xlsx")
    
   Set oSheet = oBook.Worksheets(1)
 
oSheet.Range("D2").Value = Combo1 & ", артикул " & oSheet.Range("A2") & ", в количестве " & oSheet.Range("B2") & " штук, цвет " & Combo2 & ";"
   oSheet.Range("D3").Value = Combo1 & ", артикул " & oSheet.Range("A3") & ", в количестве " & oSheet.Range("B3") & " штук, цвет " & Combo2 & ";"
oSheet.Range("D4").Value = Combo1 & ", артикул " & oSheet.Range("A4") & ", в количестве " & oSheet.Range("B4") & " штук, цвет " & Combo2 & ";"
oSheet.Range("D5").Value = Combo1 & ", артикул " & oSheet.Range("A5") & ", в количестве " & oSheet.Range("B5") & " штук, цвет " & Combo2 & ";"
oSheet.Range("D6").Value = Combo1 & ", артикул " & oSheet.Range("A6") & ", в количестве " & oSheet.Range("B6") & " штук, цвет " & Combo2 & ";"
oSheet.Range("D7").Value = Combo1 & ", артикул " & oSheet.Range("A7") & ", в количестве " & oSheet.Range("B7") & " штук, цвет " & Combo2 & ";"
................................................до:
oSheet.Range("D500").Value = Combo1 & ", артикул " & oSheet.Range("A500") & ", в количестве " & oSheet.Range("B500") & " штук, цвет " & Combo2 & ";"
 
oBook.SaveAs "C:\test.xlsx"
   oExcel.Quit
   
End Sub
сократить до:

Visual Basic
1
2
3
4
5
6
7
8
Set oSheet = oBook.Worksheets(1)
oSheet.Range("D2 : D500").Value = Combo1 & ", артикул " & oSheet.Range("A3:A500") & ", в количестве " & oSheet.Range("B3:B500") & " штук, цвет " & Combo2 & ";"
 
Set oSheet = oBook.Worksheets(2)
oSheet.Range("D2 : D500").Value = Combo1 & ", артикул " & oSheet.Range("A3:A500") & ", в количестве " & oSheet.Range("B3:B500") & " штук, цвет " & Combo2 & ";"
 
Set oSheet = oBook.Worksheets(3)
oSheet.Range("D2 : D500").Value = Combo1 & ", артикул " & oSheet.Range("A3:A500") & ", в количестве " & oSheet.Range("B3:B500") & " штук, цвет " & Combo2 & ";"
Т.е. нужно получить диапазон с D2 до D500 со значениями для D2 = A2 & B2
D3 = A3 & B3
D4 = A4 & B4
до D500 = A500 & В500?



У меня работает:

Visual Basic
1
2
Set oSheet = oBook.Worksheets(3)
oSheet.Range("D2 : D500").Value = Combo1 & Combo2
- но не более и не корректно, т.к. значения в диапазоне только A2 и B2.
0
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
06.10.2015, 14:41  [ТС]
Нет идей? Я сделал, но не совсем как хотелось...((( т.е. вывод в диапазон А1:А500, С1:С500 и D1 : D500.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
06.10.2015, 19:17
А цикл не устраивает?
1
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
07.10.2015, 14:54  [ТС]
Думаю, что устроил бы... Пока не пытался реализовать)) Применение операторов If ...... Then ....... Else ..... End If End Sub??? Надо попробовать... )))) До этой идеи не дошел. ))))

Добавлено через 16 минут
Стоп! For и Next. )))

Добавлено через 42 минуты
Но как??
0
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
07.10.2015, 15:04
Пробуйте -
Visual Basic
1
2
3
4
5
with osheet
  for r=2to 500
    .cells(r,4) = Combo1 & ", артикул " & .cells(r,1) & ", в количестве " & .cells(r,2) & " штук, цвет " & Combo2 & ";"
  next
end with
1
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
08.10.2015, 12:12  [ТС]
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Ооо... спасибо! Попробую. )))

Добавлено через 21 час 1 минуту
Цитата Сообщение от Апострофф Посмотреть сообщение
Пробуйте -
Visual Basic
1
2
3
4
5
with osheet
  for r=2to 500
    .cells(r,4) = Combo1 & ", артикул " & .cells(r,1) & ", в количестве " & .cells(r,2) & " штук, цвет " & Combo2 & ";"
  next
end with
Апострофф, хочу Вас поблагодарить! Сработало! Спасибо!
0
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
05.12.2015, 19:14  [ТС]
Здравствуйте! Чтобы не множить темы и не лезть в чужие... )) Прошу совета. Создана Форма. Форма выполняет ряд действий. На Форме кроме кнопок и полей создано РЕДАКТОР МЕНЮ. Подскажите на одном примере, как прописать событие на левую кнопку мышки, а именно ФАЙЛ-Выйти-Да(Нет). Т.е. на Да нужно событие End. Картинку прилагаю.
Visual Basic
1
2
3
4
5
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then 
PopUpMenu ..... End
End If
End Sub
Миниатюры
Взаимодействие данных с формы и листа Экселя  
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
05.12.2015, 20:20
В дизайнере выбери этот пункт, откроется код обработчика события клика этого пункта. Там введи End.
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
05.12.2015, 20:48
А вместо Вашего многоточия вставить вызов меню по имени.
Миниатюры
Взаимодействие данных с формы и листа Экселя  
1
05.12.2015, 20:51

Не по теме:

Интересно, у кого возникнет желание нажать Файл -> Закрыть -> Нет ? :)

0
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
05.12.2015, 20:55  [ТС]
Спасибо за советы! Отработаю. ))))

Добавлено через 49 секунд
Нужно отработать пример, чтобы из него сделать то, что нужно.
0
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
03.03.2016, 18:47  [ТС]
Доброго времени суток! Вопрос... В при выполнении Command, в List1 нужно подгрузить из .txt данные... Добился работы первой строки при клике... Подскажите, пожалуйста, ошибку?
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Command5_Click()
Dim MF As Integer
Dim S As String
MF = FreeFile
Open ("D:\12345.txt") For Input As #MF
Line Input #MF, S
List1.AddItem S, 0
Close #MF
End Sub
Миниатюры
Взаимодействие данных с формы и листа Экселя  
0
Заблокирован
03.03.2016, 21:12
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Visual Basic
1
2
3
4
5
6
Open "D:\12345.txt" For Input As #MF
WHILE NOT EOF(MF)
Line Input #MF, S
List1.AddItem S ', 0
WEND
Close #MF
?
1
0 / 0 / 1
Регистрация: 30.09.2015
Сообщений: 12
04.03.2016, 18:17  [ТС]
Shersh, спасибо! Заработало. Дело было в While. Видео урок смотрел, его использовали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2016, 18:17
Помогаю со студенческими работами здесь

Запись данных с формы сразу на два листа
Добрый вечер! Уважаемые форумчане помогите с решением следующей задачи..... В файле,на листе"прайс" при нажатии на...

Макрос создания нового листа (заданного формата) с переносом данных с другого листа
Добрый день, формунчане! Большая просьба с созданием макроса. Необходимо разработать документ, который бы позволял создавать...

Обработка прайс листа для торговых площадок Копирование данных с одного листа на другой
Всем привет кто знает и может помогите Копирование данных с одного листа на другой обработка прайс листа для торговых площадок ...

Макрос на создание листа и перенос данных с предыдущего листа
Помогите пожалуйста, мне нужен макрос на создание листа и перенос данных с предыдущего листа. Есть лист, на нем есть данные, они...

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru