Вверх ↑
Этот топик читают: Гость
Ответов: 91
Рейтинг: 0
#1: 2018-05-16 14:32:41 ЛС | профиль | цитата
Здравствуйте!
Скрипт используется для получения данных строки таблицы Excel. Что добавить в скрипт, для получения цвета и фона строки?


Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,21,105)
{
}
Add(VBJScript,14615819,119,98)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doOpen|7:doWrite|6:doRead|7:doSheet|7:doArray|7:doClose|7:doReads|
EventPoints=#6:onRead|7:onCells|7:onArray|6:onOpen|7:onReads|0:|
DataPoints=#7:MyArray|
Script=#9:Dim strIn|10:Dim strOut|10:Dim NumRow|10:Dim NumCol|5:Dim i|5:Dim j|14:Dim MyArrays()|12:Dim objExcel|0:|22:Sub doWork(Data,Index)|18: Select Case Index|15: Case "doOpen"|52: Set objExcel = CreateObject("Excel.Application")|52: Set objWorkbook = objExcel.Workbooks.Open (Data)|93: For i=1 To objWorkbook.Sheets.Count 'Листы начинаются не с "0", а с "1"|78: sys.onRead objWorkbook.Sheets(i).Name 'Выводим имя наружу |9: Next|18: sys.onRead 0 |16: sys.onOpen 1|142: Case "doRead" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;|22: strIn = CStr(Data)|28: i = InStr(1,strIn,";",0)|37: NumRow = CLng(Mid(strIn, 1, i-1))|33: NumCol = CLng(Mid(strIn,i+1))|61: strOut = objExcel.ActiveSheet.Cells(NumRow, NumCol).Value|24: sys.onCells strOut |27: 'Считывание таблицы с xls|16: Case "doReads"|15: strOut = ""|14: NumRow = 1|14: NumCol = 5|4: |69: Do While Not IsEmpty(objExcel.ActiveSheet.Cells(NumRow, 1).Value)|77: Do While Not IsEmpty(objExcel.ActiveSheet.Cells(NumRow, NumCol).Value)|82: strOut = strOut & objExcel.ActiveSheet.Cells(NumRow, NumCol).Value & ";"|29: NumCol = NumCol + 1|11: Loop|31: strOut = strOut & vbCrLf|17: NumCol = 5|26: NumRow = NumRow + 1|8: Loop|19: |23: sys.onReads strOut |33: 'конец Считывание таблицы xls|8: |162: Case "doWrite" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;ЗаписываемоеЗначение|22: strIn = CStr(Data)|28: i = InStr(1,strIn,";",0)|37: NumRow = CLng(Mid(strIn, 1, i-1))|30: j = InStr(i+1,strIn,";",0)|41: NumCol = CLng(Mid(strIn, i+1, j-i-1))|28: strIn = Mid(strIn, j+1)|58: objExcel.ActiveSheet.Cells(NumRow, NumCol).Value=strIn|20: sys.onRead strIn|93: Case "doSheet" 'На вход подаётся строка, содержащая имя Листа|32: objExcel.Sheets(Data).Select|44: objExcel.ActiveSheet.Cells(1, 1).Select |17: Case "doArray"|23: REDIM MyArrays(10)|27: MyArrays = Sys.MyArray|23: 'MyArrays.Add(666)|26: 'MyArrays.Set(0, 123)|33: 'sys.onArray(MyArrays.Count)|34: 'sys.onArray(MyArrays.Get(0))|19: 'DIM IPArray()|30: 'REDIM IPArray(ip1.Count)|34: 'For I = 0 To (ip1.Count - 1)|29: 'IPArray(I) = ip1.Get(I)|15: 'Next I |17: Case "doClose"|17: objExcel.Quit|26: Set objExcel = Nothing|20: sys.onOpen 0 |11: End Select|0:|7:End Sub|
UseName=0
}

карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 91
Рейтинг: 0
#2: 2018-05-16 18:47:04 ЛС | профиль | цитата
http://micro-solution.ru/projects/addin_vba-excel/color_interior
Как добавить в скрипт?
карма: 0

0
Ответов: 8888
Рейтинг: 823
#3: 2018-05-16 20:32:07 ЛС | профиль | цитата
wvlas, в справке по VBA в Excel есть Вывод цвета индексом из стандартных (можно с наименованием) или в формате RGB (наименование не возможно)
карма: 19

0
Ответов: 91
Рейтинг: 0
#4: 2018-05-17 04:38:46 ЛС | профиль | цитата
Вывод сообщений о числовых значениях цветов

Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.

Пример кода 2:

Sub ColorTest2()
MsgBox Range("A1").Interior.Color
MsgBox Range("A48").Interior.Color
MsgBox Range("C1217").Cells(4).Interior.Color
MsgBox Cells(3, 6).Interior.Color
End Sub
Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.


Как это встроить в скрипт и получить значение?
карма: 0

0
Ответов: 8888
Рейтинг: 823
#5: 2018-05-17 10:03:11 ЛС | профиль | цитата
wvlas, так я и спрашивал в предыдущем посте: в каком виде выводить эти данные, индексом с возможностью наименования, или числом (RGB)
(Индекс и имя имеют ~40 стандартных цветов)
ColorExcel.jpg
карма: 19

0
Ответов: 91
Рейтинг: 0
#6: 2018-05-17 11:48:33 ЛС | профиль | цитата
Нужно найти все строки с белым фоном и черным шрифтом, наверное достаточно выводить индекс.
карма: 0

0
Ответов: 8888
Рейтинг: 823
#7: 2018-05-17 14:56:17 ЛС | профиль | цитата
wvlas, http://forum.hiasm.com/getfile/38374
На выходе строка содержащая два индекса (шрифт и заливка) через точку с запятой.

Редактировалось 1 раз(а), последний 2018-05-17 14:56:36
карма: 19

0
файлы: 1ColorIndex.rar [58.4KB] [458]
Ответов: 91
Рейтинг: 0
#8: 2018-05-25 18:10:31 ЛС | профиль | цитата
Спасибо! Все то что нужно.
карма: 0

0
Ответов: 91
Рейтинг: 0
#9: 2018-05-29 15:01:46 ЛС | профиль | цитата
А как вывести ячейку с сохранением формата значения. Вывести то, что видно когда файл откроешь в Exel? Например в ячейке 00:11:46:03 а через скрипт выводится 114603.

https://cloud.mail.ru/public/Ep9T/aWqu5kSKY
карма: 0

0
Ответов: 91
Рейтинг: 0
#10: 2018-05-31 13:17:26 ЛС | профиль | цитата
Нужно в скрипте .Value заменить на .Text
карма: 0

0
Ответов: 8888
Рейтинг: 823
#11: 2018-05-31 15:30:51 ЛС | профиль | цитата
wvlas, "тихо сам с собою я веду беседу"
карма: 19

0
Ответов: 91
Рейтинг: 0
#12: 2018-05-31 17:00:11 ЛС | профиль | цитата
Чего народ беспокоить.
карма: 0

0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)