• 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.

Macro gemaakt in Excel2016 werkt niet in Excel365

Status
Niet open voor verdere reacties.

HansTrrr

Gebruiker
Lid geworden
28 aug 2006
Berichten
19
Hallo,

Onderstaande macro werkt wel in Excel 2016, maar niet in Excel 365.
Deze macro kopieert naar het clipboard, een selectie naar een string met "|"als scheidingsteken.

Bijvoorbeeld:
Nederland
Duitsland
Frankrijk
Engeland

Nederland|Duitsland|Frankrijk|Engeland


-----------------------------------------------------------------
Sub NAV_reeks_pipe()
'
' NAV_reeks_pipe Macro
'
' Tevens hierboven: [menu]extra/Verwijzingen...
' verwijzing aanvinken: "Microsoft Forms 2.0 Object Library"
'

If TypeName(Selection) <> "Range" Then Exit Sub
For Each cell In Selection

Reeks = Reeks & ActiveCell.Value
Reeks = Reeks & "|"
ActiveCell.Offset(1, 0).Range("A1").Activate

Next cell

Reeks = Left(Reeks, (Len(Reeks) - 1))

With New MSForms.DataObject
.SetText Reeks
.PutInClipboard
End With
'
End Sub
------------------------------------------------------------------

Wat zou ik kunnen aanpassen om het in Excel 365 werkend te krijgen?

Met vriendelijke groeten,
Hans
 
Wellicht handig om erbij te vertellen wat er dan niet werkt.
Krijg je een foutmelding?
Gebeurt er gewoon niks?

Zet tevens je code in codetags.
Zie de link in mijn handtekening.

Daarnaast zou ik het zo doen:
Code:
Sub NAV_reeks_pipe()
    Dim Sel() As String
[COLOR="#008000"]    '
    ' NAV_reeks_pipe Macro
    '
    ' Tevens hierboven: [menu]extra/Verwijzingen...
    ' verwijzing aanvinken: "Microsoft Forms 2.0 Object Library"
    '[/COLOR]
    If Selection.Count > 1 Then
        For i = 0 To Selection.Count - 1
            ReDim Preserve Sel(i)
            Sel(i) = Selection(i + 1).Value
        Next i
        Range(Selection(1).Address).Select
        
        With New MSForms.DataObject
            .SetText Join(Sel, "|")
            .PutInClipboard
        End With
    End If
End Sub

Als het altijd een aaneengesloten reeks is kan het nog eenvoudiger:
Code:
Sub NAV_reeks_pipe()
[COLOR="#008000"]    '
    ' NAV_reeks_pipe Macro
    '
    ' Tevens hierboven: [menu]extra/Verwijzingen...
    ' verwijzing aanvinken: "Microsoft Forms 2.0 Object Library"
    '[/COLOR]
    If Selection.Count > 1 Then
        With New MSForms.DataObject
            .SetText Join(WorksheetFunction.Transpose(Selection), "|")
            .PutInClipboard
        End With
        Range(Selection(1).Address).Select
    End If
End Sub
 
Laatst bewerkt:
Vrijdag dus pas? ;):cool:
 
Hallo Edmoor,

Ik ben ff niet in de gelegenheid geweest te reageren.
Je hebt gelijk, ik was niet erg duidelijk.

In Excel selecteer ik een aantal cellen en voer dan de macro uit.
Vervolgens wordt de selectie opgeheven en zou de uitkomst in het clipboard staan om vervolgens elders te kunnen plakken.

Thuis werk ik op een desktop PC lokaal met Excel 2016, daar gaat goed.
Op kantoor met een laptop via Remote desktop met Excel 365, daar zie ik slechts twee vierkantjes wanneer ik heb geplakt.
Echter heb ik zojuist vanuit huis (desktop PC) ingelogd via Remote desktop in de kantoor omgeving en dan gaat het ook goed

Ben benieuwd of je hier iets mee kan.

Groeten, Hans

Code:
Sub NAV_reeks_pipe()
'
' NAV_reeks_pipe Macro
'
' Tevens hierboven: [menu]extra/Verwijzingen...
' verwijzing aanvinken: "Microsoft Forms 2.0 Object Library"
'

If TypeName(Selection) <> "Range" Then Exit Sub
For Each cell In Selection

Reeks = Reeks & ActiveCell.Value
Reeks = Reeks & "|"
ActiveCell.Offset(1, 0).Range("A1").Activate

Next cell

Reeks = Left(Reeks, (Len(Reeks) - 1))

With New MSForms.DataObject
.SetText Reeks
.PutInClipboard
End With
'
End Sub
 
Waar plak je die gegevens eigenlijk in?
Plaats eens een voorbeeld document met de gegevens die je selecteerd.
Of plak het eens in een Kladblok bestand.
Daarnaast zou ik het zo doen:
Code:
Sub NAV_reeks_pipe()
[COLOR="#008000"]    '
    ' NAV_reeks_pipe Macro
    '
    ' Tevens hierboven: [menu]extra/Verwijzingen...
    ' verwijzing aanvinken: "Microsoft Forms 2.0 Object Library"
    '[/COLOR]
    
    If TypeName(Selection) <> "Range" Then Exit Sub
    With New MSForms.DataObject
        .SetText Join(Application.Transpose(Selection), "|")
        .PutInClipboard
    End With
[COLOR="#008000"]    '[/COLOR]
End Sub
Beide werken zonder enig probleem.
 
Laatst bewerkt:
Dit is het probleem waarbij het DataObject object niet werkt zolang je in Windows ergens een Verkenner venster open hebt. Sluit alle vensters van verkenner (File explorer) en je code werkt.
 
Edmoor en Jan Karel Pieterse beide bedankt voor de suggesties, ik zal deze op kantoor uitproberen, want hier thuis werk het sowieso.

Gr. Hans
 
Dit is het probleem waarbij het DataObject object niet werkt zolang je in Windows ergens een Verkenner venster open hebt. Sluit alle vensters van verkenner (File explorer) en je code werkt.

Hallo jkpieterse,

Je hebt gelijk, ik was echt verbaasd dat het zo simpel was.
Bedankt.

Gr. Hans
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan