PDA

View Full Version : [vba excel] copiare contenuto variabile nella clipboard


john_revelator
26-06-2008, 09:23
Ciao a tutti. Come da titolo avrei la necessità di copiare il contenuto di una variabile all'interno della clipboard. Ho già fatto le mie ricerche in rete e ho trovato suggerito questo codice

Set mydata = New DataObject
mydata.SetText STRINGA
mydata.PutInClipboard

che ho integrato nel mio in questo modo. In pratica ho semplicemente concatenato una serie di indirizzi mail. Ora però vorrei poter accedere a tale variabile. :fagiano:

Sub concatena()
Set mydata = New DataObject
Dim mail As String
mail = ""
For i = 2 To 51
mail = mail & ActiveSheet.Range("c" & i).Value & "; "
Next i
MsgBox (mail)
mydata.SetText mail
mydata.PutInClipboard
End Sub


L'errore mi si presenta in corrispondenza della riga Set mydata = New DataObject ed è "Tipo definito dall'utente non definito".
Premetto che i riferimenti che ho sono i seguenti:

Visual Basic for Applications
Microsoft Excel 10.0 Object Library
Ole Automation
Microsoft Office 10.0 Object Library
Microsoft ActiveX Data Objects 2.8 Library.

Ho anche provato a invertire l'ordine dei riferimenti ma nulla è cambiato.
Grazie per l'attenzione. :)

john_revelator
26-06-2008, 09:36
Per il momento ho aggirato il problema trasformando la sub in una function, eseguendola nella finestra immediata e recuperando così la mia stringa. :)
Mi farebbe comunque piacere capire il perchè dell'errore.

john_revelator
27-06-2008, 14:14
:help:

MarcoGG
29-06-2008, 08:48
Infatti quello è il metodo giusto. :)

Il motivo dell'errore è dovuto al fatto che non hai referenziato la Libreria :
Microsoft Forms 2.0 Object Library
o
Microsoft Forms 1.x Object Library

Se infatti cerchi "PutInClipboard" nel Visualizzatore Oggetti VBA, scoprirai che la classe DataObject che espone quel metodo, appartiene proprio alla Libreria MSForms. ;)

john_revelator
29-06-2008, 12:45
Ciao Marco. Come va?
Grazie per la risposta. Purtroppo se scorro la lista dei riferimenti quello da te indicato non è presente. Utilizzo Office XP. Come posso fare per aggiungerlo?

P.S. Grazie anche per il codice relativo agli orari dei corsi. Non ho ancora trovato il tempo di studiarmelo bene. :)

MarcoGG
29-06-2008, 16:52
Grazie per la risposta. Purtroppo se scorro la lista dei riferimenti quello da te indicato non è presente. Utilizzo Office XP. Come posso fare per aggiungerlo?


Hai provato a fare una ricerca di "PutInClipboard" nel visualizzatore oggetti di VBA ? Se non trovi nulla forse in Office XP ( credo abbia una versione VBA più vecchia del 2003, che uso io ) non si può fare.
A me in Excel 2003 è bastato mettere in un Foglio la tua routine ed è andato a prendersi il riferimento da solo... ;)
Se puoi passa a 2003.

john_revelator
02-07-2008, 14:12
Allora, in ufficio ho ricontrollato con attenzione e la libreria Microsoft Forms è assente. Nel pc di casa è presente. Ho su entrambi i PC la versione XP di Office. Sul computer di casa ho installato questa versione proprio per ragioni di compatibilità con le cose che poi dovrò usare a lavoro. Magari la libreria è il residuo di una precedente installazione di visual basic 6 o di office 2003 che precedentemente utilizzavo.
Comunque avevi ragione (come al solito ;) ), la presenza di tale libreria risolve il problema.
Ciao Marco e grazie come sempre. :)