Sub RangeToWord()
Dim i As Integer, j As Integer
Dim s As String
Dim Wrd As Object
'получаем текст всего листа
With ActiveSheet.UsedRange
For i = .Column To .Column + .Columns.Count
For j = .Row To .Row + .Rows.Count
'пропускаем пустые ячейки
If Len(.Cells(j, i).Value) Then
s = s & .Cells(j, i).Value & " "
End If
Next j
Next i
End With
'активируем ворд
Application.ActivateMicrosoftApp xlMicrosoftWord
Set Wrd = GetObject(, "Word.Application")
If Not Wrd Is Nothing Then
'если нет открытых документов, то создаем новый
If Wrd.Documents.Count = 0 Then
Wrd.Documents.Add.ActiveWindow.Activate
End If
'в позицию курсора вставляем текст
Wrd.ActiveWindow.Selection.TypeText Text:=s + vbCrLf
'закрываем ссылку на ворд
Set Wrd = Nothing
End If
End SubSub RangeToWord()
Dim i As Integer, j As Integer
Dim s As String
Dim Wrd As Object
Application.ActivateMicrosoftApp xlMicrosoftWord
Set Wrd = GetObject(, "Word.Application")
If Not Wrd Is Nothing Then
If Wrd.Documents.Count = 0 Then
Wrd.Documents.Add.ActiveWindow.Activate
End If
With ActiveSheet.UsedRange
For j = .Row To .Row + .Rows.Count
For i = .Column To .Column + .Columns.Count
If Len(.Cells(j, i).Value) Then
Wrd.ActiveWindow.Selection.Font.Bold = .Cells(j, i).Font.Bold
'тут подстава))) с их индивидуальными константами в зависимости от приложения!
If .Cells(j, i).Font.Underline = xlUnderlineStyleSingle Then
Wrd.ActiveWindow.Selection.Font.Underline = 1 'wdUnderlineSingle
Else
Wrd.ActiveWindow.Selection.Font.Underline = 0
End If
Wrd.ActiveWindow.Selection.Font.Size = .Cells(j, i).Font.Size
Wrd.ActiveWindow.Selection.Font.Strikethrough = .Cells(j, i).Font.Strikethrough
Wrd.ActiveWindow.Selection.Font.Italic = .Cells(j, i).Font.Italic
Wrd.ActiveWindow.Selection.Font.Color = .Cells(j, i).Font.Color
Wrd.ActiveWindow.Selection.TypeText Text:=.Cells(j, i).Value & " "
End If
Next i
Next j
Wrd.ActiveWindow.Selection.TypeText vbCrLf
End With
'закрываем ссылку на ворд
Set Wrd = Nothing
End If
End SubSub RangeToWord2()
Dim Wrd As Object 'получаем текст всего листа
'перехват ошибки
On Error Resume Next
'активируем ворд
Application.ActivateMicrosoftApp xlMicrosoftWord
Set Wrd = GetObject(, "Word.Application")
If Wrd Is Nothing Then
Set Wrd = CreateObject("Word.Application")
End If
If Not Wrd Is Nothing Then
'если нет открытых документов, то создаем новый
If Wrd.Documents.Count = 0 Then
Wrd.Documents.Add.ActiveWindow.Activate
End If
ActiveSheet.UsedRange.Copy
'Wrd.ActiveWindow.Selection.PasteExcelTable False, False, False
With Wrd.ActiveDocument
.Range.PasteExcelTable False, False, False
.Tables(1).ConvertToText Separator:=3, NestedTables:=True
With .Range.Find
.ClearFormatting
.Replacement.ClearFormatting
'заменяем абзацы
.Execute FindText:="^p", Replace:=2, ReplaceWith:=" "
'Дальше, при необходимости можно удалить
'заменяем двойные пробелы на одинарные
.Execute FindText:=" ", Replace:=2, ReplaceWith:=" "
'и на всякий случай еще раз
.Execute FindText:=" ", Replace:=2, ReplaceWith:=" "
End With
'перемещаем выделение на начало документа
.Range(Start:=.Range.Start, End:=.Range.Start).Select
End With
'закрываем ссылку на ворд
Set Wrd = Nothing
End If
End Sub