Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VBA] Controllo esistenza di un file.doc

    Ragazzi ho un foglio Excel con un pulsante ke mi stampa su una tabella WORD due cosine prese da excel:

    codice:
    Dim objWord As Word.Application
    
    Set objWord = New Word.Application
    
    
    objWord.Visible = True
    
    Dim objDoc As Word.Document
    Set objDoc = objWord.Documents.Add
    
    objDoc.Activate
    
    Dim objtable As Word.Table
    Set objtable = objDoc.Tables.Add(objDoc.Range, 2, 2)
    
    With objtable
        If .Style <> "Griglia tabella" Then
                .Style = "Griglia tabella"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
    
        objtable.Cell(1, 1).Range.InsertAfter var1
        objtable.Cell(1, 2).Range.InsertAfter var2
        objtable.Cell(2, 1).Range.InsertAfter var3
        objtable.Cell(2, 2).Range.InsertAfter var4
    
    objtable.Columns(1).SetWidth ColumnWidth:=131.4, RulerStyle:= _
            wdAdjustNone
        objtable.Columns(2).SetWidth ColumnWidth:=135, RulerStyle:= _
            wdAdjustNone

    Cosa fa? Crea un nuova applicazione Word, crea un nuovo documento crea una tabella etc...

    Se rieseguo il codice però mi crea appunto un altra applicazione con un nuovo documento.


    Io vorrei avere un controllo che se è stato gia creato un foglio word con la tabella stampata. stampi la seconda, terza quarta etcc sotto la precedente.

    Quindi mi serve sapere come si fa a sapere se un foglio appena creato è ancora aperto?

    Come si sposta il cursore sotto la tabella?

    Ho provato a registrare la Macro e mi dice "Selection.movedown etc.."

    é chiaro che Selection non vuol dire nulla su excel...sto sclerando a cercare il comando...


    Grazie!!!

  2. #2
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755

    Re: [VBA] Controllo esistenza di un file.doc

    fai un controllo se objWord e objDoc sono istanziate, la sintassi dovrebbe essere

    codice:
    if obj... is nothing
    fai le varie new , altrimenti vuol dire che il documento è già aperto e hai già una tabella dentro

    per quanto riguarda la Selection, prova a fare objDoc.Selection...
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  3. #3
    non va ma ho provato objword ed a sorpresa è lui...

    il controllo Is Nothing lo avevo già fatto ma quando faccio

    DIM objword AS Word.Application
    Set objword= New Word.Application l'oggetto non è più nothing....

    Ora ti spiego meglio:

    Io ho una spinbutton...seleziono la prima cella: schiaccio il pulsante...credo objword e objdoc etc..

    ora seleziono un altro dato, rischiaccio il pulsante...dove lo metto il controllo? nel senso che se metto prima del DIM "If objword IS Nothing then" mi da errore...dice che non posso dichiarare due volte l'oggetto...

  4. #4
    ho risolto così:

    ho reso pubbliche le due variabili objword e objdoc.

    poi ho usato il seguente codice:

    codice:
    If objWord Is Nothing Then
    
    
    Set objWord = New Word.Application
    objWord.Visible = True
    
    End If
    
    If objDoc Is Nothing Then
    
    Set objDoc = objWord.Documents.Add
    
    End If
    
    On Error Resume Next
    
    objDoc.Activate
    
    If Err.Number = 462 Then
    
    Set objWord = New Word.Application
    
    objWord.Visible = True
    
    Set objDoc = objWord.Documents.Add
    
    End If
    
    Dim objtable As Word.Table
    
    Set objtable = objDoc.Tables.Add(objWord.Selection.Range, 2, 2)
    
    
    With objtable
        If .Style <> "Griglia tabella" Then
                .Style = "Griglia tabella"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
    
        objtable.Cell(1, 1).Range.InsertAfter "IP Address"
        objtable.Cell(1, 2).Range.InsertAfter "Printer Name"
        objtable.Cell(2, 1).Range.InsertAfter ip
        objtable.Cell(2, 2).Range.InsertAfter pn
        
        
        objtable.Columns(1).SetWidth ColumnWidth:=131.4, RulerStyle:= _
            wdAdjustNone
        objtable.Columns(2).SetWidth ColumnWidth:=135, RulerStyle:= _
            wdAdjustNone
    
        
       objWord.Selection.MoveDown wdLine, 3
       objWord.Selection.TypeParagraph
       objDoc.Range
         
    End Sub

    Spero possa servire a qualcuno.



    objWord.Selection.TypeParagraph --> Vai a capo [tasto invio]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.