Страницы: 1
RSS
Как достать текст из Надписи в ячейку?
 
Добрый день.
Есть 100 товарных чеков, которые сохранены в разных книгах. Надо выяснить что и кому было продано в этих товарных чеках.
Объединил их все макросом на один лист одной книги, но адреса и имена кому продавалось забивались вручную в объект Надпись.
Как сохранить текст их всех Надписей в ячейку, например, под этими надписями?
 
Достать в дебаггер:
Код
Sub QWERT()
Dim SH As Object
For Each SH In ActiveSheet.Shapes
    Debug.Print SH.OLEFormat.Object.Text
Next
End Sub
 
Цитата
Объединил их все макросом
может не стоило этого делать? Теперь разбираться от чьей ж... ноги
Изменено: Александр Моторин - 07.02.2014 01:54:36
 
В VBA пока слаб... Открыл Alt+F11, Insert Module, вставил этот пример. Закрыл. Запустил макрос - ничего не произошло. Что и как делает этот макрос?
Цитата
Александр Моторин пишет:
может не стоило этого делать?
Задача быстро и легко объединять 100 таких чеков в одну таблицу с столбцами Покупатель. Номер чека. Дата. Наименование товара. Количество. Не придумал ничего лучшего как макросом объединить и отсортировать по этим полям. Осталась только одна проблемка - как достать текст из объекта Надпись и сохранить где нибудь тут же, чтоб тоже отсортировалось.
 
Копирует текст из надписей на третий лист
Согласие есть продукт при полном непротивлении сторон
 
Sanja, отлично! Работает! Споткнулся только об одно - в товарных чеках есть логотипы, вставленные картинкой. Чтобы уменьшить размер примера я их удалил. Ваш макрос спотыкается об картинку, потому что там нет текста и выдает ошибку. Как развить условие IF, чтоб оно игнорировало не только текст в кавычках, но и когда объект не текстовый блок?
 
абвгд явно тоже наждо пропускать..
Живи и дай жить..
 
:?:   не проверял
Код
'для картинок  
If .Text Like "*Внимание*" Or SH.Type = msoPicture Then GoTo 10  
'для НЕ текстовых полей          
If .Text Like "*Внимание*" Or SH.Type <> msoTextBox Then GoTo 10
 
Изменено: Sanja - 07.02.2014 10:59:40
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Слэн пишет:
абвгд явно тоже наждо пропускать..
АБВГД наверное для примера забито?
Согласие есть продукт при полном непротивлении сторон
 
интересно а реквизиты там тоже поменяны для примера? :)

мне кажется - это продавец( одинаковый и известный автору) а вот покупатели разные..
Живи и дай жить..
 
Слэн,прав. АБВГД пропускать надо, Но это не критично - все легко потом отсортировывается, да и я так понял OR .Text Like "*АВБГД*" меня спасет. Кстати сколько таких вложений в одно условие может быть?
А вот об картинки все равно спотыкается. Уменьшил шапку, вернул в пример. Во вложении пример с картинкой, где макрос спотыкается.

>> перезалил файл, вставил несколько картинок, так нагляднее
Изменено: Lupus - 07.02.2014 11:53:06
 
Разнес по разным If....Then - заработало. Сам в шоке. может гуру разъяснят в чем причина?
     
Код
If SH.Type = msoPicture Then GoTo 10
If .Text Like "*Внимание*" Then GoTo 10
Согласие есть продукт при полном непротивлении сторон
 
Отлично! Работает! Спасибо!
 
вычисляются все равно оба выражения условия и если в одном ошибка, макрос останавливается. таким образом надо или избежать ошибки или обработать ее правильно

вот так по п1:


Код
For Each SH In ActiveSheet.Shapes
 If SH.Type = 17 Then
 With SH.OLEFormat.Object
 If .Text Like "*Внимание*" Then GoTo 10
 Worksheets(2).Range("A" & I).Value = .Text
 End With
 End If
I = I + 1
10 Next

а вот так чуть быстрее:


Код
On Error GoTo er
For Each SH In ActiveSheet.Shapes
 With SH.OLEFormat.Object
 If .Text Like "*Внимание*" Then GoTo 10
 Worksheets(2).Range("A" & I).Value = .Text
 End With
 End If
I = I + 1
10 Next
Exit Sub
er: Resume 10
Живи и дай жить..
 
Цитата
Слэн пишет:
и если в одном ошибка
но там-же не ошибка, а невыпонение одного из условий. Или это тоже ошибка?
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Читают тему
Наверх