Я могу вставить таблицу, но границы таблиц не видны. Вы можете увидеть созданный документ. Чтобы позволить другим запускать этот скрипт, я должен использовать позднее связывание, которое, как я подозреваю, может быть причиной.
Мой код здесь:
Sub Button1_Click()
Dim objWord As Object
Dim objDoc
Dim objSelection
Dim i As Long
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add
objWord.Visible = True
Set objSelection = objWord.Selection
objSelection.TypeText ("Insert table after this text")
Set myRange = objDoc.Content
myRange.Collapse Direction:=wdCollapseEnd
objDoc.Tables.Add Range:=myRange, NumRows:=3, NumColumns:=4
Set myTable = objDoc.Tables(1)
With myTable.Borders
.Enable = True
.InsideLineStyle = wdLineStyleSingle
.OutsideLineStyle = wdLineStyleDouble
.InsideColor = wdColorBlack
.OutsideColor = wdColorBlack
End With
End Sub
@RicardoDiaz Спасибо, я исправил опечатку, однако у меня все еще есть проблема с созданной таблицей, но без видимых границ. Можете ли вы уточнить «это сработало»
Конечно, я запустил скрипт, исправляющий опечатку, и он показал границы. Я использую Excel и Word 365 на компьютере с Windows 10.
@РикардоДиаз, хм. не могли бы вы опубликовать свой исправленный код, потому что мой все еще не работает. Я использую те же версии Excel и Word, что и Windows 10.
Вот ваш код, исправленный, и в моем тестировании он работает, когда я запускаю его из Excel.
Sub Button1_Click()
Dim objWord As Object
Dim objDoc As Object
Dim objSelection As Object
Dim i As Long
Dim myRange As Object
Dim myTable As Object
On Error Resume Next
Set objWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Err.Clear
Set objWord = CreateObject("Word.Application")
End If
objWord.Visible = True
On Error GoTo 0
Set objDoc = objWord.Documents.Add
Set objSelection = objWord.Selection
objSelection.TypeText ("Insert table after this text")
Set myRange = objDoc.Content
myRange.Collapse Direction:=wdCollapseEnd
Set myTable = objDoc.Tables.Add(Range:=myRange, NumRows:=3, NumColumns:=4)
With myTable.Borders
.Enable = True
.InsideLineStyle = 1
.OutsideLineStyle = 7
.InsideColor = 0
.OutsideColor = 0
End With
End Sub
Проблема с тем, что границы таблицы не отображаются, заключается в том, что при использовании поздней привязки вы должны использовать числовые значения для параметра.
Я также сделал несколько других корректировок, они не влияют на проблему, с которой вы столкнулись, но они являются лучшими практиками. Все объекты объявлены, и я добавил тест, чтобы увидеть, запущено ли уже приложение Word. В некоторых выпусках приложений Office несколько экземпляров приложения могли загружаться в память при выполнении CreateObject, когда приложение уже было там.
Спасибо за код и решение. Я должен отметить, что мне удалось заставить мой исходный код работать, когда я добавил .OutsideLineWidth = wdLineWidth150pt
в свой блок .Border. Но ваше решение более надежное, поэтому я буду использовать его в качестве ответа. Спасибо еще раз за помощь
Это сработало и показало границу с моей стороны, хотя у вас здесь есть необъявленные переменные и опечатка:
.InsideColor = wdColordBlack