Condividi:        

Selezione multipla da Word a Excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Selezione multipla da Word a Excel

Postdi giulio_radar » 10/04/15 09:54

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
:)
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48

Sponsor
 

Re: Selezione multipla da Word a Excel

Postdi Anthony47 » 11/04/15 11:05

Confermi che il codice che hai riportato appartiene tutto e completamente alla stessa macro? Perche' mi sembra strano che un po' usi xlapp.Worksheets("LEX") e nella riga dopo usi xlsheet [che inizialmente e' stato impostato come Set xlsheet = xlbook.Worksheets("LEX")]

Comunque per cominciare prova con
Codice: Seleziona tutto
xlsheet.Range(xlsheet.Cells(x, 1), xlsheet.Cells(y, 9)).Select


Tuttavia questa istruzione non ti fa una selezione multipla, ma la selezione di una unica area che comincia in Cells(x,1) e finisce in Cells(y,9); e' questo che intendi?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Selezione multipla da Word a Excel

Postdi giulio_radar » 13/04/15 11:08

Ciao,

Anzitutto, ti sono grato per avermi risposto. Dunque in realtà è una parte di una macro più grande. La macro in word, di cui ho incollato solo un pezzo, è molto lunga, ed ho pensato che non servisse.
Comunque si, ho proprio bisogno che la macro peschi un intervallo (dinamico) preciso. Ovvero una serie di tabelle che vengono prelevate da excel (in cui a sua volta c'è una macro precedente che formatta e prepara, diciamo, i valori) e devono essere incollate a artire da un segnalibro. Cerco di spiegarmi al meglio: ci sono n tabelle distanziate da un intervallo preciso e prestabilito. Da word leggo il valore di una cella che diventa il contatore. A questo punto so quante iterazioni debbo fare e quante tabella copiare.

Venendo alla tua domanda, forse non sono in grado di rispondere in modo esaustivo. Ho letto un po' di guide e tutorial e ho capito che per far funzionare excel da word bisogna utilizzare dei comandi specifici in cui si "imitano" i comandi di excel.
Quindi ho (forse erroneamente) impostato le premesse utilizzando i comandi che mi indichi. Sulla macro già scritta (e che funziona senza intoppi) e che non allego (ma se me lo chiedi lo posso fare magari in allegato), ho fatto la stessa cosa e a questo punto mi viene il dubbio di aver sbagliato qualcosa lì.

Attendo
Grazie ancora!
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48

Re: Selezione multipla da Word a Excel

Postdi Anthony47 » 13/04/15 20:36

E' fondamentale sapere se le istruzioni appartengono alla stessa macro, e che cioe' che tra le prime istruzioni che hai elencato (in particolare mi interessa Dim x, y, z As Integer) e quella che va in errore (xlsheet.Range(Cells(x, 1), Cells(y, 9)).Select) ci sono righe contenenti End Sub o End Function.

Comunque potrebbe essere utile pubblicare l' intero codice.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Selezione multipla da Word a Excel

Postdi giulio_radar » 14/04/15 09:44

Ciao,

non ci sono comandi del tipo end function o end sub, questo l'ho controllato. La macro comunque arriva fino alla riga incriminata e tutte le operazioni precedenti (parecchie) le fa e bene. Però chissà con questa cosa di dover "simulare" le funzioni di excel in word forse mi son perso qualcosa per strada.
TI allego il codice intero qui: https://www.dropbox.com/sh/sz7zuje3yv38 ... eIk-a?dl=0.

Non è niente di trascendentale ma è parecchio lungo.
Grazie
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48

Re: Selezione multipla da Word a Excel

Postdi Anthony47 » 14/04/15 23:56

E' parecchio lungo anche da seguire, quindi porta pazienza.
Non e' che potresti condividere anche un esempio di file word e file excel (cosi' invece di seguire "a occhio sul listato", e magari sfugge una piccola virgoletta, si segue l' esecuzione e si arriva prima)?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Selezione multipla da Word a Excel

Postdi giulio_radar » 15/04/15 12:28

Se vuoi ti posso allegare i file che si rimbalzano le operazioni. Però sono file dello studio dove lavoro e ti pregherei se potessi, una volta finito di darci un'occhio, cancellarli. Dici che possiamo farcela? Grazie
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48

Re: Selezione multipla da Word a Excel

Postdi Anthony47 » 15/04/15 14:35

I link che pubblicherai saranno visibili a tutti gli utenti, forse dovresti creare un sottoinsieme di test...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Selezione multipla da Word a Excel

Postdi giulio_radar » 22/04/15 11:32

Chiedo scusa, nessuno sa darmi una mano?
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48


Torna a Applicazioni Office Windows


Topic correlati a "Selezione multipla da Word a Excel":


Chi c’è in linea

Visitano il forum: Ricky0185 e 39 ospiti