Всем доброго времени суток, прошу вашей помощи в решение элементарной задачки, которую не могу победить Создал с помощью "быстрой меры" накопительный итог, который суммирует только по стобцам пользователей, которые имели entry_date = 0 Вроде всё работает, но при условие, что поле install_date не должно быть в доступном диапазоне (данные за период 02/09/2019-05/09/2019), тогда нужно поставить в фильтре период который будет выходить за эти рамки с любого края например (01/01/2019-05/09/2019 или 02/09/2019-31/12/2020).
Такую же процедуру нужно сделать с полем entry_date
Столбец, которая собирает пользователей за 0 entry_date
Скрытый текст
COUNT_USERS_ZERO_ENTRY_DATE = IF(SUMX(VALUES(COHORT[entry_days]), CALCULATE(DISTINCTCOUNT(COHORT[devtodev_id]),'COHORT'[entry_days] IN { 0 }))>0,1,0)
Мера, которая правильно суммирует (с ней проблема) (таблица называеться users_zero)
Здравствуйте, прошу вашей помощи в решение такой проблемы: Есть надстройка (FAME) которая запускает процес IE (InternetExploerer), как возможно отобразить этот процесс через VBA?
типо IE.visible = true
По процессу как хотелось бы сделать, но не получается: Найти в диспетчере задач процесс iexplorer.exe и сделать его видимым
Здравствуйте, прошу помочь подсказать как возможно обратится к надстройкам средствами VBA, которые инсталяца через магазин Ofiice (Надстройки Office (App Office)) Это и не ComAddIns и не AddIns Excel 2019
Как возможно к ним обратится. Заранее благодарен за помощь!
Здравствуйте, прошу помочь в решение проблемы, не как не могу осуществить инсерт из EXCEL(2016 Х64) в BigQuery Может кто-то уже пробовал или подскажет куда бежать? Заранее благодарен! Моя ситуация: Скачал ODBC от гугла Все работает для чтения
Код
Sub ADO_Connect_without_library2()
'без подключение библиотеки ACTIVEX data ojects 6.0
Dim cn As Object, rs1 As Object
Dim strSQL As String
Dim QT As QueryTable
Set cn = CreateObject("ADODB.Connection")
Set rs1 = CreateObject("ADODB.Recordset")
'cn.Provider = "oraOLEDB.Oracle"
cn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=True;Extended Properties="DSN=CData GoogleBigQuery Source;";Initial Catalog=**********"
On Error GoTo CnErrorHandler
cn.Open: strSQL = "select * from PRODUCTS_TBL"
rs1.Open strSQL, cn
With ThisWorkbook.Sheets(1)
Set QT = .QueryTables.Add(rs1, .[A1])
End With
QT.Refresh: QT.Delete
rs1.Close: cn.Close
Set cn = Nothing
Exit Sub
CnErrorHandler:
For Each ADOErr In cn.Errors 'Отладчик
MsgBox "№ ошибки " & ADOErr.Number & Chr(10) & _
"Описание: " & ADOErr.Description & Chr(10) & _
"Источник: " & ADOErr.Source, vbCritical
Debug.Print "№ ошибки " & ADOErr.Number & Chr(10) & _
"Описание: " & ADOErr.Description & Chr(10) & _
"Источник: " & ADOErr.Source
cn.Close
Set cn = Nothing
Next ADOErr
End Sub
Но Если хочу сделать запись(INSERT) выдает ошибку
№ ошибки -2147467259 Описание: Ссылка на объект не указывает на экземпляр объекта. Источник: Microsoft OLE DB Provider for ODBC Drivers
Здравствуйте, а кто-то уже пробовал реализовать отправку текста с помощью VBA с EXCEL. Можете подсказать как это реализуемо, готов код понятное дело не прошу, просто не могу понять куда бежать Заранее благодарен!
Здравствуйте, прошу ваше помощи, не могу понять почему не передается значение с ComboBox1 (Period) в ячейку .cells(2,3) на листе SETINGS. С другими ComboBox всё передается. Если делать break когда отрабатывается макрос, тогда вставляется, банально в конце поставить MsgBox и тогда передается. Вся обработка происходит в КласМоде Уже двое суток не могу понять почему так. Пробовал пересоздать книгу, не помогло. Буду очень благодарен за любую помощь. Заранее благодарен!
Здравствуйте, прошу вашей помощи в решение глупой задачи. Произвожу подключение к книги через MS Query (Запрос с Excel файла) с двух компьютеров, но если один комп работает с этой книгой, второй комп не может к ней подключится - выводит сообщение про уточнение "Чтения". Как возможно обойти этот момент? Как произвести два одновременных подключения к одной книги? в книги находятся таблицы Excel 2010 .xlsb. Заранее благодарен!
Здравствуйте, прошу помочь в решение задачки. Есть Номенклатура у каждой своя цена, хочу сгруппировать их по диапазонам, но вот не хочу сидеть и просматривать какой шаг делать для дипазона, пороги итд. Как возможно это реализовать в Excel ? Через
Здравствуйте, прошу помощи в решении проблемы: Как подключится к базе Access у которой есть пароль. Без пароля к базе подключаюсь всё ок, а с паролем № ошибки -2147217843 Описание: Ошибочный пароль. Источник: Microsoft Access Database Engine *Пароль правильный! 100%
Здравствуйте, прошу помочь в решении данной проблемы. Как добавить "Фильтр по значению выделенной ячейки" на панель быстрого доступа. Не могу найти такое действие или я не туда смотрю EXCEL 2010-->Файл-->Параметры Excel-->Панель быстрого доступа--> (Выбрать команды)=Все Команды
Здравствуйте, прошу вашей помощи. Не могу найти решение такой проблемы, хочу закрасить через одну ListView но максимум что возможно сделать это только изменить цвет шрифта. Может кто-то встречался с такой проблемой и может подсказать. Заранее благодарен. П.С. Если кто-то может предложить иное решения подхода, готов выслушать )
Здравствуйте, прошу Вашей помощи. Есть: 1 2 3 Получаем: 1,2,3 У меня на такой случай есть макрос:
Скрытый текст
Код
Option Explicit
Sub SetClipboardText()
Dim i As Long
Dim contant As String
Dim MS1 As Byte
'Проверка на выбор целого столбца!
If Selection.Rows.Count = ActiveSheet.Rows.Count Then
MS1 = MsgBox("Вы выбрали целый столбец данных!," & Chr(10) & "Продолжить?", vbOKCancel)
If MS1 = vbOK Then GoTo StartIT Else End
End If
'Проверка на выбор только одной ячейки! на выбор только одного столбца!
If Selection.Count = 0 Or Selection.Count = 1 Or Selection.Columns.Count > 1 Then
MsgBox "Нужно выбрать более одной ячейки в одном столбце!", vbCritical
End
End If
StartIT:
For i = Selection.Row To Selection.Row + Selection.Rows.Count - 1
If contant = "" Then
contant = Cells(i, Selection.Column)
Else
contant = contant & "," & Cells(i, Selection.Column)
End If
Next i
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText contant
.PutInClipboard
End With
End Sub
[CODE][/CODE]
Но я где-то слышал, что такое можно делать через "Найти/Заменить" Якобы пишешь что-то типо "/p" и получается магия )) Мог бы кто-то рассказать этот секрет?
Здравствуйте, прошу вашей помощи. Не как не могу понять как возможно это реализовать. Нужно получить массив по первым заполненным столбцам. Знаю что тема, вроде, такая же подымалась, но видимо у меня руки не с того места, не смог найти..
Здравствуйте, есть такой вопрос. Как возможно узнать какая книга участвует в процессе ? Через стороннию программу запускается EXCEL книга и отрабатывает в ней макрос. Вопрос: Как узнать какая книга?(Путь, название...) Заранее благодарен!
Здравствуйте, прошу очередной раз Вашей помощи. Пытаюсь создать макрос подобие "Веник" только для диаграмм И вот возникла проблема: при передачи параметров длина, ширина, нужно снять галочку "Сохранять пропорцию". Вопрос, как снять эту галочку (LockAspectRatio) у активной диаграммы (ActiveChart) Заранее благодарен! П.С. Если будете отрабатывать макрос (Он создаст папку C:\Users\"USERNAME"\AppData\Roaming\TEMPLATE_XAP\)
Здравствуйте, прошу вашей помощи в решении простой задачи. Хочу изменить тип одной линии на графики, но после отработки макроса, меняются все линии ((( Что не так ? (( Заранее благодарен! Первый подход
Скрытый текст
Код
Sub Change_line()
For ii = 1 To ThisWorkbook.ActiveSheet.ChartObjects.Count
Set co = ThisWorkbook.ActiveSheet.ChartObjects(ii).Chart
Debug.Print co.Name
If co.SeriesCollection.Count > 1 Then
For i = 1 To co.SeriesCollection.Count
If co.SeriesCollection(i).Name Like "*Караван*" Then
Debug.Print co.SeriesCollection(i).Name
With co.SeriesCollection(i).Format.Line
.Weight = 3
.DashStyle = msoLineSysDash
End With
co.SeriesCollection(i).Smooth = True
Else
With co.SeriesCollection(i).Format.Line
.Weight = 2.5
.DashStyle = msoLineSolid
End With
co.SeriesCollection(i).Smooth = False
End If
Next i
End If
Next ii
End Sub
Второй подход
Скрытый текст
Код
Sub Change_line()
For Each co In ThisWorkbook.ActiveSheet.ChartObjects
Debug.Print co.Name
If co.Chart.SeriesCollection.Count > 1 Then
For i = 1 To co.Chart.SeriesCollection.Count
If co.Chart.SeriesCollection(i).Name Like "*Караван*" Then
Debug.Print co.Chart.SeriesCollection(i).Name
co.Chart.SeriesCollection(i).Select
With Selection.Format.Line
.Weight = 3
.DashStyle = msoLineSysDash
End With
co.Chart.SeriesCollection(i).Smooth = True
Else
co.Chart.SeriesCollection(i).Select
With Selection.Format.Line
.Weight = 2.5
.DashStyle = msoLineSolid
End With
co.Chart.SeriesCollection(i).Smooth = False
End If
Next i
End If
Next co
End Sub
Здравствуйте, прошу очередной раз Вашей помощи. Пытаюсь создать универсальный отчёт. Но столкнулся с проблемой: -Один макрос создает все переменные и функции (заносит их в модуль) "Create_Customize" -А второй макрос создает с листа "Template" форму отчёта на листе "Категория". "Create_Template" Но макрос Create_Template не видит переменные которые создал макрос "Create_Customize". Если отработать по отдельности, то всё ок. А если без остановок, тогда ошибка ((
Может кто-то стыкался с такой штукой, буду рад любым предложениям.
Здравствуйте, прошу Вашей помощи в решении такой проблемы: Хочу сделать Стрелку Вверх, когда пользователь находится ниже 50 строки. (На сайтах такое частенько есть - "Подняться Вверх" Стрелка Вверх) Но вот есть 2-e проблемы которую не могу понять как решить: -Как вывести объект в нижнем правом углу? -Как отследить события Scroll ?
П.C. С UserForm Почти получилось(При нажатии на ячейку которая ниже 50 строки), но мне нужен именно объект, который в самому вверху. И Как бы UserForm не очень красиво )
Здравствуйте, прошу Вашей помощи, пытаюсь реализовать загрузку данных с Excel в БД Oracle.
Скрытый текст
Код
Sub Insert_In_Table()
Dim cn As Object
Dim cmd As Object
Dim strSQL As String
Dim sh1 As Worksheet
Dim iRow As Long
Dim ADOErr, r
Debug.Print Now
Set cn = CreateObject("ADODB.Connection")
cn.Provider = "MSDAORA"
cn.ConnectionString = "User ID=analytics;Password=yseason;Data Source=ADVENTIS"
On Error GoTo CnErrorHandler
cn.Open
'Явно начинаем транзакцию во избежание режима AutoCommit=ON
cn.BeginTrans
'Создаем команду
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandText = _
"insert into analytics.EXCHANGE_RATE(DATE_REP, NBU, BLACK_MARKET, Interbank) values (?,?,?,?)"
'Для упрощения примера считаем, что данные находятся в столбцах A1 и J1 первого в книге листа
'Создаем соответствующий Range-объект
Set sh1 = ThisWorkbook.Sheets("На заливку")
Set r = sh1.Range(sh1.[A1], sh1.[D1].End(xlDown))
cmd.Parameters.Append cmd.CreateParameter("DATE_REP", 200, 1, 10)
cmd.Parameters.Append cmd.CreateParameter("NBU", 200, 1, 100)
cmd.Parameters.Append cmd.CreateParameter("BLACK_MARKET", 200, 1, 100, Null)
cmd.Parameters.Append cmd.CreateParameter("INTERBANK", 200, 1, 100)
'Проходим по всем заполненным строкам
For iRow = 2 To r.Rows.Count
cmd.Parameters("DATE_REP").Value = r.Cells(iRow, 1).Value
cmd.Parameters("NBU").Value = r.Cells(iRow, 2).Value
cmd.Parameters("BLACK_MARKET").Value = r.Cells(iRow, 3).Value
cmd.Parameters("INTERBANK").Value = r.Cells(iRow, 4).Value
cmd.Execute
Next iRow
'Сохраняем данные
cn.CommitTrans
'Удаляем команду и закрываем соединение
cn.Close
Set cn = Nothing
Debug.Print Now
Exit Sub
CnErrorHandler:
For Each ADOErr In cn.Errors 'Отладчик ошибок подключения
MsgBox "№ ошибки " & ADOErr.Number & Chr(10) & _
"Описание: " & ADOErr.Description & Chr(10) & _
"Источник: " & ADOErr.Source, vbCritical
Debug.Print "№ ошибки " & ADOErr.Number & Chr(10) & _
"Описание: " & ADOErr.Description & Chr(10) & _
"Источник: " & ADOErr.Source
Next
cn.Close
Set cn = Nothing
End Sub
Но у меня есть такой случай что поля black_market может быть Null и БД мне нужно занести Null (Ноль и пусто не подходит) Как нужно задать параметр, что б это осуществить? Таблица DATE_REP DATE(стоит проверка на Null) NBU NUMBER BLACK_MARKET NUMBER INTERBANK NUMBER
Здравствуйте, прошу Вашей помощи в пояснении, как происходит процесс парсинга, хочу с сайта достать одну цифру (курс доллара Средний курс) на ежедневной основе. Но как это сделать... даже не могу себе представить.
То что выкладывали макрос который вытягивает по коду валюты курс НБУ РНКБ и т.д, он просто прекрасен, но как оно работает...(Если сможете прокомментировать каждую строчку, огромно спасибо и +5 к Карне) ( Хочу просто понять принцип, как происходит поиск нужного текста в HTML (если я правильно понимаю, что там происходит поиск) Заранее благодарен! П.С. Желательно на живом примере: (Если Эта ссылка будет запрещена по правилам сайта, "прошу понять и простить"(с) ))
Скрытый текст
Макрос который выдает курс валют НБУ на дату, нашел на просторах( Как оно работает ((((
Код
Function NBU_RATE(sCurr$, iiDate As Date)
'moonexcel.com.ua
Dim sURI As String
Dim oHttp As Object
Dim htmlcode As String
Dim C As Range
Dim Q As Long
Dim iP As Long, z As Long
Dim s As String, S1 As String, iOnlyTable As String
Dim b As Object
Dim massive(30, 5)
Dim iDatas As Date
sURI = "http://bank.gov.ua/control/uk/curmetal/currency/search?formType=searchFormDate&time_step=daily&date=" & iiDate & "&execute"
On Error Resume Next
Set oHttp = CreateObject("MSXML2.XMLHTTP")
If Err.Number <> 0 Then
Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
End If
If oHttp Is Nothing Then Exit Function
On Error GoTo ConnectionError
oHttp.Open "GET", sURI, False
On Error GoTo ConnectionError
oHttp.Send
htmlcode = oHttp.responseText
iP = InStr(1, htmlcode, "України<")
htmlcode = Mid(htmlcode, iP, 10000)
iP = InStr(1, htmlcode, "<") + 6 + 11 '">
Dim ss As String
For i = 1 To 10000
ss = Trim(Mid(htmlcode, i, 10))
If Mid(ss, 6, 3) = ".20" And IsDate(ss) Then Exit For
Next i
iDatas = CDate(ss) 'Mid(htmlcode, iP, 10)
iOnlyTable = Mid(htmlcode, InStr(100, htmlcode, "<" & "table cellpadding="), InStr(1000, htmlcode, "<" & "/table>") - _
InStr(100, htmlcode, "<" & "table cellpadding=") + 10) '">
Set Doc = CreateObject("HTMLFile")
Doc.Write iOnlyTable
Set b = Doc.all.tags("TABLE")
For Each uTableElement In b
iRows = uTableElement.Rows.Length
iCells = uTableElement.Cells.Length
j = 0
For k = 1 To iRows
For l = 1 To 5
j = j + 1
massive(k, l) = uTableElement.Cells(j - 1).innerHTML
If j = uTableElement.Cells.Length Then GoTo 1
Next l
Next k
1:
Next uTableElement
For k = 2 To iRows
For l = 1 To 5
If massive(k, l) = sCurr Then
NBU_RATE = Replace(massive(k, 5), ".", ",")
NBU_RATE = NBU_RATE / massive(k, 3)
End If
Next l
Next k
Calculate
NextForLoop:
Set oHttp = Nothing
Exit Function
ConnectionError:
End Function
Здравствуйте, прошу Вашей помощи в решении одной проблемки. Не могу понять чего так, но все же: Макрос открывает книгу("КнигаОткрыть" и считает сколько заполненных строк в "КнигаОткрыть" И сравнивает с текущей книгой.
Код
Sub Не_Работает()
Dim CurrentBook As Workbook
Dim UnloadReportBook As Workbook
Set CurrentBook = ThisWorkbook
Set UnloadReportBook = Workbooks.Open("E:\Отчёты\По запросу\Сравнение Дохода\2015\Январь\DOH_NEW_CAT(c).xls")
'CurrentBook.Activate
'Application.WorksheetFunction.CountA(CurrentBook.Sheets(1).Range(Cells(9, 2), Cells(51, 2)))
Select Case Application.CountA(UnloadReportBook.Sheets(1).Range(Cells(9, 2), Cells(51, 2)))
Case Is > Application.CountA(CurrentBook.Sheets(1).Range(Cells(9, 2), Cells(51, 2))) 'Ошибка
MsgBox "В файле " & UnloadReportBook.Name & " Больше отделов чем в файле " & CurrentBook.Name
Case Is < Application.CountA(CurrentBook.Sheets(1).Range(Cells(9, 2), Cells(51, 2)))
MsgBox "В файле " & UnloadReportBook.Name & " Меньше отделов чем в файле " & CurrentBook.Name
End Select
End Sub
Я понимаю что нужно просто переключится на текущию книгу, но у меня есть предположения, что возможно это как-то по другому сделать(
Здравствуйте, прошу очередной раз Вашей помощи. Есть основной модуль с которого запускаются другие макросы...
Код
Option Explicit
Sub A_MACRO()
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'Отключит глупые вопросы )
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = False
'| Статус бар
Application.StatusBar = "|" & "A_MACRO " & "|" & "Запустился в " & "|" & Format(Now, "hh:mm:ss") & "|"
'|
Call Create_Mobile_Rep 'Create_Mobile_Rep
И когда отрабатывается вызванная процедура Create_Mobile_Rep
Код
Option Explicit
Sub Create_Mobile_Rep()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim CurBook As Workbook, MobRep As Workbook
'| Статус бар
Application.StatusBar = "|" & "Create_mobile_rep " & "|" & "Запустился в " & "|" & Format(Now, "hh:mm:ss") & "|"
'|
Set CurBook = Application.ThisWorkbook
Set ws1 = CurBook.Sheets("Сеть")
Set MobRep = Application.Workbooks.Add
MobRep.SaveAs Filename:="C:\Сеть\Mobile_rep\" + "m" + CurBook.Name, _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Set ws2 = MobRep.Sheets(1)
'Какие-то манипуляции
'
'
MobRep.Save ' Задает вопрос на совместимость Excel
MobRep.Close
Задает вопрос на совместимость Excel, хотя я ж отключаю его в первом модуле. Если поставить в самой процедуре Create_Mobile_Rep, тогда ок, но почему ? Заранее благодарен за ответ!
Здравствуйте, прошу,очередной раз Вашей помощи, как можно изменить значение переменной на уровне Public
Код
Option Explicit
Const ВОТ_ЭТУ_ПЕРЕМЕННУЮ = 5
Sub Как_это_сделать()
Dim s As Integer
s = 1
ВОТ_ЭТУ_ПЕРЕМЕННУЮ = Cells(3, s)
End Sub
Мне кажется что все изменяемые переменные лучше писать в вверху модуля. Но иногда нужно их менять из-за изменения структуры... как возможно это сделать? Приммер:
Код
Const ВОТ_ЭТУ_ПЕРЕМЕННУЮ = 5
Сейчас равна ПЯТИ, но вот это значение зависит от значение в ячейки A3 (Значение 25). Как сделать этот Redim* Заранее благодарен!
Здравствуйте, прошу Вашей помощи в решении не понятной ошибки: run time error 1004 нельзя установить свойство LineStyle класса Border
Есть шаблон отчёта на котором много листов на одном из с помощью макроса делаю оформление. Всё работало еще утром. А Теперь отказывается, файл не могу приложить, так как только я выдергиваю этот лист и пересохраняю всё работает.
Ругается на
Код
.Borders(i).Weight = xlThin
Код
Const OptM As Byte = 13 ' Последний столбец в блоке (Накопленно с начало месяца)
Const OptD As Byte = 26 ' Последний столбец в блоке (День)
Const RowAlco As Byte = 15 ' Первая строка в блоке Алкоголь
Option Explicit
Sub OPT()
Dim BegDataRowsA As Long, BegDataRows As Long
Dim WEEK_REP_OPT As Range
Dim WEEK_REP_OPT_ALK As Range
Dim LRowA As Long, LRow As Long, LCelM As Long, i As Long
Dim LColumnA As Integer, LColumn As Integer
Dim Wss As Worksheet, wsO As Worksheet
Set wsO = ThisWorkbook.ActiveSheet
'========================================================================================'
'==================================Оформление вставленных данных========================='
LCelM = wsO.Cells(1, 1).End(xlDown).Row
For i = 1 To 4
With Range(wsO.Cells(1, 1), wsO.Cells(LCelM, OptD))
.Borders(i).LineStyle = xlContinuous
.Borders(i).Weight = xlThin
End With
Next i
For i = 7 To 10
With Range(wsO.Cells(1, 1), wsO.Cells(LCelM, OptD))
.Borders(i).LineStyle = xlContinuous
.Borders(i).Weight = xlMedium
End With
If i = 10 Then
With Range(wsO.Cells(3, 1), wsO.Cells(LCelM, OptD)).Borders(xlInsideHorizontal)
.Weight = xlHairline
End With
End If
Next i
'''''''''''''''''''''''Закраска''''''''''''''''''''''''''''''''''''''''''''
With Range(wsO.Cells(LCelM, 1), wsO.Cells(LCelM, OptD))
.Borders(xlEdgeTop).Weight = xlThin
.Interior.Pattern = xlSolid
.Interior.PatternColorIndex = xlAutomatic
.Interior.ThemeColor = xlThemeColorDark2
.Interior.TintAndShade = -9.99786370433668E-02
.Interior.PatternTintAndShade = 0
End With
'''''''''''''''''''''''По середине ЖИРНЫМ''''''''''''''''''''''''''''''''''
With Range(wsO.Cells(1, 1), wsO.Cells(LCelM, OptM)).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'========================================================================================'
End Sub
Так же после
Код
.Borders(i).LineStyle = xlContinuous
Не могу вызвать "Формат ячейки" пробовал и ПКМ и CTRL+1 А если через макрос
Код
Application.Dialogs(xlDialogBorder).Show
тогда ошибка run time error 1004 из класса Dialog завершен не верно
Здравствуйте, прошу опять Вашей помощи. В связи с тем что я лентяй, хочу попробовать сделать программку которая будет выгружать в файл любого формата, данные отработанного скрипта с базы ORACLE.
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=MSDAORA.1;Data Source=***;Password=***;User ID=***"
'========================================================================================
OutputFile = "\\Srv\ВашПуть\clients.csv"
sSql = "select * from tbl"
Set Rs = GetRs(sSql, cn)
Call ExportTXT(Rs, OutputFile, ";", vbCrLf)
Rs.Close
Set Rs = Nothing
MsgBox "Готово! Контрагенты выгружены!"
Function GetRs(sstr, cn)
Set rstdata = CreateObject("ADODB.Recordset")
rstdata.Open sstr, cn
Set GetRs = rstdata
Set rstdata = Nothing
End Function
Function ExportTXT(Rs, FileName, DelimCol, DelimRow)
Dim AllText, fld
For Each fld In Rs.Fields
If AllText = "" Then
AllText = fld.Name
Else
AllText = AllText & DelimCol & fld.Name
End If
Next
AllText = AllText & DelimRow
AllText = AllText & Rs.GetString(, , DelimCol, DelimRow)
With CreateObject("Scripting.FileSystemObject").CreateTextFile(FileName, True)
.Write AllText
End With
End Function
И сам вопрос как его запихнуть в .exe? Пробовал через программу VBs To Exe но ничего не работает. Отработал просто в Excel все работает )
Если данный вопрос сочтут, как не относящимся к тематике форума, так и быть!
Всем здравствуйте и с Новым Годом. Вопрос такого характера: Кто какими приемами автоматизирует процессы отчётности? У меня на работе есть отдел закупки который с ума сходит у них есть рабочий отчёт который я им делаю ( 87 столбцов, 655 000 строк) Исходные данные формируются в ORACLE, но вот как этот массив автоматизировать (кнопку нажал и отчёт сам куда-то выложился) Я думаю что много кто тут работает с большими массивами информации. Будет очень интересны Ваши советы! Заранее благодарен!
Здравствуйте, прошу Вашей помощи, очередной раз. Файл весит 255 кб, по этому кинул на файлобменик(Если нельзя постараюсь на пальцах объяснить) Произвожу запуск макроса со сторонней программы (Xstarter) и при запуске возникает ошибка "Конфлик имен _filterdatabase" (Скрин) В файле фильтров нет, настраиваемая сортировка производится исключительно макросом (Пробовал ремить, тоже самое) Вписывал вот такую манипуляцию:
Код
Private Sub Workbook_Open()
On Error Resume Next
Me.Names("_FilterDatabase").Delete
End sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
Me.Names("_FilterDatabase").Delete
End Sub
Не помогло! Как определить какое имя ему не нравится ? Или как вобще такое обойти? Файл .xlsb Excel 2010, Windows 7 X64 Всем заранее огромно спасибо! П.С. макрос писал на скорую руку, прошу сильно не ругать(
Здравствуйте, опять беда. Не могу нажать на клавиатуре ESC Везде работает в Excel нет. Уже пробовал Вот таки манипуляция как:
Код
Application.OnKey "{ESC}"
SendKeys "{ESC}"
Но самое интересное вот это работает в любую сторону
Код
Sub TestOnKey()
' Reassign Ctrl+C
Application.OnKey "^c", "CopyMsg"
' Disable Ctrl+C
'Application.OnKey "^c", ""
' Restore Ctrl+C
'Application.OnKey "^c"
End Sub
Sub CopyMsg()
SendKeys "{ESC}"
MsgBox "You can't copy right now."
End Sub