Всем привет, записал рекордером макрос чтоб получать данные с Sharepoint List. Помогите "очистить" код, убрать всякие привязки к книге и листу, и чтоб данные записивал в рекордсет. А может кто то уже имеет пример рабочего кода
Доброго вренени суток уважаемые. запросом через ADODB получаю recordset из MS SQL сервера, далее при передаче данных из рекордсета в массив получаю вот это - <Variable uses an Automation type not supported in Visual Basic>, вот на этотм этапе imprep = rs.GetRows, рекордсет не пустой однозначно, записи в нем есть. грешу на сам SQL запрос, так как это не превый раз, у меня с десяток подобных запросов работают как часы .
Код
Function imprep(x)
Set conn = New ADODB.connection
Set rs = New ADODB.Recordset
sSql = "SELECT mseg.[EBELN] [PO],marm.[EAN11] [EAN IT],lips.[CHARG] [Lot Number],format(mch1.[ERSDA_SIMP_DT],'yyyy-MM-dd') [Production Date],format(mch1.[VFDAT_SIMP_DT],'yyyy-MM-dd') [Expiration Date], CASE WHEN mseg.[BWART]='102' " & _
"THEN cast(concat('-',lips.[LFIMG]*marm.[UMREN]) AS numeric) else lips.[LFIMG]*marm.[UMREN] END [IT QTY],mkpf.[BKTXT] [Customs Declaration Number],mkpf.[BKTXT] [Import Date],( SELECT [LANDA] FROM LIB_F6P_RTP.sap.[T005] t005 WHERE( " & _
"t005.[MANDT]='430') AND (t005.[LAND1]=lfa1.[LAND1])) [Country Code Import From],( SELECT [LANDA] FROM LIB_F6P_RTP.sap.[T005] t005 WHERE(t005.[MANDT]='430') AND(t005.[LAND1]=marc.[HERKL])) [Country Code Of Origin],'zzz' [sep],mseg. " & _
"[BUDAT_MKPF_SIMP_DT] [Posting date],mseg.[CPUTM_MKPF_SIMP_TM] [Time of entry],mseg.[MBLNR] [Material Document],mseg.[ERFME] [Entry UOM],mseg.[MEINS][Base UOM],marm.[UMREZ] [UMREZ Numerator],marm.[UMREN] [UMREN Denominator], " & _
"mseg.[BWART] [mvmtyp],ekko.[UNSEZ] [Delivery],mseg.[XBLNR_MKPF] [Invoice],mseg.[MATNR] [MSEG matnr],lips.[LFIMG] [LIPS QTY] FROM LIB_F6P_RTP.sap.[MSEG] mseg INNER JOIN LIB_F6P_RTP.sap.[MKPF] mkpf ON mkpf.[MANDT]=mseg.[MANDT] AND mkpf. " & _
"[MBLNR]=mseg.[MBLNR] INNER JOIN LIB_F6P_RTP.sap.[MARM] marm ON marm.[MANDT]=mkpf.[MANDT] AND marm.[MANDT]=mseg.[MANDT] AND marm.[MATNR]=mseg.[MATNR] INNER JOIN LIB_F6P_RTP.sap.[MARC] marc ON marc.[MANDT]=marm.[MANDT] AND marc.[WERKS]= " & _
"mseg.[WERKS] AND marc.[MATNR]=marm.[MATNR] AND mseg.[MATNR]=marc.[MATNR] INNER JOIN LIB_F6P_RTP.sap.[MARA] mara ON mara.[MANDT]=marc.[MANDT] AND mara.[MATNR]=mseg.[MATNR] AND marm.[MANDT]=mara.[MANDT] AND marc.[MATNR]=mara.[MATNR] AND " & _
"marm.[MATNR]=mara.[MATNR] INNER JOIN LIB_F6P_RTP.sap.[LFA1] lfa1 ON lfa1.[MANDT]=mseg.[MANDT] AND lfa1.[LIFNR]=mseg.[LIFNR] AND mara.[MANDT]=lfa1.[MANDT] AND marc.[MANDT]=lfa1.[MANDT] AND marm.[MANDT]=lfa1.[MANDT] AND mkpf. " & _
"[MANDT]=lfa1.[MANDT] INNER JOIN LIB_F6P_RTP.sap.[T005] t005 ON t005.[MANDT]=lfa1.[MANDT] AND t005.[LAND1]=lfa1.[LAND1] INNER JOIN LIB_F6P_RTP.sap.[EKKO] ekko ON ekko.[MANDT]=mseg.[MANDT] AND ekko.[EBELN]=mseg.[EBELN] INNER JOIN " & _
"LIB_F6P_RTP.sap.[LIPS] lips ON lips.[MANDT]=mseg.[MANDT] AND lips.[VBELN]=ekko.[UNSEZ] AND lips.[MATNR]=mseg.[MATNR] AND mara.[MANDT]=lips.[MANDT] AND mara.[MATNR]=lips.[MATNR] AND marc.[MANDT]=lips.[MANDT] AND marc.[MATNR]=lips. " & _
"[MATNR] INNER JOIN LIB_F6P_RTP.sap.[MCH1] mch1 ON mch1.[MANDT] COLLATE SQL_Latin1_General_CP1_CI_AS=mseg.[MANDT] AND mch1.[MANDT] COLLATE SQL_Latin1_General_CP1_CI_AS=mseg.[MANDT] AND mch1.[MATNR] COLLATE " & _
"SQL_Latin1_General_CP1_CI_AS=lips.[MATNR] AND mch1.[CHARG] COLLATE SQL_Latin1_General_CP1_CI_AS=lips.[CHARG] WHERE(mseg.[MANDT]='430') AND (mseg.[BWART] IN('101','102')) AND (mseg.[WERKS]='2751') AND (marm.[MEINH]='IT') AND " & _
"(mara.[MTART]='FERT') AND mseg.[MATNR] IN " & x & " AND (lips.[CHARG]<>'') AND (mseg.[BUDAT_MKPF]>='20201001' AND mseg.[BUDAT_MKPF]<='20201101') ORDER BY [Posting date], [Time of entry];"
conn.Open ConnStr
Set rs = conn.Execute(sSql)
If Not rs.EOF Then
imprep = rs.GetRows ' Здесь ошибка
rs.Close
Else
MsgBox "Error: No Records returned.", vbCritical
imprep = Empty
End If
If CBool(conn.State And adStateOpen) Then conn.Close
Set conn = Nothing
Set rs = Nothing
End Function
update: подсунул другой запрос - все работае, значит все таки загвоздка в самом запросе ,что то в возвращенном результате не нравится екселю, и не хочет его в масссив переносить
Доброго времени суток, господа форумчане. Вопрос такой, есть форма, на кторой N кнопок. Задача в том, что бы при клике на кнопку, имя этой кнопки бралось в переменную и далее выполняло некий макрос с этой переменной. Суть в том, что бы не писать для каждой кнопки один и тот же макрос
З.Ы. скорее всего не верно сформулировал вопрос. должно быть что то типа (которое конечно де не работает)
Код
Private Sub ActiveControl.Name_Click()
'bla bla vla
End Sub
Добого времени суток уважаемые форумчане. Можно ли как то передать массив в форму из sub ну или при инициализации формы или еще как то. Гугл читал, не помогло(или не там читал).
Доброго времени суток, подскажите плз, как завернуть следующее: необходимо выгрузить данные с сервера в массивы, но что бы не писать кучу кода - сделать это циклом и соответсвенно присвоить имена массивам из ячейки.
Код
Sub sqldata()
Set sq = ThisWorkbook.Worksheets("SQL")
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
Dim sqlrs As ADODB.Recordset
Set sqlrs = New ADODB.Recordset
cn.ConnectionString = "Provider=MSDASQL.1;Password=live3;Persist Security Info=True;User ID=live3_ro;Data Source=ord.rtcis"
cn.Mode = adModeRead
cn.Open
i = 1
While sq.Cells(i, 2) <> ""
SqlString = sq.Cells(i, 2)
sqlrs.Open SqlString, cn
Dim arr()
arr = sqlrs.GetRows 'Вот здесь нужно создать масив с именем изячейки C,i
'Stop
sqlrs.Close
i = i + 1
Wend
End Sub
Всем привет. продскажите пожалуйста, как "завернуть" суммесли, что бы работало с несколькими листами ? количество листов может менятся. названия от 1 до 31 (колво дней.)
Доброго дня суток уважаемые. подскажите пожалуйста, как правильнго реальзовать функцию СТАНДОТКЛОН по месяцам из общей таблицы, что бы учитывался месяц ? пример во вложени.
Доброго времени суток уважаемые форумчане. есть простенький макрос, который конвертить данные из таблицы в xml, и все бы хорошо, но в результирующий файл дописывает лишние кавычки ", если же смотреть в Debug.Print - там все ок. в чем может быть проблемка ?
Добрый день уважаемые флрумчане. Подскажите пожалуйста, можно ли как то сгруппировать данные по каждой 5й минуте часа, то есть 01:05, 01:10, 01:15.....01:55, 02:00.....?
Доброго времени суток господа, подскажите плз, как средствами VBA сделать проверку на несовпадение в пределах одного и того же LoadID ? Например если в пределах одного LoadID один и тот де Item Number - то вывести 0,в птотивном случае если хотя бы один Item Number отличается - 1 против каждой строки в пределах LoadID, то ес тьотметить что тако то LoadID - "кривой".
Доброго времени суток господа, подскажите плз, как посредством VBA, для значений первой таблицы, найти данные в другой таблице и подставить в первую, что то типа ВПР ? на ум пока приходит только цикл в цикле, но думаю можно проще.
Доброго времени суток. Есть программа reflection(коннеск) которая так же имеет встроенный VBA. из под Excel с подключенной библиотекой этой программы, запросто открываю сессию(настройки которой хранятся в файле rtc.r4w) и далее из под VBA Excel - работаю с этой програаммой.
Скрытый текст
Код
Sub creatertcsession()
Dim r As New Reflection4.Session
r.Visible = True
r.OpenSettings "C:\Users\username\Desktop\rtc.r4w"
r.Transmit "1"
r.wait 1.3
r.transmit "Hello"
r.......
r.......
end sub
ВОпрос в следующем, в каую сторону копать, что бы не открывать новую сессию, а работать с уже открытой ?
Здравствуйте уважаемые. с какого то момента перестала работать встроенная справка в VBA. Вместо нее, при выделении например свойства какого то объекта и нажатии F1 - открывается браузер - "http://msdn.microsoft.com/en-us/library/office******" с описанием, а было насколько я помню встроенная справка. Вопрос, как вернуть ?
Доброго времени суток, уважаемые форумчане. к сожалению не смог найти в 2013 версии такую фишку, как разделение листа, как это есть в предыдущих версиях. возможность разделить страницу, путем перетаскивания ползунка, где я мог бы видеть одновременно начало и конец большой таблицы, например.
Доброго времени суток, уважаемы форумчане. есть дата в формате YDDD, где - Y - последняя цифра года, DDD - день по счету от 01 января. Например сегодня 22.10.14 , выглядит как 4295. отсюда вопрос, как с помощью VBA, 4295 преобразовать в 22.10.14? Вопрос прямо противоположный этой теме
Доброго времени суток. Натолкните пожалуйста на правильный путь. Есть некий список данных, и некий список условий. Необходимо в определенном столбце, проверить все значение на предмет выполнения условий и закрасить. если условие выполняется. ВРоде бы все просто, но что то не додумаю.
Доброго времени суток. Подскажите пожалуйста, как реализовать следующее: в Excel есть список значений(динамический, от 1 -до N) Каким образом его можно брать в переменную, и передавать в SQL ? P.S. получение данный реализовано в VBA ниже пример с двумя переменными.
Доброго времени суток уважаемые. есть код, который работает с внешней программой, посредством библиотеки. Все работает хорошо. Единственное что после того как программа запускается, нужно внести пароль в окошно и нажать ентер, далее все работает как надо. ВОпрос, можно ли как то программно отловить это окно, вписать пароль и Ентер ?
Доброго времени суток, уважаемые. произошло что то непонятное. в какой то момент перестала работать кнопка "Список Полей" в сводных таблицах. Создаю сводную как обычно, штатным способом. появляется макетик, но вот само поле для добавлени/удаления всяких столбцов и прочее - не повляется, ручной метод вызова, как описано здесь - не срабатывает, то есть вообще ничего не происходит при нажатии на нее.. как победить сие недоразумение? без сводных таблиц - как без рук. P.S. (рестарт Excel, и самого компа не помог )
Доброго времени суток. Подскажите пожалуйста, как посредством VBA перевести время вида 123456 перевести в 12:34:56. Учитывая что время может быть и такое - 13456 то есть 1:34:56 а время например 1209 - 00:12:09. Логика в том, что бы брать справа на лево по два символа.
доброго времени суток, уважаемые форумчане. Думаю вопрос задавался, но поиск по форуму ничего не показал. Вопрос следующий, как посредством VBA получить дату в юлианском формате - YDDD (y - последняя цифра года, ddd- номер дня с начала года) ?
Доброго времени суток уважаемые форумчане. Накопал на просторах инета функцию преобразования веса в пропись. но как то оно криво показывает. Например 23,789 показывает как Двадцать три тн 0,789 кг., а хотелось бы Двадцать три тн 789 кг. может кто подскажет, как его и куда копнуть ?. Пример во вложении.
Доброго времени суток уважаемые. подскажите пожалуйста, из инпутбокса на форме, вписанное значение разделить на две разных переменных, если первые 8 цифр- должна быть одна переменная(всегда , все что после - вторая переменная(от 1 до 5 цифр). Реально ли это?
Доброго времени суток уважаемые, подскажите, как взять в переменную массив заведомо неизвестного размера. есть два столбца данных, но кол-во строк варьируется(то есть каждый раз разное но одинаковое в обеих столбцах). пример, выдает ошибку 424
Доброго времени суток уважаемые. где то был у меня примерчик в одну строку, ставить сетку на ячейки, usedrange. к сожалению затерялся, не подскажите кто в курсе. точно помню что в одну строку. а то запись макроса выдает многоэтажный код.
Доброго времени суток. подскажите пожалуйста, как прикрутить условие like к Select case ?
есть код. который проверяет кастомера, и соответственно пишет значение в ячейку. Но кастомер в таблице может быть с пробелами занесен, как в примере кода.
Код
For i = 1 To 17
customer = Cells(i, 11).Value
Select Case customer
Case "TOV FOOD ", " CROSS DOCK PLATF ", "KIEV "
Cells(i, 3).Value = "NA"
Case "STV ", "SAV SERVICE "
Cells(i, 3).Value = "RD"
Case Else
Cells(i, 3).Value = "Other"
End Select
Next
End Sub
Доброго времени суток, уважаемые. Помогите реализовать следующее. есть простенькая форма для поиска по коду и ввода значения против кода. в принципе работает, но! необходимо что бы записывало данные в режиме накопления, типа =2+54+8 и т д. и плюс хотелось бы реализовать поиск по неполному коду, а по последним значениям, ибо первая цыфра, например, всегда одинакова. пример во вложении
Доброго времени суток, подскажите пожалуйста, как реализовать такое, есть файл с шаблоном, в который пользователь может вносить данные, но при сохранении/закрытии, не сохранялись изменения. реально ли это сделать ?