Вставленная таблица Word не показывает границы

Я могу вставить таблицу, но границы таблиц не видны. Вы можете увидеть созданный документ. Чтобы позволить другим запускать этот скрипт, я должен использовать позднее связывание, которое, как я подозреваю, может быть причиной.

Мой код здесь:

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

Это сработало и показало границу с моей стороны, хотя у вас здесь есть необъявленные переменные и опечатка: .InsideColor = wdColordBlack

Ricardo Diaz 18.12.2020 19:52

@RicardoDiaz Спасибо, я исправил опечатку, однако у меня все еще есть проблема с созданной таблицей, но без видимых границ. Можете ли вы уточнить «это сработало»

AG-W 18.12.2020 19:55

Конечно, я запустил скрипт, исправляющий опечатку, и он показал границы. Я использую Excel и Word 365 на компьютере с Windows 10.

Ricardo Diaz 18.12.2020 20:00

@РикардоДиаз, хм. не могли бы вы опубликовать свой исправленный код, потому что мой все еще не работает. Я использую те же версии Excel и Word, что и Windows 10.

AG-W 18.12.2020 20:03
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
4
341
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот ваш код, исправленный, и в моем тестировании он работает, когда я запускаю его из 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. Но ваше решение более надежное, поэтому я буду использовать его в качестве ответа. Спасибо еще раз за помощь

AG-W 18.12.2020 21:25

Другие вопросы по теме