Добрый день!
Сделал отчет, на моем компьютере и компьютерах коллег в офисе все работает, у всех одна версия офиса, 2016 64-Bit. Отчет делали для коллег на филиалах, а у них сборная солянка из офисов разных годов и разной архитектуры, в итоге у кого-то все хорошо, у кого-то ошибки "compile error in hidden module. Лист 1"… Подскажите, как можно адаптировать код и сделать его универсальным? Про читал, в файле txt лазил, для себя ничего полезного не нашел, хотя возможно не знаю как правильно искать... тоже читал, не помогло. Файл отчета во вложении.
Сделал отчет, на моем компьютере и компьютерах коллег в офисе все работает, у всех одна версия офиса, 2016 64-Bit. Отчет делали для коллег на филиалах, а у них сборная солянка из офисов разных годов и разной архитектуры, в итоге у кого-то все хорошо, у кого-то ошибки "compile error in hidden module. Лист 1"… Подскажите, как можно адаптировать код и сделать его универсальным? Про читал, в файле txt лазил, для себя ничего полезного не нашел, хотя возможно не знаю как правильно искать... тоже читал, не помогло. Файл отчета во вложении.
| Код |
|---|
Sub Обновить_текущий_город()
Dim cn As Object 'New ADODB.Connection
Dim rec As Object 'ADODB.Recordset
Dim dtfr, dtto, PosStr
Dim sh, sh1, sh2 As Worksheet
Set sh = ThisWorkbook.Sheets("Свод")
Set sh1 = ThisWorkbook.Sheets("Ошибки")
Set sh2 = ThisWorkbook.Sheets("Настройки")
dtfr = Format(sh.Range("B1"), "YYYYMMDD")
dtto = Format(sh.Range("B2"), "YYYYMMDD")
' проверка на дурака, даты
If dtfr = "" Or dtto = "" Then
MsgBox "Проверьте, не должно быть не заполненного периода!", vbCritical
Exit Sub
Else
If dtto < dtfr Then
MsgBox "Дата начала периода не может быть больше даты окончания!", vbCritical
Exit Sub
End If
End If
'соединение
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=***;Password=***;" _
& "Data Source=***;Use Procedure for Prepare=1;Auto Translate=True"
cn.Open
'рекордсет
Set rec = CreateObject("ADODB.Recordset")
rec.CursorType = adOpenDynamic
rec.LockType = adLockOptimistic
' обновляем первую, сводную таблицу
sh.PivotTables("Свод").PivotCache.CommandText = _
"exec [dbo].[Masinev_Transport_Imput_to_InkTransportReport_check] @frDate = '" & dtfr & "',@toDate = '" & dtto & "',@branch = '" & sh2.Cells(2, 3) & "'"
On Error Resume Next
sh.PivotTables("Свод").PivotCache.Refresh
' обновляем вторую таблицу, предварительно очистив данные
If sh1.Range("A2") = "" Then
Else
PosStr = sh1.Cells(1, 1).End(xlDown).Row
sh1.Range("A2:D" & PosStr).ClearContents
End If
rec.Open "exec Masinev_Transport_Imput_to_InkTransportReport_mistakes @branch = '" & NameBook & "'", cn
sh1.Range("A2").CopyFromRecordset rec
rec.Close
cn.Close
End Sub |