Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Работа с MS Office > Получение ячеек, обведененных границей


Автор: Pawlic 6.2.2013, 09:10
Здравствуйте Господа Форумчане.

Пишет Вам начинающий програмист из смежного отдела (1С)  ;)

Предъистория такая:

Как известно бизнес-отношения покупатель-поставщик выстраиваются во многом благодая EXEL:
в этом формате поставщики отправляют по электронке счета, накладные, покупатели отправляют поставщикам заказы и т.д. ...

 
Есть желание написать обработку под 1С, которая автоматически переносит данные из эксель в 1С.

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

Короче вопрос:

Как програмно получить область ячеек, обведенных границей? 
Можно ли впринципе это сделать?

Например в счете на оплату получить таблицу с товарами и ценами...

Автор: FINANSIST 6.2.2013, 11:20
Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
програмист

программист
Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
Предъистория

Предыстория

Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
благодая

благодаря

Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
EXEL

Excel

Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
впринципе

в принципе

Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
Как известно бизнес-отношения покупатель-поставщик выстраиваются во многом благодая EXEL:

Нет, Excel вообще не является частью бизнес отношений.

Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
Как програмно получить область ячеек, обведенных границей? 

Код

Sub Parser()
Dim MyMass() As String
Dim cll As Object
Dim x As Long
Dim y As Integer
For Each cll In ActiveSheet.Range("A1").Resize(65500, 255).SpecialCells(xlCellTypeFormulas).Cells
    Let y = 0
    If cll.Borders(xlEdgeLeft).LineStyle <> xlNone Then Let y = y + 1
    If cll.Borders(xlEdgeTop).LineStyle <> xlNone Then Let y = y + 1
    If cll.Borders(xlEdgeBottom).LineStyle <> xlNone Then Let y = y + 1
    If cll.Borders(xlEdgeRight).LineStyle <> xlNone Then Let y = y + 1
    If y = 4 Then
        Let x = x + 1
        ReDim Preserve MyMass(x - 1)
        Let MyMass(x - 1) = cll.Address
    End If
Next
For Each cll In ActiveSheet.Range("A1").Resize(65500, 255).SpecialCells(xlCellTypeConstants).Cells
    Let y = 0
    If cll.Borders(xlEdgeLeft).LineStyle <> xlNone Then Let y = y + 1
    If cll.Borders(xlEdgeTop).LineStyle <> xlNone Then Let y = y + 1
    If cll.Borders(xlEdgeBottom).LineStyle <> xlNone Then Let y = y + 1
    If cll.Borders(xlEdgeRight).LineStyle <> xlNone Then Let y = y + 1
    If y = 4 Then
        Let x = x + 1
        ReDim Preserve MyMass(x - 1)
        Let MyMass(x - 1) = cll.Address
    End If
Next
MsgBox "Адреса :" & Chr(10) & Join(MyMass(), ",")
End Sub


Автор: Akella 14.2.2013, 10:59
Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
Здравствуйте Господа Форумчане.

После "Здравствуйте" ставится запятая, т.к. потом идёт обращение.

"Господа Форумчане" - оба слова нужно писать с маленькой буквы. Это не имена собственные.

Добавлено @ 11:00
После
Цитата(Pawlic @  6.2.2013,  09:10 Найти цитируемый пост)
Как известно

должна быть запятая.
Известно, как известно - это вводные слова и словосочетния smile
Почитай на тему: ПУНКТУАЦИЯ ПРИ ВВОДНЫХ СЛОВАХ И СОЧЕТАНИЯХ

Автор: diadiavova 16.2.2013, 20:17
Цитата(Akella @  16.3.2012,  14:25 Найти цитируемый пост)
Настоящий знаток языка - это как мастер кунг-фу - никогда не применяет его без надобности. Вот!


Автор: irinazanuda 16.2.2013, 21:39
Pawlic, ручками, ручками)))
http://s1.ipicture.ru/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)