Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 9 van 9

Onderwerp: Macro gemaakt in Excel2016 werkt niet in Excel365

  1. #1
    Junior Member
    Geregistreerd
    28 augustus 2006
    Vraag is opgelost

    Macro gemaakt in Excel2016 werkt niet in Excel365

    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

  2. #2
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    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
        '
        ' NAV_reeks_pipe Macro
        '
        ' Tevens hierboven: [menu]extra/Verwijzingen...
        ' verwijzing aanvinken: "Microsoft Forms 2.0 Object Library"
        '
        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()
        '
        ' NAV_reeks_pipe Macro
        '
        ' Tevens hierboven: [menu]extra/Verwijzingen...
        ' verwijzing aanvinken: "Microsoft Forms 2.0 Object Library"
        '
        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 aangepast door edmoor : 19 augustus 2020 om 23:35
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  3. #3
    Junior Member
    Geregistreerd
    28 augustus 2006
    Bedankt alvast, ik ga er morgen naar kijken.

  4. #4
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Vrijdag dus pas?
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  5. #5
    Junior Member
    Geregistreerd
    28 augustus 2006
    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

  6. #6
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    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()
        '
        ' NAV_reeks_pipe Macro
        '
        ' Tevens hierboven: [menu]extra/Verwijzingen...
        ' verwijzing aanvinken: "Microsoft Forms 2.0 Object Library"
        '
        
        If TypeName(Selection) <> "Range" Then Exit Sub
        With New MSForms.DataObject
            .SetText Join(Application.Transpose(Selection), "|")
            .PutInClipboard
        End With
        '
    End Sub
    Beide werken zonder enig probleem.
    Laatst aangepast door edmoor : 10 september 2020 om 08:16
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  7. #7
    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.
    Groetjes,

    Jan Karel Pieterse
    Excel MVP jkp-ads.com

  8. #8
    Junior Member
    Geregistreerd
    28 augustus 2006
    Edmoor en Jan Karel Pieterse beide bedankt voor de suggesties, ik zal deze op kantoor uitproberen, want hier thuis werk het sowieso.

    Gr. Hans

  9. #9
    Junior Member
    Geregistreerd
    28 augustus 2006
    Quote Origineel gepost door jkpieterse Bekijk Bericht
    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

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren