es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar parte del borde de una tabla en Excel VBA.

Hay un conjunto de formularios que a veces tenemos que completar en el trabajo, y estoy tratando de automatizar la tarea haciendo que Excel VBA reemplace el formulario por un documento de Word, lo complete con los datos apropiados y lo imprima en formato PDF. Me estoy quedando atascado en la eliminación del estilo de línea del borde. Quiero que no haya línea de borde en el lado izquierdo. He probado enfoques diferentes, y el que parece más probable que funcione en base a mi comprensión es el siguiente:
(nota: “.Border(xlEdgeleft).LineStyle = xlLineStyleNone” es la línea que me está dando problemas)

Sub main()

Dim objWord As Object
Dim objDoc As Object
Dim objHdrRange As Object
Dim myTable As Object

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add
Set objHdrRange = objDoc.Sections(1).headers(1).Range
Set myTable = objWord.activedocument.tables.Add(objHdrRange, 5, 5)

With myTable
    .Borders.enable = True
    .Border(xlEdgeleft).LineStyle = xlLineStyleNone
   'más código va aquí posteriormente
End With

Set objDoc = Nothing
Set objHdrRange = Nothing
objWord.Quit

End Sub
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la línea que está causando problemas es aquella que intenta eliminar la línea de borde en el lado izquierdo de la celda de la tabla. El código está utilizando una propiedad xlLineStyleNone que puede no ser reconocida por el modelo de objeto de Word.

    Una posible solución es utilizar en su lugar la constante wdLineStyleNone.

    .Sub main()
    
    Dim objWord As Object
    Dim objDoc As Object
    Dim objHdrRange As Object
    Dim myTable As Object
    Dim wdLineStyleNone As Integer
    wdLineStyleNone = 0
    
    Set objWord = CreateObject("Word.Application")
    Set objDoc = objWord.Documents.Add
    Set objHdrRange = objDoc.Sections(1).headers(1).Range
    Set myTable = objWord.activedocument.tables.Add(objHdrRange, 5, 5)
    
    With myTable
        .Borders.enable = True
        .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
        ‘más código va aquí posteriormente
    End With
    
    Set objDoc = Nothing
    Set objHdrRange = Nothing
    objWord.Quit
    
    End Sub
    

    Aquí, en lugar de utilizar la constante de Excel xlEdgeleft, se utiliza la constante de Word wdBorderLeft para seleccionar el borde izquierdo de la celda de la tabla. También se utiliza la constante wdLineStyleNone en lugar de la constante xlLineStyleNone para eliminar el estilo de línea.

Comments are closed.