Creé una macro en VBA que me permite elegir una celda poblada con un número y extraer el número en esa celda en una ubicación específica en un documento de Word.

Sin embargo, cuando ejecuto la macro, el número que se rellena en Word no está formateado con comas para separar miles (por ejemplo, parece "10000", pero debe parecerse a "10,000"). El número ya está formateado con las comas en Excel, pero el formato no se transfiere a Word.

¿Cómo puedo formatear el número con comas cuando extraigo datos de Excel a Word?

Esto es lo que tengo hasta ahora:

Sub Excel to Word()
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim i As Integer
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True
    Set wrdDoc = wrdApp.Documents.Open("C:\Folder\qsn.docm")
    With wrdDoc

        'find text on word document
        .Application.Selection.Find.Text = "AL1"
        .Application.Selection.Find.Execute

        'now found, type text from designated cell
        .Application.Selection.TypeText ActiveSheet.Range("C2")

        'find text on word document
        .Application.Selection.Find.Text = "AL2"
        .Application.Selection.Find.Execute

        'now found, type text from designated cell
        .Application.Selection.TypeText ActiveSheet.Range("D2")

        If Dir("C:\Folder\QSN.doc") <> "" Then
            Kill "C:\Folder\QSN.doc"
        End If
        .SaveAs ("C:\Folder\QSN.doc")
        .Close ' close the document
    End With
    wrdApp.Quit ' close the Word application
    Set wrdDoc = Nothing
    Set wrdApp = Nothing
End Sub
1
Ariel Martin 22 ene. 2018 a las 16:26

3 respuestas

La mejor respuesta

Puede formatear el número usando la función Format.

.Application.Selection.TypeText Format(ActiveSheet.Range("C2"), "#,##0.00")
0
Variatus 22 ene. 2018 a las 13:38

¿Qué pasa si intentas lo siguiente?

.Application.Selection.TypeText ActiveSheet.Range("C2").NumberFormat = "Standard"
0
Dennis 22 ene. 2018 a las 13:34

Si desea transferir el valor en la celda, formateado como está en la celda, use la propiedad Text de la celda en lugar de su propiedad (predeterminada) Value:

.Application.Selection.TypeText ActiveSheet.Range("D2").Text
0
YowE3K 22 ene. 2018 a las 18:47