Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как создать textbox из vba excel в word? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Как создать textbox из vba excel в word?
Curiosity Дата: Воскресенье, 21.09.2014, 07:32 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!
Делаю макрос который делает отчет в word по данным excel, но у меня не получается из excel в word создать обьект textbox. :(
Подскажите пожалуйста как это сделать? :)


Инженер-проектировщик
 
Ответить
СообщениеЗдравствуйте!
Делаю макрос который делает отчет в word по данным excel, но у меня не получается из excel в word создать обьект textbox. :(
Подскажите пожалуйста как это сделать? :)

Автор - Curiosity
Дата добавления - 21.09.2014 в 07:32
AndreTM Дата: Воскресенье, 21.09.2014, 08:43 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
А зачем вам текстбокс именно в Ворде? И где он там у вас будет располагаться - прямо в тексте, что-ль? :)

Ну и НАДО показывать ваш файл Excel с кодом (и ваш шаблон Word, если есть, с текстом), чтобы вообще понять, что именно вы делаете...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА зачем вам текстбокс именно в Ворде? И где он там у вас будет располагаться - прямо в тексте, что-ль? :)

Ну и НАДО показывать ваш файл Excel с кодом (и ваш шаблон Word, если есть, с текстом), чтобы вообще понять, что именно вы делаете...

Автор - AndreTM
Дата добавления - 21.09.2014 в 08:43
Curiosity Дата: Воскресенье, 21.09.2014, 10:04 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Если я правильно понимаю объект textbox это объект в котором можно записывать уравнения.
Мне он нужен для того чтобы оформлять инженерные расчеты.
Вот например я нашел код который делает такое но в самом ворде
[vba]
Код
Sub Test()
Dim objRange As Range
Dim objMath As OMath

Set objRange = Selection.Range
Set objRange = Selection.OMaths.Add(objRange)
Set objMath = objRange.OMaths(1)

Selection.TypeText ChrW(948) & "ax^2+bx+c=0"
objMath.BuildUp

Selection.TypeParagraph
End Sub
[/vba]

А когда я пытаюсь через excel такое сделать, excel выдает ошибку.

[vba]
Код
Sub otchet()
     Dim WordApp As Object
     Dim SaveAsName As String
     Dim objRange As Range
     Dim objMath As OMath
                 
     Set WordApp = CreateObject("Word.Application")
     SaveAsName = Worksheets(1).Cells(1, 6)
      
     With WordApp
         .Documents.Add
         With .Selection
             .Font.Size = 12
             .ParagraphFormat.Alignment = 0
             .Font.Bold = False
             .TypeText Text:="text"
             .TypeParagraph
             Set objRange = Selection.Range
             Set objRange = Selection.OMaths.Add(objRange)
             Set objMath = objRange.OMaths(1)
              
             Selection.TypeText "ax^2+bx+c=0"
             objMath.BuildUp
               
             Selection.TypeParagraph
         End With
         .ActiveDocument.SaveAs Filename:=SaveAsName
     End With
         WordApp.Quit False
     Set WordApp = Nothing

'   Reset status bar
     Application.StatusBar = ""

'   Show the folder
     Shell "explorer.exe " & Application.DefaultFilePath, vbNormalFocus
End Sub
[/vba]


Инженер-проектировщик
 
Ответить
СообщениеЕсли я правильно понимаю объект textbox это объект в котором можно записывать уравнения.
Мне он нужен для того чтобы оформлять инженерные расчеты.
Вот например я нашел код который делает такое но в самом ворде
[vba]
Код
Sub Test()
Dim objRange As Range
Dim objMath As OMath

Set objRange = Selection.Range
Set objRange = Selection.OMaths.Add(objRange)
Set objMath = objRange.OMaths(1)

Selection.TypeText ChrW(948) & "ax^2+bx+c=0"
objMath.BuildUp

Selection.TypeParagraph
End Sub
[/vba]

А когда я пытаюсь через excel такое сделать, excel выдает ошибку.

[vba]
Код
Sub otchet()
     Dim WordApp As Object
     Dim SaveAsName As String
     Dim objRange As Range
     Dim objMath As OMath
                 
     Set WordApp = CreateObject("Word.Application")
     SaveAsName = Worksheets(1).Cells(1, 6)
      
     With WordApp
         .Documents.Add
         With .Selection
             .Font.Size = 12
             .ParagraphFormat.Alignment = 0
             .Font.Bold = False
             .TypeText Text:="text"
             .TypeParagraph
             Set objRange = Selection.Range
             Set objRange = Selection.OMaths.Add(objRange)
             Set objMath = objRange.OMaths(1)
              
             Selection.TypeText "ax^2+bx+c=0"
             objMath.BuildUp
               
             Selection.TypeParagraph
         End With
         .ActiveDocument.SaveAs Filename:=SaveAsName
     End With
         WordApp.Quit False
     Set WordApp = Nothing

'   Reset status bar
     Application.StatusBar = ""

'   Show the folder
     Shell "explorer.exe " & Application.DefaultFilePath, vbNormalFocus
End Sub
[/vba]

Автор - Curiosity
Дата добавления - 21.09.2014 в 10:04
AndreTM Дата: Воскресенье, 21.09.2014, 10:24 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Selection в Word и Excel - это разные вещи.
Вот в этом куске
            Set objRange = Selection.Range
            Set objRange = Selection.OMaths.Add(objRange)
            Set objMath = objRange.OMaths(1)
            
            Selection.TypeText "ax^2+bx+c=0"
вы, по-вашему, к чему обращаетесь?


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеSelection в Word и Excel - это разные вещи.
Вот в этом куске
            Set objRange = Selection.Range
            Set objRange = Selection.OMaths.Add(objRange)
            Set objMath = objRange.OMaths(1)
            
            Selection.TypeText "ax^2+bx+c=0"
вы, по-вашему, к чему обращаетесь?

Автор - AndreTM
Дата добавления - 21.09.2014 в 10:24
Curiosity Дата: Воскресенье, 21.09.2014, 10:39 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
А разве with wordapp это не обращение к ворду?
Тогда как правильнее будет? подскажите пожалуйста :)


Инженер-проектировщик
 
Ответить
СообщениеА разве with wordapp это не обращение к ворду?
Тогда как правильнее будет? подскажите пожалуйста :)

Автор - Curiosity
Дата добавления - 21.09.2014 в 10:39
AndreTM Дата: Воскресенье, 21.09.2014, 18:07 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
[vba]
Код
    With WordApp
          .Documents.Add
          With .Selection
              .Font.Size = 12 ' вот это действительно обращение к WordApp.Selection.Font.Size
              ' ...
              Set objRange = Selection.Range ' а вот это - обращение к объекту основного приложения (код ведь исполняется в Excel)
[/vba]
Так что если у вас должно быть
Set objRange = WordApp.Selection.Range, то и обращаемся соответственно:
[vba]
Код
    With WordApp
          .Documents.Add
          With .Selection
              ' ...
              Set objRange = .Range
              Set objRange = .OMaths.Add(objRange)
              ' ...
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение[vba]
Код
    With WordApp
          .Documents.Add
          With .Selection
              .Font.Size = 12 ' вот это действительно обращение к WordApp.Selection.Font.Size
              ' ...
              Set objRange = Selection.Range ' а вот это - обращение к объекту основного приложения (код ведь исполняется в Excel)
[/vba]
Так что если у вас должно быть
Set objRange = WordApp.Selection.Range, то и обращаемся соответственно:
[vba]
Код
    With WordApp
          .Documents.Add
          With .Selection
              ' ...
              Set objRange = .Range
              Set objRange = .OMaths.Add(objRange)
              ' ...
[/vba]

Автор - AndreTM
Дата добавления - 21.09.2014 в 18:07
Curiosity Дата: Понедельник, 22.09.2014, 01:32 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо! Теперь понял :D
Но у меня проблемы с типом данных
[vba]
Код
Dim objMath As OMath
[/vba]
excel пишет "user-defined type not defined"
или здесь тоже нужно обратиться к ворду как то?


Инженер-проектировщик
 
Ответить
СообщениеСпасибо! Теперь понял :D
Но у меня проблемы с типом данных
[vba]
Код
Dim objMath As OMath
[/vba]
excel пишет "user-defined type not defined"
или здесь тоже нужно обратиться к ворду как то?

Автор - Curiosity
Дата добавления - 22.09.2014 в 01:32
AndreTM Дата: Понедельник, 22.09.2014, 01:59 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
А в Ворде этот класс у вас как определен? Ведь какую-то библиотеку подключали в референсах? - вот и к проекту Excel её подключите...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА в Ворде этот класс у вас как определен? Ведь какую-то библиотеку подключали в референсах? - вот и к проекту Excel её подключите...

Автор - AndreTM
Дата добавления - 22.09.2014 в 01:59
Windo Дата: Понедельник, 22.06.2015, 11:03 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Делал по Вашему примеру, в чем моя ошибка?

нужно чтобы работал такой код из под excel, цель - печать формул в ворд с подстановкой численных значений с листа excel:

[moder]Создайте свою тему в соответствии с правилами форума, приложите Ваш пример и покажите в коде, где у Вас возникает ошибка![/moder]


Сообщение отредактировал Manyasha - Понедельник, 22.06.2015, 18:20
 
Ответить
СообщениеДелал по Вашему примеру, в чем моя ошибка?

нужно чтобы работал такой код из под excel, цель - печать формул в ворд с подстановкой численных значений с листа excel:

[moder]Создайте свою тему в соответствии с правилами форума, приложите Ваш пример и покажите в коде, где у Вас возникает ошибка![/moder]

Автор - Windo
Дата добавления - 22.06.2015 в 11:03
KSV Дата: Вторник, 23.06.2015, 16:44 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
[vba]
Код
Private Sub CreateWordOMath()
      Dim i&
        
      With CreateObject("Word.Application")
          With .Documents.Add.Range
              .Font.Size = 12
              .Font.Bold = False
              .Text = "Текст"
                
              ' Добавляем новый абзац и в нем поле математ. формул
              With .OMaths.Add(.Paragraphs.Add.Range.Next).OMaths(1)
                  ' СОЗДАЕМ АРГУМЕНТ В СКОБКАХ
                  With .Functions.Add(.Range, 5)  ' wdOMathFunctionDelim
                      ' МЕНЯЕМ КРУГЛЫЕ СКОБКИ НА ПРЯМЫЕ
                      .Delim.BegChar = 124
                      .Delim.EndChar = 124
                        
                      With .Args(1)
                          ' СОЗДАЕМ МАТРИЦУ 4x4
                          With .Functions.Add(.Range, 12, 16, 4)  ' wdOMathFunctionMat
                    For i = 1 To 16
                    .Args(i).Range.Text = i
                    Next
                          End With
                      End With
                  End With
                    
                  ' СТАВИМ ЗНАК РАВЕНСТВА
                  .Range.InsertAfter "= "
                    
                  ' СТАВИМ СТЕПЕННУЮ ФУНКЦИЮ
                  With .Functions.Add(.Range.Characters.Last, 19) ' wdOMathFunctionScrSup
                      .Args(1).Range.Text = 2
                      .Args(2).Range.Text = 3
                  End With
              End With
          End With
          .Visible = True
          .Activate
      End With
End Sub
[/vba]
К сообщению приложен файл: WordOMath.xls (39.5 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Вторник, 23.06.2015, 16:47
 
Ответить
Сообщение[vba]
Код
Private Sub CreateWordOMath()
      Dim i&
        
      With CreateObject("Word.Application")
          With .Documents.Add.Range
              .Font.Size = 12
              .Font.Bold = False
              .Text = "Текст"
                
              ' Добавляем новый абзац и в нем поле математ. формул
              With .OMaths.Add(.Paragraphs.Add.Range.Next).OMaths(1)
                  ' СОЗДАЕМ АРГУМЕНТ В СКОБКАХ
                  With .Functions.Add(.Range, 5)  ' wdOMathFunctionDelim
                      ' МЕНЯЕМ КРУГЛЫЕ СКОБКИ НА ПРЯМЫЕ
                      .Delim.BegChar = 124
                      .Delim.EndChar = 124
                        
                      With .Args(1)
                          ' СОЗДАЕМ МАТРИЦУ 4x4
                          With .Functions.Add(.Range, 12, 16, 4)  ' wdOMathFunctionMat
                    For i = 1 To 16
                    .Args(i).Range.Text = i
                    Next
                          End With
                      End With
                  End With
                    
                  ' СТАВИМ ЗНАК РАВЕНСТВА
                  .Range.InsertAfter "= "
                    
                  ' СТАВИМ СТЕПЕННУЮ ФУНКЦИЮ
                  With .Functions.Add(.Range.Characters.Last, 19) ' wdOMathFunctionScrSup
                      .Args(1).Range.Text = 2
                      .Args(2).Range.Text = 3
                  End With
              End With
          End With
          .Visible = True
          .Activate
      End With
End Sub
[/vba]

Автор - KSV
Дата добавления - 23.06.2015 в 16:44
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!