powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
11 сообщений из 11, страница 1 из 1
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35648269
HEON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Экспорт Excel->MSSQL
я присоединяюсь в макросе к MS SQL.

создаю коннект, записываю строчку запроса.
а как правильно сделать добавление?
я использую след цикл (но не работает. как делать не знаю):

for i = 1 to row_end
SqlString = "insert into Convers values ('" & cells(i,1) & "','" & cells(i,2) & "','" & cells(i,3) & "', convert(float,'" & cells(i,4) & "')," & cells(i,5) & ")"
conn.execute sqlString
next i

Экспорт Excel->Excel
Мне нужно написать следующий макрос:
есть файл Excel - "Рассчет".
я запускаю макрос в нем:
1) ввожу дату, за которую нужно закачать данные
2) открываю xls файл на сервере (с учетом даты названия немного отличаются) - например, CURA_08
3) беру из этого файла 12 значений из определенных ячеек
cells(9,10), cells(9,11), cells(9,12), cells(10,10) и т.д.
4) вставляю их на свой листик в файле "Рассчет".
5) закрываю xls файл сервера.

Как осуществить это подключение и забрать только 12 значений?



ХЕЛП МИ ПИПЛ! ПЛИИИИИИИИЗ!
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35648361
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: HEON
> Экспорт Excel->MSSQL
> я присоединяюсь в макросе к MS SQL.
>
> создаю коннект, записываю строчку запроса.
> а как правильно сделать добавление?
> я использую след цикл (но не работает. как делать не знаю):
>
> for i = 1 to row_end
> SqlString = "insert into Convers values ('" & cells(i,1) & "','" & cells(i,2) & "','" & cells(i,3) & "',
> convert(float,'" & cells(i,4) & "')," & cells(i,5) & ")"
> conn.execute sqlString
> next i

здесь явно указывай cells(i,4) .value и после имени таблицы в скобках нужно перечислить список полей, которые
будут вставлятся и ещё проверяй на ошибки выполнения, у тебя может тупо не быть прав на вставку в эту таблицу

>
> Экспорт Excel->Excel
> Мне нужно написать следующий макрос:
> есть файл Excel - "Рассчет".
> я запускаю макрос в нем:
> 1) ввожу дату, за которую нужно закачать данные
> 2) открываю xls файл на сервере (с учетом даты названия немного отличаются) - например, CURA_08
> 3) беру из этого файла 12 значений из определенных ячеек
> cells(9,10), cells(9,11), cells(9,12), cells(10,10) и т.д.
> 4) вставляю их на свой листик в файле "Рассчет".
> 5) закрываю xls файл сервера.
>
> Как осуществить это подключение и забрать только 12 значений?

Возьми и запиши макрос со всеми шагами, потом подправь полученный код, согласно пункту 2
Ничего военного :D

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35648385
HEON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо. попробую сейчас сделать.

а по поводу прав доступа. точно есть. т.к. эту таблицу сама когда-то создавала
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35648450
HEON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по 1 вопросу. выдется ошибка ISAM. порылась в инете, нужно включить библиотеку.
можете сказать, какую именно? хотя JET вроде бы включен был.

а вот код, который есть для вставки в MS SQL:

private Sub INSERT_SQL(row_ins as integer)

Dim Conn As ADODB.Connection
Dim strSQL As String
Dim ConnString As String

Set Conn = New ADODB.Connection

ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; DataSource ='D:\! Work_Karina\Конверсия\Кросс-курсы.xls'; Extended Properties = Excel 8.0"

Conn.Open ConnString

For i = 1 to row_ins
strSQL = "insert into [Bank_MSCRM].[dbo].[Conversija_daily' values('" & Cells(i,1).Value & "','" & Cells(i,2).Value & "','" & Cells(i,3).Value & "',convert(float,replace('" & Cells(i,4).Value & "',',','.'))," & Cells(i,5).Value & ")"
Conn.Execute strSQL
next i

Conn.Close
Set Conn = Nothing

End Sub
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35648598
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: HEON
> по 1 вопросу. выдется ошибка ISAM. порылась в инете, нужно включить библиотеку.
> можете сказать, какую именно? хотя JET вроде бы включен был.
>
> а вот код, который есть для вставки в MS SQL:
>
> private Sub INSERT_SQL(row_ins as integer)
>
> Dim Conn As ADODB.Connection
> Dim strSQL As String
> Dim ConnString As String
>
> Set Conn = New ADODB.Connection
>
> ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; DataSource ='D:\! Work_Karina\Конверсия\Кросс-курсы.xls';
> Extended Properties = Excel 8.0"

Только этим кодом, ты пытаешся вставить не в MSSQL а в файл Екселя
Ну и я-бы пользовался бы транзакциями и параметрами.
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Public Sub Execute()
Dim sErrDesc As String
Dim erCur As ADODB.Error
Dim i As Long
On Error GoTo labErr
cmd.CommandType = adCmdText
For i =  0  To cmd.Parameters.Count -  1 
    Debug.Print cmd.Parameters.Item(i).Name & " = " & CStr(IIf(IsNull(cmd.Parameters.Item(i).Value), "Null", 
cmd.Parameters.Item(i).Value))
Next i

cn.BeginTrans
cmd.Execute
cn.CommitTrans

Exit Sub

labErr:
On Error Resume Next
If cn.State <> adStateClosed Then
    cn.RollbackTrans
'    For i = 0 To cmd.Parameters.Count - 1
'        Debug.Print cmd.Parameters.Item(i).Name & " | ";  '.Delete 0
'    Next i
End If

sErrDesc = "" 'Err.Description & " <-> "


' Get the ADO errors.
If cn.Errors.Count >  0  Then
    For Each erCur In cn.Errors
        sErrDesc = sErrDesc & erCur.Source & ": " & erCur.Description & " | "
    Next erCur
    sErrDesc = Replace(sErrDesc, vbLf, " | ", , , vbTextCompare)
Else
    sErrDesc = Err.Description
End If

Call OutputErrorMessage(sErrDesc, , , "Execute", cmd.CommandText)
With Err
    .Raise vbObjectError +  1 , "Execute", sErrDesc
End With
End Sub


--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35650707
HEON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добавлени в MS SQL работает. супер =) спасибо!

а как открыть excel-файл, расположенный на сервере.
открыть. записать в переменные нужные значения и закрыть его.
хелп хелп хелп!
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35650928
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: HEON
> а как открыть excel-файл, расположенный на сервере.
> открыть. записать в переменные нужные значения и закрыть его.

Можно просто записать макрос. И посмотреть код.
В чем проблема?

> хелп хелп хелп!

"И не нужно так кричать, я и так хорошо слышу" (с) Кролик, друг Винни-Пуха

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35651630
HEON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обошлась без макроса. работает =)

однако вопрос.
как открывать файлы в фоновом режиме? чтобы они не отображались на панели задач.

пробовала application.visible, но он полностью excel вырубает.
а мне нужно, чтобы только открываемые из макроса файлы в таком режиме запускал.
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35651813
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: HEON
> однако вопрос.
> как открывать файлы в фоновом режиме? чтобы они не отображались на панели задач.


А как открываешь сейчас?

> пробовала application.visible, но он полностью excel вырубает.
> а мне нужно, чтобы только открываемые из макроса файлы в таком режиме запускал.

Dim oEx As Excel.Application
Set oEx = CreateObject("Excel.Application")
....
Работаем
....
oEx.Quit
Set oEx = Nothing

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35652110
HEON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
strFile - путь к файлу

Workbooks.open (strFile)
ActivateWorkbook.RunAutoMacros xlAutoOpen
Worksheets(1).Activate

---- тут я забираю все необходимые значения и записываю их в переменные ----

Application.DisplayAlerts = False
ActivateWorkbook.Close
Application.DisplayAlerts = True

Workbooks.Item("Kross.xls").Activate

---- тут я вывожу все значения на лист ----



Работает очень быстро при открытии даже очень большого количества файлов.

А где тут писать, что этот strFile открывать в фоновом режиме, не знаю.
...
Рейтинг: 0 / 0
Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
    #35652294
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: HEON
> strFile - путь к файлу
>
Dim oEx As Excel.Application
Set oEx = CreateObject("Excel.Application")
> oEx.Workbooks.open (strFile)
> oEx.ActivateWorkbook.RunAutoMacros xlAutoOpen
> oEx.Worksheets(1).Activate
>
> ---- тут я забираю все необходимые значения и записываю их в переменные ----
>
> oEx..DisplayAlerts = False
> oEx.ActivateWorkbook.Close
> oEx..DisplayAlerts = True
>
> Workbooks.Item("Kross.xls").Activate
>
> ---- тут я вывожу все значения на лист ----
>
После обработки всех книг сделать
oEx.Quit
Set oEx = Nothing

Т.е. для забора значений использовать oEx, это тоже Ексель, но работающий в фоновом режиме и с "твоим" никак не связан,
а для сохранения использовать Workbooks.Item("Kross.xls").Activate

Понятно объяснил?
--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Экспорт Excel->MSSQL, Экспорт Excel->Excel (VBA MS Excel 2007)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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