Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622

Перенос данных с формы в Excel

27.05.2015, 16:46. Показов 3385. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Создал форму. После заполнения полей данные переносятся (кнопка Экспорт в Excel) на лист Excel.
Отчет заполняется, но при новом оформлении заявки новая запись попадает в ту же строку, а нужно заполнить следующую пустую строку. Во вложении проект и файл Excel
Где в коде ошибка ? Можно подправить.
Заранее благодарен.
Вложения
Тип файла: rar vb+Excel.rar (65.4 Кб, 43 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2015, 16:46
Ответы с готовыми решениями:

Перенос данных из файла xlsx (Excel) в ListView
Есть файл Excel (xlsx). формата: Пользователь Пароль user 123 user1 456 user2 6567 ...

Перенос данных из файла .txt в таблицу Excel
Ребята, нужна помощь. Надо выгрузить часть данных (номер карты, сумму, ФИО)из txt файла в определенные ячейки exel таблицы.

Перенос данных из Visual Basic .NET в Excel
Ребят подскажите пожалуйста, у меня есть Visual Studio и в нем есть Visual Basic, так вот в нем находиться маленький алгоритм с большим...

15
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
28.05.2015, 01:46
чтобы постоянно определялась новая строка, используйте это:
VB.NET
1
xlSheet.Rows.UsedRange + 1
0
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
28.05.2015, 12:36  [ТС]
Yury спасибо за подсказку,а как данный код применить для моего примера
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
28.05.2015, 13:29
замени фрагмент вывода данных на этот:

VB.NET
1
2
3
4
5
Dim newrow as integer =  exl.rows.usedrange + 1
        exl.Range("B" & newrow).Value = TextBox1.Text
        exl.Range("C" & newrow).Value = DateTimePicker1.Text
        exl.Range("D" & newrow).Value = ComboBox1.Text
        exl.Range("E" & newrow).Value = ComboBox2.Text
0
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
28.05.2015, 13:45  [ТС]
Заменил на Ваш код и при нажатии на кнопку выдает ошибку :"общий член" usedRange для типа Range не найден
VB.NET
1
 Dim newrow As Integer = exl.rows.usedrange + 1
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
28.05.2015, 22:24
Я бы сделал так.

Смысл такой - если первый раз вводим заявку, то файл создаём, если 2-ю и далее заявку, то открываем уже сохранённый файл

VB.NET
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
'Кнопка Экспорт в Excel
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'проверка на заполнение полей формы
        If Me.TextBox1.Text = "" And Me.ComboBox1.Text = "" Or Me.ComboBox2.Text = "" Then MsgBox("Все поля должны быть заполнены.", 48, "Сообщение") : Exit Sub
 
        'создание приложения Excel
        Dim xlApp As Object, xlWb As Object, xlSheet As Object
        Const xlUP = -4162
        Dim iLastRow As Integer
        xlApp = CreateObject("excel.application")
        'xlApp.visible = True
 
        Try
            xlWb = xlApp.Workbooks.Open("C:\Отчет.xlsm") 'укажите свой путь к файлу
        Catch ex As Exception
            xlWb = xlApp.workbooks.add()
            xlWb.SaveAs(Filename:="C:\Отчет.xlsm", FileFormat:=52)
        End Try
        xlSheet = xlWb.worksheets(1)
 
        With xlSheet
            'создаем шапку отчета
            .range("B2").value = Label1.Text
            .range("C2").value = Label2.Text
            .range("D2").value = Label3.Text
            .range("E2").value = Label4.Text
            iLastRow = .cells(.rows.count, "B").end(xlUP).row + 1
            'заполняем строки
            .Range("B" & iLastRow).Value = TextBox1.Text
            .Range("C" & iLastRow).Value = DateTimePicker1.Text
            .Range("D" & iLastRow).Value = ComboBox1.Text
            .Range("E" & iLastRow).Value = ComboBox2.Text
        End With
 
        xlWb.Close(SaveChanges:=True) 'Закрываем книгу и сохраняем файл
        xlApp.Quit() ' Закрываем Excel
        MsgBox("Данные успешно добавлены!", MsgBoxStyle.OkOnly)
 
        'очищаем поля для последующих записей
        Me.TextBox1.Text = ""
        Me.ComboBox1.Text = ""
        Me.ComboBox2.Text = ""
    End Sub
2
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
29.05.2015, 14:09  [ТС]
Pavel55 , благодарю все работает. У меня есть еще пару вопросов :
1. что значит константа-Const xlUP = -4162
2. я добавил кнопку на форму "Просмотр отчета" и прописал код( по нажатию на кнопку должен открыться файл Excel)

Код vb.net
VB.NET
1
2
3
Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        xlWb = xlApp.Workbooks.Open("C:\Отчет.xlsm")
    End Sub
Выдает ошибку :не задана переменная объекта или блока With
Как исправить ошибку.
Спасибо.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
29.05.2015, 16:17
yutrans, не объявлен xlApp и xlWb


VB.NET
1
2
3
4
5
6
Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
 Dim xlApp As Object
Dim xlWb As Object
        xlWb = xlApp.Workbooks.Open("C:\Отчет.xlsm")
xlWb.Visible = True
    End Sub
0
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
29.05.2015, 16:39  [ТС]
Вставил Ваш код , но ошибка осталась:не задана переменная объекта или блока With
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
30.05.2015, 06:08
yutrans, а ошибка эта точно в этом коде????

посмотрите правильно ли вы перенесли код, предложенный выше? точнее вот эту его часть(блок With должен заканчиваться с End With):

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
        With xlSheet
            'создаем шапку отчета
            .range("B2").value = Label1.Text
            .range("C2").value = Label2.Text
            .range("D2").value = Label3.Text
            .range("E2").value = Label4.Text
            iLastRow = .cells(.rows.count, "B").end(xlUP).row + 1
            'заполняем строки
            .Range("B" & iLastRow).Value = TextBox1.Text
            .Range("C" & iLastRow).Value = DateTimePicker1.Text
            .Range("D" & iLastRow).Value = ComboBox1.Text
            .Range("E" & iLastRow).Value = ComboBox2.Text
        End With
0
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
30.05.2015, 12:03  [ТС]
код перенесен верно .Все работает.
Ошибка появляется ,когда я кликаю по кнопке "Просмотр отчета".
VB.NET
1
2
3
Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        xlWb = xlApp.Workbooks.Open("C:\Отчет.xlsm")
  End Sub
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
30.05.2015, 19:29
yutrans,
ты код точно заменил на этот? у тебя не объявлены переменные....
ипользуй это, и еще убедись что файл Отчет.xlsm существует
VB.NET
1
2
3
4
5
6
Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
 Dim xlApp As Object
Dim xlWb As Object
        xlWb = xlApp.Workbooks.Open("C:\Отчет.xlsm")
xlWb.Visible = True
    End Sub
0
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
30.05.2015, 23:41  [ТС]
Yury Komar я скопировал Ваш код и сразу в списке ошибок появляется текст :Список ошибок
Предупреждение 1
Переменная "xlApp" используется до присвоения ей значения. Во время выполнения может произойти исключение при ссылке на значение NULL.
А после нажатия на кнопку"Просмотр отчета" выдает ошибку :
"Object variable or With block variable not set".
Вложения
Тип файла: rar Пример2.rar (80.0 Кб, 12 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
31.05.2015, 03:48
блин... пропустил часть )))) ссори. проверь это

VB.NET
1
2
3
4
5
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim xlApp As Object = CreateObject("Excel.Application")
Dim xlWb As Object = xlApp.Workbooks.Open("C:\Отчет.xlsm")
xlWb.Visible = True
End Sub
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
01.06.2015, 00:31
Цитата Сообщение от yutrans Посмотреть сообщение
что значит константа-Const xlUP = -4162
Т.к. вы используете позднее связывание, а именно, в своём коде создаёте объект Excel таким образом

VB.NET
1
Dim xlApp As Object = CreateObject("Excel.Application")
и работаете с ним, то данный объект не знает константы Excel, а именно, он не знает, что такое xlUP, xlDown и т.д. Поэтому мы заменяем константы их цифровыми значениями Const xlUP = -4162, можно просто писать так
VB.NET
1
iLastRow = .cells(.rows.count, "B").end(-4162).row
Чтобы узнает цифровое значение вы можете в макросе в Excel выполнить такой код
VB.NET
1
2
3
Sub Test()
MsgBox xlUP
End Sub
В окне отобразится -4162

Второй подход - использовать раннее связавание:
сперва нужно добавить ссылку на библиотеку Microsoft.Office.Interop.Excel, для этого идёте в меню Проект - Добавить ссылку... - слева выбрать Сборки - Расширения. В списке найти Microsoft.Office.Interop.Excel и поставить слева от неё галочку

Далее код как небольшой пример

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Imports Excel = Microsoft.Office.Interop.Excel
 
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   Dim xlApp As New Excel.Application
   Dim xlWB As Excel.Workbook
   xlWB = xlApp.Workbooks.Open("G:\Excel file.xlsx") 'путь к нашему Excel файлу
 
   'тут работаем с открытым файлом
 
   xlWB.Close(SaveChanges:=True) 'сохраняем файл и закрываем его
   xlApp.Quit() 'закрываем Excel
 End Sub
End Class
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
01.06.2015, 04:22
Чтобы узнает цифровое значение

Не по теме:

я как-то писал софтину для выдергивания констант из продуктов MS-Office.


Вот ТУТ посмотри
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2015, 04:22
Помогаю со студенческими работами здесь

Сохранение данных с формы в Excel
Доброго времени суток. Подскажите пожалуйста, как сохранить данные в Экселе? Ситуация в следующем: Необходимо сохранить информацию...

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

Перенос вычисляемых значений из формы в таблицу
Здравствуйте. Не могу никак добиться от аксесс переноса данных из поля формы в соответствующие поля таблиц. Много читала и искала у вас на...

Автоматический перенос данных поля одной формы в поле другой формы
Добрый вечер! Очень нужна помощь знающих людей. Создаю базу больницы для курсовой работы и столкнулась с такой проблемой, как...

Перенос данных поля одной формы в поле другой формы
Здравствуйте. Помогите пожалуйста!!! У меня есть форма "Главная",где я выбираю "Код_ПЗ"(код принятой заявки) и при нажатии на...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru