:: Не фоксом единым
iqy
cool1
Автор

Сообщений: 316
Дата регистрации: 06.03.2016
Привет.

Хочу поделиться интересным способом закачки данных из инета на примере адресов массовой регистрации сайта налоговой.

1. Создаем текстовый файл test.iqy
2. Записываем в него строку
Цитата:
https://www.nalog.ru/opendata/7707329152-masaddress/
3. Открываем в Excel - загрузится страница
4. Сохраняем в шаблон с поддержкой макросов
5. В код листа вставляем
Option Explicit
Dim notfirst As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d1 As Date, tmp As Variant
If notfirst Then Exit Sub
notfirst = True
If "Дата последнего внесения изменений" <> Cells(15, 2) Then
MsgBox "Изменилась структура страницы. Необходимо изменить программу."
Stop
Exit Sub
End If
Dim cnn As New ADODB.Connection
cnn.Open "Provider=SQLOLEDB; Data Source=sqlserver1; Initial Catalog=work1;Trusted_Connection=yes;"
tmp = cnn.Execute("select LAST_CSV_DATE_UPDATE from Options")!LAST_CSV_DATE_UPDATE
If IsNull(tmp) Then
d1 = DateSerial(2000, 1, 1)
Else
d1 = tmp
End If
Cells(15, 3).Select
Selection.Font.Bold = True
If d1 < Cells(15, 3) Then
'MsgBox "Пора обновлять" 'Cells(15, 3)
Application.StatusBar = "Загружаем файл с сайта"
Dim xhr As Object 'New MSXML2.XMLHTTP
Set xhr = CreateObject("MSXML2.XMLHTTP")
xhr.Open "GET", Cells(11, 3), False
xhr.setRequestHeader "Content-Type", "text/plain; charset=utf-8"
xhr.send
If xhr.ReadyState = 4 Then
Dim buffer As String, strFile_Name As String, strFile_Path As String, f1 As TextStream, fso As New FileSystemObject
strFile_Name = Mid(Cells(11, 3).Text, InStrRev(Cells(11, 3).Text, "/") + 1, 255)
strFile_Path = "\\server1\massreg\" & strFile_Name
Set f1 = fso.CreateTextFile(strFile_Path, True, False)
f1.Write xhr.ResponseText
f1.Close
Application.StatusBar = "Загружаем файл в базу"
cnn.Execute "exec usp_load_massreg '" & strFile_Name & "'"
Application.StatusBar = "Закончили"
Else
Application.StatusBar = "Ошибка загрузки файла с сайта"
End If
Else
MsgBox "Обновление не требуется"
End If
ThisWorkbook.Close 0
'?
Application.Quit
End Sub

В итоге файл.csv сохраняется в 1251 и bulk insert в процедуре загружает его в таблицу на сервере.



Исправлено 5 раз(а). Последнее : cool1, 17.12.16 11:00
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 5 (Гостей: 5)

© 2000-2024 Fox Club 
Яндекс.Метрика