[Excel/VB] Meerdere cellen kopieren naar klembord

Pagina: 1
Acties:

  • OetZitterd
  • Registratie: December 2005
  • Laatst online: 27-07-2011

OetZitterd

Out of the picture...

Topicstarter
Ik ben met het volgende bezig:

Een persoon kan in een worksheet een soort van vragenlijst invullen. Wanneer de vragenlijst heeft ingevuld kan hij op een knop drukken waarna alle ingevulde waardes netjes in een soort van 'verhaaltje' worden gezet en dan naar het klembord worden doorgezet. De info op het klembord kan deze persoon dan gebruiken om of een freetext webbased-formulier in te vullen of het te copy-pasten in een mailprogramma.

Nu gaat alles goed maar het kopieren naar het klembord wil om de een of andere reden niet lukken.

Ik heb de volgende codes geprobeerd:

code:
1
2
3
4
5
Sub Copy_to_Clipboard()
Dim MyDataObj As New DataObject
MyDataObj.SetText = SMO_Escalation_Template!C11
MyDataObj.PutInClipboard
End Sub


Deze code op zich wel alleen ik wil graag een reeks cellen kopieren en niet 1 cel. Door een range aan tegeven op als:

code:
1
MyDataObj.SetText = SMO_Escalation_Template!C4:C29


werkt helaas niet. Waarschijnlijk omdat de SetText met enkel losse cellen kan werken. Een oplossing hiervoor zou zijn een verborgen cel aan te maken en dan eerst die reeks cellen(range) te kopieren naar één cel en die dan met de bovenstaande functie te kopieren naar het klembord.

Ik heb ook nog een andere oplossing geprobeerd maar die geeft error 400 (iets met display form):
code:
1
2
3
4
5
Sub Second_Copy_to_Clipboard()
    Dim sourceRange As Range
    Set sourceRange = Sheets("SMO_Escalation_Template").Rows("C4:I29")
    sourceRange.PutInClipboard
End Sub


Ik heb al meerdere websites afgezocht maar ze praten of over 1 cel naar het klembord kopieren of over meerdere cellen kopieren naar een andere sheet (wat ik dus niet wil). Ook hier op GOT kan ik niets echt iets vinden over het gebruik van het klembord op deze manier. Wellicht hebben jullie een heldere kijk op dit 'probleem'

Gebruik van Access is helaas niet mogelijk, er moet gebruik worden gemaakt van Excel.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Je tekst wordt waarschijnlijk te lang voor 1 cel. Omweg als pseudocode: tijdelijke variabele x; x = huidig clipboard; x = x & newline & C11; x naar clipboard.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • OetZitterd
  • Registratie: December 2005
  • Laatst online: 27-07-2011

OetZitterd

Out of the picture...

Topicstarter
F_J_K schreef op dinsdag 03 oktober 2006 @ 14:18:
Je tekst wordt waarschijnlijk te lang voor 1 cel. Omweg als pseudocode: tijdelijke variabele x; x = huidig clipboard; x = x & newline & C11; x naar clipboard.
Dit is dus een workaround om alles 1 één cel te proppen. Geen oplossing om een range te kopieren naar het klembord?

Verwijderd

werkt Sheets("SMO_Escalation_Template").Range("C4:I29").copy niet in de context die je schetst in de TS?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

OetZitterd schreef op dinsdag 03 oktober 2006 @ 14:33:
Dit is dus een workaround om alles 1 één cel te proppen. Geen oplossing om een range te kopieren naar het klembord?
Klopt. Dat kan je trouwens natuuurlijk omvormen tot een functie die de hele range kopieert door middels een loopje. Dan heb je meer zeggenschap over de opmaak / structuur dan wanneer je gewoon kopieert (zoals hierboven terecht wordt voorgesteld).

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • OetZitterd
  • Registratie: December 2005
  • Laatst online: 27-07-2011

OetZitterd

Out of the picture...

Topicstarter
Ik heb nu het volgende:

code:
1
2
3
4
5
6
Sub Second_Copy_to_Clipboard()
    Dim sourceRange As Range
    Dim destrange As Range
    Set sourceRange = Sheets("SMO_Escalation_Template").Range("C4:I29").Copy
    sourceRange.PutInClipboard
End Sub


Je ziet Excel de juiste cellen/range selecteren and gekopieerd worden maar dan krijg ik gelijk een Melding: Object Required.

edit:


Als ik een paste doe zie ik nu wel de waardes maar blijf wel die melding houden.

[ Voor 12% gewijzigd door OetZitterd op 03-10-2006 15:40 ]


Verwijderd

code:
1
2
3
Sub Second_Copy_to_Clipboard()
    Sheets("SMO_Escalation_Template").Range("C4:I29").Copy
End Sub

  • OetZitterd
  • Registratie: December 2005
  • Laatst online: 27-07-2011

OetZitterd

Out of the picture...

Topicstarter
Verwijderd schreef op dinsdag 03 oktober 2006 @ 17:18:
code:
1
2
3
Sub Second_Copy_to_Clipboard()
    Sheets("SMO_Escalation_Template").Range("C4:I29").Copy
End Sub
Thanks!!! Had dit net zelf geprobeerd en toen werkte het :D

Ondertussen had ik deze nog gemaakt. (gooi maar onder het kopje: viescode.com)

code:
1
2
3
4
5
6
7
8
9
10
Sub Second_Copy_to_Clipboard()
    
    On Error GoTo Exit_SomeName

    Dim sourceRange As Range
    Set sourceRange = Sheets("SMO_Escalation_Template").Range("C4:I29").Copy
   

Exit_SomeName:
End Sub


maaruh, problem solved! _/-\o_

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Waarom doe je nu [code]Sub Second_Copy_to_Clipboard()
Dim sourceRange As Range
Set sourceRange = Sub[/code]
Wat doet dat volgens jou?[/didactisch]

Laat maar gewoon weg :Y)

* F_J_K slaat zichzelf wegens slecht lezen

[ Voor 15% gewijzigd door F_J_K op 03-10-2006 17:52 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)

Pagina: 1