Salve a tutti,
sto compilando una macro su un documento di Word, la quale deve aprire un file Excel e prelevare una serie di tabelle ed incollarle con una serie di iterazioni (il cui valore è prelevato da una casella del file Excel che viene aperto) partendo da un segnalibro. Il problema nasce dal fatto che devo fare una selezione con parametri "dinamici" in cui il valore delle celle da prelevare viene incrementato ad ogni ciclo. In genere quando eseguo queste operazioni su Excel, utilizzo il comando cells, in cui sostituisco una variabile al valore di riga/colonna che mi serve spostare (in termini di valore).
Il codice si pianta proprio sull'istruzione di selezione multipla. Ho provato a cercare in diversi modi di aggirare il problema e temo fortemente che vi sia un errore di sintassi o di qualche proprietà che ignoro.
Inserisco lo stralcio di codice "incriminato":
'----INSERIMENTO TABELLE ATTENUAZIONE DPI
'----Partendo dal segnalibro Calc_DPI incollo le tabelle di attenuazione
Dim n_iter As Integer
Dim x, y, z As Integer
x = 29
y = 38
'----mi posiziono sul segnalibro
ActiveDocument.Bookmarks("Calc_DPI").Select
'----lancio l'applicazione di apertura del file Calcolo_LEX
Set xlbook = xlapp.Workbooks.Open("Z:\_COMUNE\RUMORE\Calcolo_LEX.xlsm")
xlapp.Worksheets("LEX").Activate
Set xlsheet = xlbook.Worksheets("LEX")
'----prelevo il valore delle iterazioni
xlsheet.Cells(5, 2).Select
'----e lo assegno al contatore n_iter
n_iter = xlsheet.Cells(5, 2).Value
'----a questo punto so quante iterazioni e quindi quante
'----tabelle sono presenti (ce ne sono tante quante il valore di nr!)
'----inserisco una condizione a procedere con un if
'----se nr è = 0 allora salta il ciclo FOR
If n_iter = 0 Then GoTo fine_ciclo_dpi Else
For i = 1 To n_iter
xlapp.Worksheets("LEX").Activate
'----qui il compilatore si incazza!! non riesco a fargli passare un comando di
'----scelta multipla per prendere su una serie di celle da incollare
xlsheet.Range(Cells(x, 1), Cells(y, 9)).Select
Selection.Copy
Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
x = x + 14
y = y + 14
Next i
fine_ciclo_dpi:
Il comando è: xlsheet.Range(Cells(x, 1), Cells(y, 9)).Select
L'errore restituito è: "Errore di conmpilazione: Impossibile trovare il progetto o la libreria".
Ho anche provato ad utilizzare una sintassi diversa con il risultato di un errore diverso:
xlsheet.Cells(xlsheet.Cells(x, 1), xlsheet.Cells(y, 9)).Select
L'errore cambia e diviene: "Errore di run-time 4605: Il metodo o la proprietà non è disponibile perchè l'oggetto o parte di esso non fa riferimento ad una tabella.
Sono piantato definitivamente e non saprei come aggirare questo ostacolo gliene sarei grato. Mi accontento anche di un metodo alternativo che mi permetta di iterare la copia delle tabelle.
Se qualcuno sa darmi una dritta gliene sarei grato.
Grazie a tutti