• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Data onder muisknop hangen.

Status
Niet open voor verdere reacties.

MajorrTom

Gebruiker
Lid geworden
9 jul 2016
Berichten
19
Ik zit met het volgende probleem, waar ik nog geen oplossing voor heb kunnen vinden:

Ik werk met bestanden voor lasersnijmachines waarin data staat die nodig zijn voor ons erp-systeem.
Deze data bevat onder meer welk soort materiaal, hoe dik, de x-/y-maat en snijtijd.

Dit bestand lees ik in excel binnen en laat dan na nog het e.e.a. berekenen en daarna d.m.v. een msgbox een lijstje op het scherm komen dat we dan (helaas nu nog) over moeten schrijven.

Nu wil ik die gegevens onder mijn muis hangen, zoals je met copy/paste zou doen, zodat ik die gegevens in mijn tekening kan plaatsen (alsof ik het in een kladblok plaats).

Ik had al iets geprobeerd wat redelijk, maar niet naar tevredenheid werkt, waarbij ik een code als SendKeys "^C" invoegde.

Helaas pakt hij dan de tekst van de msgbox (ipv een opsomming van tekst) en komt de tekst er dan ongeveer als volgt uit te zien:

--------------------
titel msgbox
--------------------
Materiaal
S420

Dikte
5mm

Oppervlakte
0,0123

Runtime
0,034
--------------------

De tekst moet echter zonder de titel en "----" (anders kost het opschonen weer teveel tijd) onder mijn muisknop zitten om te kunnen plakken.

Ik hoop dat iemand een goede oplossing weet om data onder je muisknop te hangen die je dan met paste weer kunt plaatsen.
 
Laatst bewerkt:
Het bestand zelf kan ik nu niet plaatsen, want het staat op mijn pc op mijn werk, maar de code ziet er ongeveer zo uit:

Code:
Sub Macro1()
Tekst = "Materiaal:" & vbCrLf & Sheets("Blad2").Cells(2, 2) & vbCrLf & vbCrLf & "Dikte:" & vbCrLf & Sheets("Blad2").Cells(3, 2) & "mm"
SendKeys "^c"
MsgBox Tekst
End Sub

In Kolom 2 rij 2 en 3 staan de materiaalsoort en de dikte (en de andere gegevens eronder, maar is niet van toepassing op de uitleg).

De tekst van de msgbox wordt nu blijkbaar in het klembord geplaatst.
Wanneer ik een kladblok open en m.b.v. ctrl-v plak, dan komt de tekst van msgbox als volgt in mijn kladblok:

---------------------------
Microsoft Excel
---------------------------
Materiaal:
S420

Dikte:
4mm
---------------------------
OK
---------------------------

Ik wil echter alleen het volgende zien:

Materiaal:
S420

Dikte:
4mm


Waarom krijg ik de gewone tekst niet in mijn klembord, maar de tekst van de msgbox wel?
 
Laatst bewerkt:
Waarom krijg ik de gewone tekst niet in mijn klembord, maar de tekst van de msgbox wel?

Dat is de standaard werking van de CTRL-C toets. Als je in welk product dan ook een Windows melding krijgt kan je de tekst in dat vensterje over het algemeen niet selecteren en kopieren. De CTRL-C toets kopieert dan alle tekst in dat venstertje, dus inclusief de titelbalk en de tekst op de knoppen.
 
Zelf met code de tekst in het windows clipboard zetten (let op dat je geen clipboardmanagers hebt zoals ditto, arsclip, clipx etc.)
Code:
Sub Macro1()
    Tekst = "Materiaal:" & vbCrLf & Sheets("Blad2").Cells(2, 2) & vbCrLf & vbCrLf & "Dikte:" & vbCrLf & Sheets("Blad2").Cells(3, 2) & "mm"
[COLOR="#FF0000"]    With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText Tekst
        .PutInClipboard
    End With
[/COLOR]    MsgBox Tekst
End Sub
 
Laatst bewerkt:
Hoi,
Als ik de vraag goed heb begrepen, zou dit het moeten doen:
Zie vbtje

Dit is precies wat ik zoek.

Alleen kan ik het niet zien als een makro dus ook niet bewerken.
Ik kan nu wel opgeven welke gegevens het nu moet bevatten,
maar dat gaat nog een aantal keren veranderen, omdat er meer toepassingen bij zullen komen.

Hoe kan ik dit bewerken, of zelf aanmaken?
 
Zelf met code de tekst in het windows clipboard zetten (let op dat je geen clipboardmanagers hebt zoals ditto, arsclip, clipx etc.)
Code:
Sub Macro1()
    Tekst = "Materiaal:" & vbCrLf & Sheets("Blad2").Cells(2, 2) & vbCrLf & vbCrLf & "Dikte:" & vbCrLf & Sheets("Blad2").Cells(3, 2) & "mm"
[COLOR="#FF0000"]    With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText Tekst
        .PutInClipboard
    End With
[/COLOR]    MsgBox Tekst
End Sub

Deze oplossing heb ik ook voorbij zien komen, maar ik kreeg Objecten niet aan de praat.
Daarnaast moet ik dit excelbestand op meerdere pc's kunnen zetten, daarom liever een excel zonder aanpassingen buitenom.
 
Dat is de standaard werking van de CTRL-C toets. Als je in welk product dan ook een Windows melding krijgt kan je de tekst in dat vensterje over het algemeen niet selecteren en kopieren. De CTRL-C toets kopieert dan alle tekst in dat venstertje, dus inclusief de titelbalk en de tekst op de knoppen.

Dat had ik zelf ook begrepen.
Maar de vraag was hoe ik een string op die manier kon kopiëren (CTRL-C en later dan CTRL-V).
 
Deze oplossing heb ik ook voorbij zien komen, maar ik kreeg Objecten niet aan de praat.
Daarnaast moet ik dit excelbestand op meerdere pc's kunnen zetten, daarom liever een excel zonder aanpassingen buitenom.

Toch zal het langs die weg moeten. Gebruik die eens op deze manier:
Code:
Sub Macro1()
    Tekst = "Materiaal:" & vbCrLf & _
            Sheets("Blad2").Cells(2, 2) & _
            vbCrLf & vbCrLf & "Dikte:" & _
            vbCrLf & Sheets("Blad2").Cells(3, 2) & "mm"
            
    With New MSForms.DataObject
        .SetText Tekst
        .PutInClipboard
    End With
End Sub

Daarbij moet je dan wel een verwijzing doen in Extra/Verwijzingen naar het Microsoft Forms Object 2.0:
MFO20.jpg
 
Beste Tom,
Je moet eens in de VBA code kijken (ALT + F11)
Heb je een represantief vbbestandje?
Dan pas ik het wel aan.
 
Ik zie jouw bijdrage net pas.
Dat werkt inderdaad ook :)
 
Als je je bijdrage bedoelt, ja :)
 
Toch zal het langs die weg moeten. Gebruik die eens op deze manier:
Code:
Sub Macro1()
    Tekst = "Materiaal:" & vbCrLf & _
            Sheets("Blad2").Cells(2, 2) & _
            vbCrLf & vbCrLf & "Dikte:" & _
            vbCrLf & Sheets("Blad2").Cells(3, 2) & "mm"
            
    With New MSForms.DataObject
        .SetText Tekst
        .PutInClipboard
    End With
End Sub

Daarbij moet je dan wel een verwijzing doen in Extra/Verwijzingen naar het Microsoft Forms Object 2.0:
Bekijk bijlage 274083

Dit probeer ik juist te voorkomen.
Enerzijds omdat het misschien over een paar jaar (bijvoorbeeld) op een andere pc gezet moet worden en ik of een ander dat dan vergeten is.

Maar anderzijds omdat het ook zonder kan zoals gast0660 dat heeft gedaan
(of het moet blijken dat het wel via Objecten gedaan is en ik dat thuis gewoon wel aan heb staan).
 
Dat is het opgelost toch?
 
Beste Tom,
Je moet eens in de VBA code kijken (ALT + F11)
Heb je een represantief vbbestandje?
Dan pas ik het wel aan.

Vreemd genoeg staan er geen makro's in deze excel.

Het enige wat ik kan zien is de (opmaak) Userform1.
Ik zie ook nergens waar de geselecteerde cellen staan en de extra tekst (Materiaal, Dikte en mm).
 
Die macro zit in de Userform en kan je eenvoudig aanpassen met de info uit mijn voorbeeld of die van alphamax. En anders inderdaad eerst maar even je bestandje plaatsen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan