+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problema Macro per apertura Word

  1. #1
    Eusty non è in linea Scolaretto
    Post
    64

    Problema Macro per apertura Word

    Buongiorno,
    ho assegnato ad un pulsante in un file excel la seguente macro per sostituire all'interno di un file Word alcune parole selezionate (per esempio in word c'è la parola <<Cognome>> e la sostituisco con il Cognome della paersona...).
    I dati vengono presi da una tabella dove nella riga 3 ci sono le parole da trovare e nell'ultima riga le parole da inderire.

    codice:
    Sub CreaWord()
    Dim CustRow, CustCol, LastRow, TemplRow As Long
    Dim DocLoc, TagName, TagValue, TemplName, FileName As String
    Dim WordDoc, WordApp As Object
    Dim WordContent As Word.Range
    With Foglio4
      
      If .Range("B9").Value = Empty Then
        MsgBox "Selezionare un Template Corretto"
        .Range("F2").Select
        Exit Sub
      End If
      TemplRow = .Range("B10").Value 'Set Template Row
      TemplName = .Range("B9").Value 'Set Template Name
      DocLoc = Foglio8.Range("F" & TemplRow).Value 'Word Document Filename
      
      'Open Word Template
      On Error Resume Next 'If Word is already running
      Set WordApp = GetObject("Word.Application")
      If Err.Number <> 0 Then
        'Launch a new instance of Word
        Err.Clear
        'On Error GoTo Error_Handler
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = True 'Make the application visible to the user
      End If
       
      CustRow = .Range("E9999").End(xlUp).Row  'Determine Last Row in Table
      
      Set WordDoc = WordApp.Documents.Open(FileName:=DocLoc, ReadOnly:=False) 'Open Template
      For CustCol = 2 To 20 'Move Through 18 Columns
        TagName = .Cells(3, CustCol).Value 'Tag Name
        TagValue = .Cells(CustRow, CustCol).Value 'Tag Value
         With WordDoc.Content.Find
          .Text = TagName
          .Replacement.Text = TagValue
          .Wrap = wdFindContinue
          .Execute Replace:=wdReplaceAll 'Find & Replace all instances
         End With
      Next CustCol
         
      'Save in PDF
      FileName = ThisWorkbook.Path & "\Documenti\" & .Range("B" & CustRow).Value & "_" & .Range("C" & CustRow).Value & ".pdf" 'Create full filename & Path with current workbook location, Last Name & First Name
      WordDoc.ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF
      WordDoc.Close False
      
      WordDoc.PrintOut
      WordDoc.Close
      
      WordApp.Quit
    End With
    End Sub
    All'avvio della Macro mi dà errore la riga:
    codice:
    Dim WordContent As Word.Range
    L'errore segnalato è: "Errore di Compilazione: Tipo definito dall'utente non definito"

    Ho provato a copiare la macro in un altro foglio, adattato i campi per adattare la tabella e lì funziona...

    La macro è inserita in un modulo.
    Grazie in anticipo per l'aiuto

  2. #2
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    6,148
    Sospetto che non hai aggiunto il riferimento alla libreria a Word.
    Devi modificare:
    codice:
    Dim WordContent As Word.Rang
    in:
    codice:
    Dim WordContent As Object

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,431
    Sicuramente Gibra ha colto l'errore più probabile.

    Io aggiungo onsottolineo errori tecnici di sostanza:
    codice:
    Dim CustRow, CustCol, LastRow, TemplRow As Long
    Dim DocLoc, TagName, TagValue, TemplName, FileName As String
    La dichiarazione delle variabili è errata sicuramente... sono tutte Variant a parte l'ultima della prima ariga che è Long e l'ultima della seconda riga che è String... quelli prima... no.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi