Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 16 van 16

Onderwerp: Verwijderen per foto uit excelbestand mbv macro

  1. #1
    Vraag is opgelost

    Verwijderen per foto uit excelbestand mbv macro

    Ik heb een klein probleem, ik wil een aantal foto's verwijderen uit een excel-bestand,
    maar dat wil ik per foto doen. Ik heb een macro voor alle foto's, maar ik moet alleen de foto's
    per stuk wijzigen (Ze staan op de volgende cellen G8, G23, N8, N23).
    Ik wil dus 4 knoppen maken of een combobox met een macro om ze per stuk te verwijderen.

    Mijn vraag is of iemand een idee heeft hoe ik de foto's per stuk kan wijzigen?

    Code:
    ' Alle foto's verwijderen
    For Each sh In ActiveSheet.Shapes
            If sh.Type = msoPicture Then sh.Delete
    Next

    Alvast dank voor het meedenken

  2. #2
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Je kan met:
    Code:
    sh.TopLeftCell.Address
    controleren welke cel het om gaat.
    Of kijk naar de naam van de shape (sh.Name)

    Of direct op naam:
    Code:
    ActiveSheet.Pictures("Afbeelding 1").Delete
    Laatst aangepast door edmoor : 13 maart 2019 om 10:37
    "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
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Quote Origineel gepost door Offthefield Bekijk Bericht
    Ze staan op de volgende cellen G8, G23, N8, N23
    Foto's kun je niet koppelen of terugvinden op celniveau. Wel kun je de positie van de foto vergelijken met die van de cel (Left, Top) en op basis daarvan kijken of je een foto weg kan doen of niet.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  4. #4
    Edmoor,

    Bedankt voor de snelle reactie, alleen ik snap niet wat je bedoeld, de cellen zijn nl. bekend waar de foto's staan G8, G23, N8, N23

    De bedoeling is dat de bestaande foto, die in bv. cel G8 staat wordt verwijderd, want anders krijg je op den duur
    een x aantal foto's op elkaar, dit zijn nl. foto's die aan een bepaald nummer gelinkt staan en dus iedere keer
    een andere foto opleveren.

  5. #5
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Foto's staan niet in een cel maar op het werkblad, zoals Octafish ook al zei.
    "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

  6. #6
    Mijn kennis van VBA is zeer beperkt, in de afgelopen jaren heb ik door jullie heel veel macro's kunnen
    maken (ook snap ik ze niet) en zelf een beetje kunnen aanpassen

    Nu begin ik een beetje te begrijpen, dat de foto die geplaatst moet worden in cel B8, bij het begin van de macro nog niet bekend is,
    maar ik daar moet je met shape achter zien te komen?

    Is het mogelijke om in de kleine macro ' Foto's verwijderen' de bepaalde foto aan te geven?, alleen ik snap nog steeds niet hoe?


    Ik heb nu nl. 4 buttons die verwijzen naar de 4 plaatsen op het werkblad

    Hieronder de volledige macro van de button!

    Code:
    Private Sub Plaatsen1()
    Sheets("PRINT1").Select
    
    ' Foto's verwijderen
    For Each sh In ActiveSheet.Shapes
            If sh.Type = msoPicture Then sh.Delete
    Next
    
    On Error Resume Next
    [O1] = C_Dir.Value
    myDir = [O1]
    '
    With Sheets("PRINT1").Pictures.Insert(myDir & T_13.Text)
      .ShapeRange.LockAspectRatio = msoFalse
      .Top = Sheets("PRINT1").[B8].Top
      .Left = Sheets("PRINT1").[B8].Left
      .Height = 213
      .Width = 196
    End With
    
    ' Verwijderen van text
    '
        Range("G8:M21").Select
        Selection.ClearContents
        Range("G8").Select
    '
    ' geen .Text maar .Value !!!
    Range("G8").Select
    ''ActiveCell.Offset(0, 0).Value = LB01.Caption
    ActiveCell.Offset(0, 0).Value = T_02.Text
    ActiveCell.Offset(2, 0).Value = T_03.Text
    ActiveCell.Offset(3, 0).Value = T_04.Text
    ActiveCell.Offset(4, 0).Value = T_05.Text
    ActiveCell.Offset(5, 0).Value = T_06.Text
    ActiveCell.Offset(6, 0).Value = T_07.Text
    ''
    ActiveCell.Offset(9, 0).Value = T_13.Text
    ''
    ActiveCell.Offset(10, 0).Value = T_08.Text
    ActiveCell.Offset(11, 0).Value = T_09.Text
    ActiveCell.Offset(12, 0).Value = T_10.Text
    
    End Sub

  7. #7
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Quote Origineel gepost door Offthefield Bekijk Bericht
    Nu begin ik een beetje te begrijpen, dat de foto die geplaatst moet worden in cel B8, bij het begin van de macro nog niet bekend is,
    Goed lezen is ook een kunst: zowel edmoor als ik hebben het al gezegd: een foto staat niet in een cel. Je kunt een foto hooguit boven een cel hangen. Er zijn een paar dingen die je kan doen:
    1. lees in je macro de positie van cel en foto uit, en vergelijk ze met elkaar. Test bijvoorbeeld eens met deze macro:
    Code:
    Sub FotoPlaats()
    Dim sh As Shape
        MsgBox Range("G8").Left & vbLf & Range("C4").Top
        For Each sh In ActiveSheet.Shapes
            If sh.Type = msoPicture Then MsgBox sh.Left & vbLf & sh.Top
        Next
    End Sub
    Dat werkt, mist alle foto's perfect aanlijnen op de cel. Dat kan op een makkelijke manier, als je de foto's met de <Alt> toets ingedrukt hebt neergezet; dan lijnen ze op de celrand links en boven. maar het blijft tricky, want als de posities niet gelijk zijn, gaat het fout.

    Optie 2:
    Zet in de eigenschap <Titel> van je foto's de 'cel' waaraan je ze 'koppelt' Gebruik vervolgens een macro om de celnaam te gebruiken om ze te verwijderen. Krijg je iets als dit:
    Code:
    Sub FotoPlaats()
    Dim sh As Shape
        For Each sh In ActiveSheet.Shapes
            If sh.Type = msoPicture Then If sh.Title = "P28" Then sh.Delete
        Next
    End Sub
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  8. #8
    OctaFish,

    Bedankt voor de reactie, ik ga direct aan de slag

    Top!!!

  9. #9
    OctaFish,

    Ik snap er niets van!, daarom heb ik het programma (klein beetje aangepast), maar in de bijlage gedaan, met enkele foto's
    dan zie je misschien het probleem of je kan het mij misschien uitleggen dat ik het, als leek het begrijp (De uitleg was heel uitgebreid, maar ik heb te weinig
    kennis van VBA om het te snappen)

    Als ik nu een bepaald gegeven selecteer en ik druk op Foto1, verwijdert hij ook Foto2 en Foto3, maar hij hoeft alleen
    Foto1 te verwijderen en Foto2 en Foto3 te laten staan.

    Selecteer je Foto2, dan moet hij alleen Foto2 verwijderen ect.


    Ik hoop dat je me verder kan helpen, alvast hartelijk dank


    Offthefield
    Bijgevoegde bestanden Bijgevoegde bestanden

  10. #10
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Ik zal er vanavond naar kijken.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  11. #11
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    De sub Plaatsen1 moet dus alleen Foto 1 verwijderen.
    Zoals ik in #2 al zei:
    Code:
    'Foto 1 verwijderen
    For Each sh In ActiveSheet.Shapes
        If sh.Type = msoPicture Then
            If sh.TopLeftCell.Address = "$B$8" Then sh.Delete
        End If
    Next
    "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

  12. #12
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Wat wil je precies doen met dat formulier? Ik snap helemaal niets van de werking. Om te beginnen heb je bij elke knop deze actie staan:
    Code:
        For Each sh In ActiveSheet.Shapes
            If sh.Type = msoPicture Then sh.Delete
        Next
    Daarmee gooi je dus echt alle afbeeldingen weg. Als je dat niet wilt
    Quote Origineel gepost door Offthefield Bekijk Bericht
    Als ik nu een bepaald gegeven selecteer en ik druk op Foto1, verwijdert hij ook Foto2 en Foto3, maar hij hoeft alleen Foto1 te verwijderen en Foto2 en Foto3 te laten staan.
    dan doe je dus precies het omgekeerde van wat je wilt! Aan de rest van de procedures en code kan ik inderdaad wel zien dat je nog niet veel kennis van VBA hebt, en een hoop van de code bij elkaar 'gescharreld' hebt zonder blijkbaar goed te weten wat het allemaal doet, maar dat is niet de oorzaak van je probleem dus: dat is de code waarmee je alles verwijdert dus wèl. Overigens is dat stukje lijkt mij niet zo moeilijk om te begrijpen! Iedereen zou toch onderhand wel moeten weten wat de opdracht 'Delete' doet .

    Kortom: je procedures gooien dus eerst alle foto's weg, en zetten vervolgens één foto weer terug, en die ene foto haal je dan ook nog eens uit een teksdtvak waarin je werkuren neerzet. Erg verwarrend allemaal.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  13. #13
    OctaFish, edmoor,

    OctaFish, Klopt wat je zegt, het is nog al onoverzichtelijk.
    Ik had een programma, waar eerst alle foto's in 1x weggehaald moesten worden (in mijn geval 4x),
    en met met nieuwe programma wil ik ze per stuk aanpassen en de oude foto verwijderen, maar ik begreep de aanwijzigingen van jullie niet.

    De macro van edmoor is precies wat ik zocht.

    Ik wil jullie hartelijk danken voor de snelle en goede hulp, ik kan weer verder met het aanpassen van mijn programma.

    Ik vind het een TOP forum waar ik al heel veel programma's door heb kunnen maken en wijzigen

  14. #14
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Hou bij mijn voorbeeld wel in gedachten wat Octafish erover zei.
    De juiste positie van de foto is daarbij heel erg bepalend.
    "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

  15. #15
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Persoonlijk zou ik inderdaad een methode gebruiken waarbij ik ofwel de eigenschap Title van de foto vul, ofwel de eigenschap AlternativeText. Beiden zijn simpel te vullen, en je bent totaal niet meer afhankelijk van de juiste koppeling met een cel. Bovendien kun je het hele proces van inlezen, markeren en plaatsen op die manier ook beter sturen.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  16. #16
    Edmoor, OctaFish,

    De uitleg is voor mij niet te snappen (ligt aan mij), maar het resultaat dat ik voor ogen had is gelukt en ziet er gelikt uit,
    dus missie geslaagd!!, nogmaals hartelijk dank!! top!!

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 en business

Partners
Sponsoren