Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить определенные данные из Excel и вставить их в таблицы Access / 25 сообщений из 36, страница 1 из 2
18.12.2010, 21:02
    #37022726
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Я только начинаю делать программу и нужна ваша помощь.
Идея заключается в том, чтобы из файла Exclel с уже заполненными данными вытащить только определенные столбцы и записать их в таблицу Access. И после этого отобразить данные в таблице DataGrid или MSFlexGrid. Помогите, кто может. Буду рад любой помощи.
...
Рейтинг: 0 / 0
18.12.2010, 21:06
    #37022729
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
и тогда уж
Идея заключается в том, чтобы из файла Ворд, а далее всё тоже самое
??????????
Буду рад любой помощи
...
Рейтинг: 0 / 0
18.12.2010, 21:16
    #37022739
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Ципихович Эндрю,

Хорошо, объясню по другому. Есть файл Excel. В нем есть столбцы и строки заполненные данными. Нужно, чтобы программа "вытащила" все данные (либо по условию), допустим из столбца "B" и вставила в 1 столбец таблицы Access. Потом этот столбец с данными из Access отобразился в 1 столбце таблицы DataGrid или MSFlexGrid. Вот. Если нужно будет могу еще подробнее написать))
...
Рейтинг: 0 / 0
18.12.2010, 21:22
    #37022742
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Bobax012, Вы зря ко мне обращаетесь, я также как и Вы не знаю, и к Вашему вопросу приконнектился, ОК??
...
Рейтинг: 0 / 0
18.12.2010, 21:28
    #37022745
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
рз собеседников нет, тогда
Потом этот столбец с данными из Access отобразился в 1 столбце таблицы DataGrid или MSFlexGrid. Вот. Если нужно будет могу еще подробнее написать))

Да нужно именно эту часть, что такое таблица DataGrid или MSFlexGrid
...
Рейтинг: 0 / 0
18.12.2010, 21:38
    #37022754
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Ципихович Эндрю,
...
Рейтинг: 0 / 0
18.12.2010, 21:41
    #37022756
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Bobax012, немножко прояснилось, просто если присутствует понятие Access, значит вероятно, скорее всего форма будет с прокруткой, да???
...
Рейтинг: 0 / 0
18.12.2010, 21:57
    #37022764
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Ципихович Эндрю,

Взаимную беседу следует вести так, чтобы каждый из собеседников извлек из нее пользу, приобретая больше знаний.(с)

Вопрос остается открытым...
...
Рейтинг: 0 / 0
18.12.2010, 23:30
    #37022820
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Эндрю
Я просил тебя не лезть в топики, в которых ты нихрена не понимаешь.
По всей видимости придется пожаловаться модератору.

Bobax012
Непонятно только одно, собственно среда выполнения. VB6?
C SQL знакомы? с ADO знакомы?
...
Рейтинг: 0 / 0
18.12.2010, 23:38
    #37022826
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Ципихович ЭндрюBobax012, немножко прояснилось, просто если присутствует понятие Access, значит вероятно, скорее всего форма будет с прокруткой, да???
....ууууу ... вот оно чоо ,
пойду отнесу этот "шедевр" в Акс ...
...
Рейтинг: 0 / 0
18.12.2010, 23:46
    #37022833
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Ципихович ЭндрюBobax012, немножко прояснилось, просто если присутствует понятие Access, значит вероятно, скорее всего форма будет с прокруткой, да???
Эндрю,

это общеее заблуждение людей не работающих с Акс-формами !
главное и принципиальное отличие для форм, в которых "присутствует понятие Access" - они (формы) - зелёные !!
...
Рейтинг: 0 / 0
19.12.2010, 00:49
    #37022874
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Shocker.ProBobax012
Непонятно только одно, собственно среда выполнения. VB6?
C SQL знакомы? с ADO знакомы?
В принципе, чтобы понять, можно ли это сделать запросом - дайте образец файла. Не все данные можно корректно будет получить через ODBC.
...
Рейтинг: 0 / 0
19.12.2010, 13:06
    #37023173
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Shocker.ProShocker.ProBobax012
Непонятно только одно, собственно среда выполнения. VB6?
C SQL знакомы? с ADO знакомы?
В принципе, чтобы понять, можно ли это сделать запросом - дайте образец файла. Не все данные можно корректно будет получить через ODBC.

Среда выполнения VB 6.0. С SQL и ADO немного знаком, но только азы. Если нужно будет, придется разбираться, деваться не куда))

Пример файла прикрепляю. Ниже форма VB 6.
...
Рейтинг: 0 / 0
19.12.2010, 13:07
    #37023174
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Bobax012,
...
Рейтинг: 0 / 0
19.12.2010, 13:36
    #37023207
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Bobax012,

посмотрите для начала 9847080 этот пример
тут показано, как через SQL работать с таблицей экселя.
Единственное - он там работает с текущей книгой ThisWorkbook, а вам требуется ее предварительно открыть.
соответственно, с аксессовсой таблицей работать так же, как с любой БД, да и примеров тут полно.

Как перекинете - можно будет уже думать об интерфейсах, сетках и т.п. Вообще, разбейте задачу на части и решайте по частям, а не все сразу
...
Рейтинг: 0 / 0
19.12.2010, 13:54
    #37023226
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Shocker.ProBobax012,

посмотрите для начала 9847080 этот пример
тут показано, как через SQL работать с таблицей экселя.
Единственное - он там работает с текущей книгой ThisWorkbook, а вам требуется ее предварительно открыть.
соответственно, с аксессовсой таблицей работать так же, как с любой БД, да и примеров тут полно.

Как перекинете - можно будет уже думать об интерфейсах, сетках и т.п. Вообще, разбейте задачу на части и решайте по частям, а не все сразу

Мне нужно, чтобы пользователь не касался ни базы Access ни данных Excel (т.е. не проводил ни каких манипуляций, типа открыть Access, открыть Excel), он считал данные из Excel перекинул в Access и все. Если так не получается, то хотя бы пересохранить файл из Excel в текстовый формат с разделителем в виде табуляции. И считывать данные оттуда (но это, если не получается с Excel)
...
Рейтинг: 0 / 0
19.12.2010, 18:43
    #37023512
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Bobax012Мне нужно, чтобы пользователь не касался ни базы Access ни данных Excel (т.е. не проводил ни каких манипуляций, типа открыть Access, открыть Excel), он считал данные из Excel перекинул в Access и все.
...
Код: 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.
Sub ImpotrDataFromExcelToAcc()
  Const ExcelFilePath = "<путь и имя Эксель-файла>"
  Const AccFilePath = "<путь и имя Акс-файла>"
  '
  Dim cn As Object ' ADODB.Connection
  Dim ConStr As String
  Dim strSQL As String
  '
  If Dir(ExcelFilePath) = "" Then Exit Sub
  If Dir(AccFilePath) = "" Then Exit Sub
  '
  ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccFilePath

  Set cn = CreateObject("ADODB.Connection")
  cn.Open ConStr
  '
  strSQL = "delete from МаяКрасиваяТаблица"
  cn.Execute strSQL
  '
  strSQL = "insert into МаяКрасиваяТаблица (Товар, Цена, Количество, [Дата завоза], [Дата продажи]) " & _
           "select Товар, Цена, Количество, [Дата завоза], [Дата продажи] " & _
           "from [Лист1$] in '" & ExcelFilePath & "' [Excel 8.0;HDR=YES]"
  cn.Execute strSQL
  '
  cn.Close
  Set cn = Nothing
End Sub
...
Рейтинг: 0 / 0
19.12.2010, 18:46
    #37023517
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Bobax012[Мне нужно, чтобы пользователь не касался ни базы Access ни данных Excel (т.е. не проводил ни каких манипуляций, типа открыть Access, открыть Excel), он считал данные из Excel перекинул в Access и все. Если так не получается, то хотя бы пересохранить файл из Excel в текстовый формат с разделителем в виде табуляции. И считывать данные оттуда (но это, если не получается с Excel)
Никто этого и не предлагает. Кстати, кверти предложил красивый вариант, как сделать это в один прием.
...
Рейтинг: 0 / 0
19.12.2010, 23:07
    #37023766
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
qwerty112Bobax012Мне нужно, чтобы пользователь не касался ни базы Access ни данных Excel (т.е. не проводил ни каких манипуляций, типа открыть Access, открыть Excel), он считал данные из Excel перекинул в Access и все.
...
Код: 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.
Sub ImpotrDataFromExcelToAcc()
  Const ExcelFilePath = "<путь и имя Эксель-файла>"
  Const AccFilePath = "<путь и имя Акс-файла>"
  '
  Dim cn As Object ' ADODB.Connection
  Dim ConStr As String
  Dim strSQL As String
  '
  If Dir(ExcelFilePath) = "" Then Exit Sub
  If Dir(AccFilePath) = "" Then Exit Sub
  '
  ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccFilePath

  Set cn = CreateObject("ADODB.Connection")
  cn.Open ConStr
  '
  strSQL = "delete from МаяКрасиваяТаблица"
  cn.Execute strSQL
  '
  strSQL = "insert into МаяКрасиваяТаблица (Товар, Цена, Количество, [Дата завоза], [Дата продажи]) " & _
           "select Товар, Цена, Количество, [Дата завоза], [Дата продажи] " & _
           "from [Лист1$] in '" & ExcelFilePath & "' [Excel 8.0;HDR=YES]"
  cn.Execute strSQL
  '
  cn.Close
  Set cn = Nothing
End Sub



Проверил, все работает. Спасибо ОГРОМНЕЙШЕЕ!!! Действительно, очень выручили.

Теперь будем выводить данные в MSFlexGrid))
...
Рейтинг: 0 / 0
19.12.2010, 23:32
    #37023796
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Решил проверить на ввод любых данных в столбцы, т.е. в поле, где вводят текст ввожу цифры. И тут заметил, что если в поле с текстом последним введено число, то отражаются только числовые значения, а, если текст, то соответственно текстовые. Как можно сделать, чтобы отражались все данные. Именно все данные. Т.к. в дальнейшем будут добавляться столбцы в которых будут добавляться любые дынные (текстовые, либо числовые). Может быть, это делается не программно, просто не правильно организовал таблицу Access? Всем столбцам присвоил тип "Текстовый". Подскажите, где ошибся.
...
Рейтинг: 0 / 0
20.12.2010, 01:02
    #37023882
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Bobax012,

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

А вообще - это ненормальных подход с точки зрения проектирования БД. Вариативные данные в столбце - это очень обоснованное исключение, а никак не правило. Так что попробуйте спроектировать сначала систему с однородными данными.
...
Рейтинг: 0 / 0
20.12.2010, 02:45
    #37023915
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Нашел другой способ в интернете:


Dim excel_app As Object
Dim excel_sheet As Object
Dim max_row As Integer
Dim max_col As Integer
Dim row As Integer
Dim col As Integer
Dim conn As ADODB.Connection
Dim statement As String
Dim new_value As String

Screen.MousePointer = vbHourglass
DoEvents

' Создаём приложение Excel.
Set excel_app = CreateObject("Excel.Application")

' Если хотите, чтобы Excel был видимым, то раскомментируйте следующую строку.
' excel_app.Visible = True

' Открываем таблицу Excel.
excel_app.Workbooks.Open FileName:=txtExcelFile.Text

' Проверяем версию.
If Val(excel_app.Application.Version) >= 8 Then
Set excel_sheet = excel_app.ActiveSheet
Else
Set excel_sheet = excel_app
End If

' Узнаём строку и колонку, которые использовались последний раз.
max_row = excel_sheet.UsedRange.Rows.Count
max_col = excel_sheet.UsedRange.Columns.Count

' Открываем базу данных Access.
Set conn = New ADODB.Connection
conn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & txtAccessFile.Text & ";" & _
"Persist Security Info=False"
conn.Open

' Делаем цикл по строкам таблицы Excel,
' пропуская первую строку, которая содержит
' заголовки колонок.
For row = 2 To max_row
' Составляем инструкцию INSERT.
statement = "INSERT INTO Books VALUES ("
For col = 1 To max_col
If col > 1 Then statement = statement & ","
new_value = Trim$(excel_sheet.Cells(row, _
col).Value)
If IsNumeric(new_value) Then
statement = statement & _
new_value
Else
statement = statement & _
"'" & _
new_value & _
"'"
End If
Next col
statement = statement & ")"

' Выполняем инструкцию INSERT.
conn.Execute statement, , adCmdText
Next row

' Закрываем базу данных.
conn.Close
Set conn = Nothing

' Если хотите, чтобы Excel остался запущенным, закомментируйте строки
' Close и Quit.

' Закрываем Книгу, сохраняя изменения.
excel_app.ActiveWorkbook.Close True
excel_app.Quit

Set excel_sheet = Nothing
Set excel_app = Nothing

Screen.MousePointer = vbDefault
MsgBox "Copied " & Format$(max_row - 1) & " values."




Но, в процессе выполнения выходит ошибка, и жалуется на строку
conn.Execute statement, , adCmdText
Либо просто виснет, так, что приходится через диспетчер завершать программу.
Что можно с этим сделать, чтобы все работало нормально?
...
Рейтинг: 0 / 0
20.12.2010, 08:25
    #37023992
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
Bobax012,
если в запросе, в описании файла Excel, вы поставите описание IMEX=1, то все данные будут восприниматься как текстовые
Код: plaintext
[Excel  8 . 0 ;HDR=YES;IMEX= 1 ]
...
Рейтинг: 0 / 0
20.12.2010, 11:06
    #37024213
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
если хотите писать из текущего файла (насколько я понял последний пост ТС), то способ через инсерт инто имеет один незначительный косячокс, символьный набор с которым Вы работаете ограничен, иначе говоря, если в тексте ячейки встретится зарезервированный символ (например выделение текстовой строки - апостроф или кавычки)- наступит маленький трындец.

Можете попробовать.

Нужно либо пользовать способ qwerty112, либо получать таблицу как рекордсет и через addnew и update дописывать туда, что Вам нужно.
...
Рейтинг: 0 / 0
20.12.2010, 19:30
    #37025498
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить определенные данные из Excel и вставить их в таблицы Access
mds_worldBobax012,
если в запросе, в описании файла Excel, вы поставите описание IMEX=1, то все данные будут восприниматься как текстовые
Код: plaintext
[Excel  8 . 0 ;HDR=YES;IMEX= 1 ]


Спасибо, помогло!!!!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить определенные данные из Excel и вставить их в таблицы Access / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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