Trabajar con objetos Document

En Visual Basic, los métodos para modificar archivos son métodos del objeto Document o de la colección Documents. En este tema se Visual Basic ejemplos relacionados con las tareas identificadas en las secciones siguientes.

Crear un nuevo documento

La colección Documents incluye todos los documentos abiertos. Para crear un nuevo documento, utilice el método Add para agregar un objeto Document a la colección Documents. La siguiente instrucción crea un documento.

Documents.Add

Una alternativa mejor para crear un documento es asignar el valor devuelto a una variable de objeto. El método Add devuelve un objeto Document que hace referencia al nuevo documento. En el siguiente ejemplo, se asigna el objeto Document devuelto por el método Add a una variable de objeto. Después, se establecen varias propiedades y métodos del objeto Document. El nuevo documento se puede controlar fácilmente con una variable de objeto.

Sub NewSampleDoc() 
    Dim docNew As Document 
    Set docNew = Documents.Add 
    With docNew 
        .Content.Font.Name = "Tahoma" 
        .SaveAs FileName:="Sample.doc" 
    End With 
End Sub

Abrir un documento

Para abrir un documento existente, use el método Open con la colección Documents. La siguiente instrucción abre un documento denominado Sample.doc, que se encuentra en la carpeta MyFolder.

Sub OpenDocument() 
    Documents.Open FileName:="C:\MyFolder\Sample.doc" 
End Sub

Guardar un documento existente

Para guardar un solo documento, use el método Save con el objeto Document. Las siguientes instrucciones guardan el documento llamado Sales.doc.

Sub SaveDocument() 
    Documents("Sales.doc").Save 
End Sub

Puede guardar todos los documentos abiertos aplicando el método Save a la colección Documents. Con la siguiente instrucción se guardan todos los documentos abiertos.

Sub SaveAllOpenDocuments() 
    Documents.Save 
End Sub

Guardar un nuevo documento

Para guardar un solo documento, use el método SaveAs2 con un objeto Document. Las siguientes instrucciones guardan el documento activo como "Temp.doc" en la carpeta actual.

Sub SaveNewDocument() 
    ActiveDocument.SaveAs FileName:="Temp.doc"
End Sub

El argumento FileName solo puede incluir el nombre de archivo o la ruta de acceso completa (por ejemplo, "C:\Documents\Temporary File.doc").

Cerrar documentos

Para cerrar un solo documento, use el método Close con un objeto Document. La siguiente instrucción se cierra y guarda el documento llamado Sales.doc.

Sub CloseDocument()
    Documents("Sales.doc").Close SaveChanges:=wdSaveChanges 
End Sub

Puede cerrar todos los documentos abiertos aplicando el método Close de la colección Documents. Con la siguiente instrucción se cierran todos los documentos sin guardar los cambios.

Sub CloseAllDocuments() 
    Documents.Close SaveChanges:=wdDoNotSaveChanges
End Sub

En el siguiente ejemplo, se pide al usuario que guarde el documento antes de cerrarlo.

Sub PromptToSaveAndClose()
    Dim doc As Document
    For Each doc In Documents 
        doc.Close SaveChanges:=wdPromptToSaveChanges
    Next
End Sub

Activar un documento

Para cambiar el documento activo, use el método Activate con un objeto Document. La siguiente instrucción se activa y abre el documento llamado Sales.doc.

Sub ActivateDocument() 
    Documents("Sales.doc").Activate 
End Sub

Determinar si un documento está abierto

Para determinar si un documento está abierto, puede enumerar la colección Documents utilizando la instrucción For Each...Next. En el ejemplo siguiente, se activa el documento denominado Sample.doc, si está abierto, o se abre Sample.doc si no está abierto actualmente.

Sub ActivateOrOpenDocument() 
    Dim doc As Document 
    Dim docFound As Boolean 
 
    For Each doc In Documents 
        If InStr(1, doc.Name, "sample.doc", 1) Then 
            doc.Activate 
            docFound = True 
            Exit For 
        Else 
            docFound = False 
        End If 
    Next doc 
 
    If docFound = False Then Documents.Open FileName:="Sample.doc" 
End Sub

Hacer referencia al documento activo

En lugar de hacer referencia a un documento por nombre o por número de índice, por ejemplo, Documents("Sales.doc") la propiedad ActiveDocument devuelve un objeto Document que hace referencia al documento activo (documento objetivo). El ejemplo siguiente muestra el nombre del documento activo y, si no hay ningún documento abierto, muestra un mensaje.

Sub ActiveDocumentName() 
    If Documents.Count >= 1 Then 
        MsgBox ActiveDocument.Name 
    Else 
        MsgBox "No documents are open" 
    End If 
End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.