VBA text, Mtext в Excel
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA text, Mtext в Excel

VBA text, Mtext в Excel

Ответ
Поиск в этой теме
Непрочитано 01.04.2014, 15:11 #1
VBA text, Mtext в Excel
gizmo_zx
 
Проектировщик ЭО,ЭМ, ЭОС
 
Нижний Новгород
Регистрация: 18.07.2007
Сообщений: 257

Бодрого дня.
Подсобите нубу.

В програмке в место строка 22:

' *****
Set r = rw

Использовать текущую активную ячейку (которую я сам могу ткнуть), не просто перенимать значения с "rw"



Код:
[Выделить все]
 
Public Sub selectob()

Dim MyExcel As Object
Dim txt As String
Dim i, countobj As Integer
Dim Obj As Variant
Dim FilterType As Integer
Dim FilterData As String
'Dim ww As String

Set MyExcel = GetObject(, "Excel.Application")
Set rw = MyExcel.Workbooks(1).WorkSheets(1).Cells(1, 1)


line1:
ThisDrawing.Application.ActiveDocument.ActiveSelectionSet.Clear
ThisDrawing.Application.ActiveDocument.ActiveSelectionSet.SelectOnScreen
countobj = ThisDrawing.Application.ActiveDocument.ActiveSelectionSet.count


' *****
Set r = rw

For i = 0 To countobj - 1
    Set Obj = ThisDrawing.Application.ActiveDocument.ActiveSelectionSet.Item(i)
        If Obj.ObjectName = "AcDbText" Or Obj.ObjectName = "AcDbMText" Then
            txt = Obj.TextString
            r.Value = txt
            Set r = r.Offset(0, 1)
            
                    
        End If
Next i
Set rw = rw.Offset(1, 0)
rw.Activate
GoTo line1
End Sub
Просмотров: 4709
 
Непрочитано 01.04.2014, 15:35
#2
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от gizmo_zx Посмотреть сообщение
Set r = rw
Код:
[Выделить все]
Set r = Selection
Не?
Ну или даже лучше:
Код:
[Выделить все]
Set r = ActiveCell
 
 
Автор темы   Непрочитано 01.04.2014, 17:10
#3
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 257
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Код:
[Выделить все]
Set r = Selection
Код:
[Выделить все]
Set r = ActiveCell
Не работает. Но направление верно (:
gizmo_zx вне форума  
 
Непрочитано 01.04.2014, 17:20
#4
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от gizmo_zx Посмотреть сообщение
Не работает. Но направление верно (:
Ну да... Я только сейчас понял, что речь о VBA в AutoCAD. Тогда, если определение переменной rw устраивает, то и для r стоит поступать так же, заменяя конечное .Cells(1,1) наt .ActiveCell
Так, наверное, должно заработать.
 
 
Автор темы   Непрочитано 01.04.2014, 17:49
#5
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 257
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
заменяя конечное .Cells(1,1) наt .ActiveCell
Тоже не заработало (:
gizmo_zx вне форума  
 
Непрочитано 01.04.2014, 19:03
#6
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от gizmo_zx Посмотреть сообщение
Тоже не заработало (:

Ну и правильно! Наивно надеятся, что ActiveCell сработает для неактивного листа
Если не надоело, я могу продолжить гадать дальше?
Так вот, в таком случае, перед запросом ActiveCell нужно сначала активировать рабочий лист:
Код:
[Выделить все]
MyExcel.Workbooks(1).WorkSheets(1).Activate
Set r = ActiveCell
Вариант, когда адрес активной ячейки сохраняется до деактивации листа, я так понимаю, нам не подойдет, поскольку макрос запускается из AutoCAD?
 
 
Автор темы   Непрочитано 02.04.2014, 07:22
#7
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 257
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


неправильный метод или свойство.
Set r = ActiveCell
gizmo_zx вне форума  
 
Непрочитано 02.04.2014, 08:44
#8
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


offtop: А чем ctrl+c/ctrl+v не устраивает?
trir вне форума  
 
Непрочитано 02.04.2014, 08:58
#9
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от gizmo_zx Посмотреть сообщение
неправильный метод или свойство.
Тогда я пас. Видимо, .Activate в VBA для AutoCAD работает только для объектов самого AutoCAD. А как из AutoCAD обратится к Excel я не знаю.
 
 
Непрочитано 02.04.2014, 09:08
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
как из AutoCAD обратится к Excel
Как к любому стороннему приложению...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.04.2014, 09:59
#11
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 257
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


Цитата:
Сообщение от trir Посмотреть сообщение
ctrl+c/ctrl+v
Очень много и переключаться туда сюда. Чужая спецификация и несколько текстов в одной ячейке. Таблица рисованная.
Огромное спасибо AlphaGeo. Просто .Activate надо было не к WorkSheets прикручивать, а к Application.
Код:
[Выделить все]
 
Public Sub texttoexcelvb()

Dim MyExcel As Object
Dim txt As String
Dim i, countobj As Integer
Dim Obj As Variant
Dim FilterType As Integer
Dim FilterData As String
'Dim ww As String

Set MyExcel = GetObject(, "Excel.Application")
Set rwx = MyExcel.Workbooks(1).WorkSheets(1).Cells(1, 1)

line1:
ThisDrawing.Application.ActiveDocument.ActiveSelectionSet.Clear
ThisDrawing.Application.ActiveDocument.ActiveSelectionSet.SelectOnScreen
countobj = ThisDrawing.Application.ActiveDocument.ActiveSelectionSet.count

Set rw = MyExcel.ActiveCell
Set r = rw

For i = 0 To countobj - 1
    Set Obj = ThisDrawing.Application.ActiveDocument.ActiveSelectionSet.Item(i)
        If Obj.ObjectName = "AcDbText" Or Obj.ObjectName = "AcDbMText" Then
            txt = Obj.TextString
            r.Value = txt
            Set r = r.Offset(0, 1)
        Else
            ' выход при выборе не текста и колличестве =1
            If i = 0 Then
                    End
            End If
        End If
Next i

'переход на новую строку
Set rw = rw.Offset(1, 0)
rw.Activate


GoTo line1
End Sub

gizmo_zx вне форума  
 
Непрочитано 02.04.2014, 10:17
#12
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от gizmo_zx Посмотреть сообщение
Просто .Activate надо было не к WorkSheets прикручивать, а к Application.
Что ж, мои поздравления.
 
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA text, Mtext в Excel



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AUTOCAD 2010 перестал переключаться в многооконный режим. Проблемы с переменными Андрей Х. AutoCAD 24 27.05.2015 10:17
Express Tools Perezz!! AutoCAD 483 13.02.2015 10:57
Как скопировать содержимое размера в буфер? arturbd AutoCAD 8 06.09.2011 20:38
Нахождение расстояния между точками на чертеже Макс_Кунгур Программирование 68 03.09.2010 22:01
Требуется помощь с циклом в лиспе Composter LISP 28 13.05.2009 11:14