Тема: Многострочный текст

Как с помощью VBA создать многострочный текст определенной длины и вставить заранее приготовленный текст? Например, технические требования в чертежах.

Re: Многострочный текст

Вот как манипулировать командой MTEXT:
(обратите внимание на разделитель VbLf (именно так!) в предпоследней строке и завершающий текст команды VbCrLf (именно так!) там же)

Option Base 0
Function conv_to_string(num As Variant)
  conv_to_string = Replace(CStr(num), ",", ".", 1, -1, vbTextCompare)
End Function
Sub test_mtext()
  Dim pt1, pt2
  Dim i As Integer
  With ActiveDocument.Utility
    pt1 = .GetPoint(, "First corner: ")
    pt2 = .GetPoint(, "Second corner: ")
  End With
  MsgBox Format(pt1(0), "")
  ActiveDocument.SendCommand "_.-MTEXT " & _
      conv_to_string(pt1(0)) & "," & conv_to_string(pt1(1)) & "," & conv_to_string(pt1(2)) & " " & _
      conv_to_string(pt2(0)) & "," & conv_to_string(pt2(1)) & " " & _
      "kusok texta 1" & [b]vbLf[/b] & "kusok texta 2..." & vbCrLf
End Sub

(да простят меня Знатоки Бейсика за функцию conv_to_string, но это оттого, что я не знаю, какой функцией конвертировать Double числа в соответствии с US locale, т.е. без учёта местной русской локали, которая впихивает десятичную запятую вместо точки).

Re: Многострочный текст

ой, уберите из середины текста MsgBox Format(pt1(0), "") - этого не должно там быть, это случайно осталось.

Re: Многострочный текст

да простят меня Знатоки Бейсика за функцию conv_to_string

Да нормальная функция... Даже подсократить можно до Replace(CStr(num), ",", ".")
А вот более объектно-модельный вариант (для пространства модели)

Sub test()
  Dim pt1 As Variant
  Dim myText1 As String
  Dim myText2 As String
  Dim MTtext As String
  Dim MTextObj As AcadMText
  myText1 = "kusok texta 1"
  myText2 = "kusok texta 2..."
  MTtext = myText1 & vbCrLf & myText2
  With ActiveDocument.Utility
    pt1 = .GetPoint("Left/Up corner > ")
    w = .GetDistance(pt1, "Width MText > ")
  End With
  Set MTextObj = ThisDrawing.ModelSpace.AddMText(pt1, w, MTtext)
End Sub

Re: Многострочный текст

> VK
Пятая строка снизу должна читаться так:

    pt1 = .GetPoint([b],[/b] "Left/Up corner > ")

Re: Многострочный текст

> Maxim T
Точно! Очепятался....

Re: Многострочный текст

Большое всем спасибо за помощь. Закрываю тему