Ho sviluppato una macro con Excel 365 VBA per Mac attraverso la quale copio delle tabelle su un file word e devo incollare due grafici in due posizioni distinte ed individuate nel documento di Word attraverso due Segnalibri ("Bookmarks").
Nel momento in cui faccio l'operazione Incolla da Excel VBA sul documento Word il sistema si blocca per qualche minuto e non esegue il comando richiesto.
Allego il listato in VBA, potete darmi una mano a capire dove sbaglio?
Nell'estratto del listato che allego il segnalibro su Word si chiama "Graficop2" ed il grafico di Excel che vorrei copiare su Word si chiama "Grafico1".
Grazie
1 Dim Apriword As Object
2 Dim Mydoc As Object
3 Dim Tabella1 As Table
4 On Error Resume Next
'Apro l'istanza Word
5 Set Apriword = GetObject(, "Word.Application") 'gives error 429 if Word is not open
5.1 If Err = 429 Then
5.2 Set Apriword = CreateObject("Word.Application") 'creates a Word application
5.3 Err.Clear
5.4 End If
'Definisco le variabili per il salvataggio del file Word
6 periodoini = Day(Worksheets("Maschera").Cells(3, "C")) & "-" & Month(Worksheets("Maschera").Cells(3, "C")) & "-" & _ Year(Worksheets("Maschera").Cells(3, "C"))
7 periodofine = Day(Worksheets("Maschera").Cells(3, "D")) & "-" & Month(Worksheets("Maschera").Cells(3, "D")) & _
"-" & Year(Worksheets("Maschera").Cells(3, "D"))
'Apro il documento Word
8 With Apriword
9 .Visible = True
'Apro il documento Word Master
10 .Documents.Open FileName:=Percorso & "Analisi di gestione/" & ragione & "/Caso di studio - master EE.docx"
'Salvo il documento Word con nome in modo da compilarlo lasciando il documento Master disponibile per i successivi cicli
11 strfile = testodir & "/" & ragione & "/Elaborazione dal " & periodoini & " al " & periodofine & ".docx"
12 .ActiveDocument.SaveAs FileName:=strfile
'Attivo la procedura di copia ed incolla del grafico da Excel a Word
13 Application.EnableEvents = False
14 .Selection.GoTo what:=wdGoToBookmark, Name:="Graficop2"
15 .ActiveDocument.Bookmarks("Graficop2").Select
16 Worksheets("Maschera").ChartObjects("Grafico 1").Activate
17 ActiveChart.PlotArea.Select
18 ActiveChart.ChartArea.Copy
19 Worksheets("Maschera").ChartObjects("Grafico 1").CopyPicture
20 .Selection.GoTo what:=wdGoToBookmark, Name:="Graficop2"
21 .ActiveDocument.Bookmarks("Graficop2").Select
22 .ActiveDocument.Selection.Range.Paste
23 ActiveDocument.Save 'As Filename:=strfile
24 .ActiveDocument.Close
25 'chiudere word per le prossime analisi
26 .Quit wdDoNotSaveChanges
27 End with
28 Set Mydoc = Nothing
29 Set Apriword = Nothing
Ho provato anche a cambiare le dichiarazioni iniziali ponendo:
Dim Apriword as Word.Application
Dim Mydoc as Word.Document.Application
ma a quel punto il sistema va in crash nel momento in cui deve eseguire l'istruzione CreateObject.