In een UserForm / Image een picture invoeren

Status
Niet open voor verdere reacties.

DutchOirs

Gebruiker
Lid geworden
30 sep 2009
Berichten
720
Goedenavond allen,

Zit met een vraagje met een Image in een UserForm.

Wilde graag met VBA:
1 een (basis) picture invoegen in een Image (onder activate)
2 Een picture kiezen met een Dialog Menu ( dat werkt)
3 De naam van de picture geven
4 Picture naam vergelijken (of het de goede is)
5 Picture Printen
6 Picture Verwijderen.

Code:
Option Explicit

Private Sub UserForm_activate()
  Dim NotitieNummer As Integer
  NotitieNummer = 1

  NotitiesImage.Picture = ActiveWorkbook.Worksheets("Blad1").Range("D5") & "Not" & NotitieNummer
End Sub

Private Sub PictInvBut_Click()
  Dim lngCount As Long, NotitieNummer As Integer
'  Application.ScreenUpdating = False            ' tegen flikkeren van beeldscherm
  NotitieNummer = 5
  
  With Application.FileDialog(1)
    .InitialFileName = ActiveWorkbook.Worksheets("Blad1").Range("D5") & "Not" & NotitieNummer & "*"
      If .Show Then
        For lngCount = 1 To .SelectedItems.Count
          NotitiesImage.Picture = LoadPicture(.SelectedItems(lngCount))
        Next lngCount
      End If
  End With
End Sub

Private Sub PictNameBut_Click()

End Sub

Private Sub PictVerwBut_Click()

End Sub

Private Sub StopKnop_Click()
    ' UserForm1.Hide                              Verbergt de Userform, maar maakt var. niet leeg
    Unload Me                                   ' Verbergt Userform en maakt Var. leeg
    Sheets("Blad1").Range("A1").Activate        ' Activeert Blad 1 Cel A1
End Sub

Is er iemand voor wie dit eenvoudig is?

Heb een vb-tje bijgevoegd

Vr. Gr.

Dutch
 

Bijlagen

  • UserForm-Image #1.xls
    37 KB · Weergaven: 32
Laatst bewerkt:
Goedemorgen snb,

Ben een klein stapje verder, nr. 1 & 2 werkende.
Nu bezig met nummer 3

1e In een UserForm in een Image-venster (NotitiesImage), een picture (basis) automatisch invoeren met VBA (Onder activate)
2e In een UserForm in een Image-venster (NotitiesImage), een picture invoeren met een Dialog menu VBA
3e Met VBA de naam van deze picture opvragen
4e Met VBA ALS picture is niet de goede dan verwijderen
5e Met VBA deze picture printen
6e Met VBA deze picture verwijderen

Grtz
 

Bijlagen

  • UserForm-Image #2.xls
    46,5 KB · Weergaven: 24
Bezig met optie, naam van picture opvragen in een Image.

Ben er nog niet uit.

Heb nu:

Code:
Private Sub PictNameBut_Click()                                            
Dim myNotitiesImage As Shape

  Set myNotitiesImage = TestUserForm.NotitiesImage.Shapes(NotitiesImage.Shapes.Count)
  MsgBox (myNotitiesImage.Name)
End Sub

Maar werkt nog niet. Iemand een idee?
 

Bijlagen

  • UserForm-Image #3.xls
    51 KB · Weergaven: 33
Waarom plaats je pictures op elkaar.
Voor één plaatje was het eenvoudig geweest.

De rode regel is van jou.
Zonder die lus van je en geen multiselect pak je het gekozen plaatje.
Code:
Private Sub PictInvBut_Click()

........
[COLOR=#ff0000]NotitiesImage.Picture = LoadPicture(.SelectedItems(lngCount))[/COLOR]
NotitiesImage.Tag = Split(.SelectedItems(1), "\")(UBound(Split(.SelectedItems(1), "\")))

Dan wordt het dus zo.
Code:
If .Show Then
          NotitiesImage.Picture = LoadPicture(.SelectedItems(1))
          NotitiesImage.Tag = Split(.SelectedItems(1), "\")(UBound(Split(.SelectedItems(1), "\")))
      End If

En dan kun je het zo opvragen.
Code:
Private Sub PictNameBut_Click()         '
  MsgBox NotitiesImage.Tag
End Sub
 
Goedemorgen HSV,

Net je berichtje ontvangen en een mooie oplossing.

Ben halverwege nu :)

Had alleen de oplossing nodig om een picture te printen vanuit een Image, maar heb dit file gemaakt voor meerdere oplossingen.

Is leuk om te doen en misschien bruikbaar voor anderen.

Ben nu dus met 5e opgave bezig.

Thanks en mooie dag,

Vr. Gr.

Dutch
 

Bijlagen

  • UserForm-Image #5.xls
    125,5 KB · Weergaven: 28
Bezig met te proberen een Image in een UserForm uit te printen.

Code:
Private Sub PictPrintBut_Click()
      With UserForm("TestUserForm")
       .NotitiesImage.Select: Selection.PrintOut copies:=1, Collate:=True             ' print 1 x het Signature Document Prijzenlijst uit
      End With
End Sub
Zie vb-tje

Lukt hiermee dus niet echt :-(
 

Bijlagen

  • UserForm-Image #6.xls
    128 KB · Weergaven: 25
Kleine aanpassingen.

Code:
If .Show Then
     NotitiesImage.Picture = LoadPicture(.SelectedItems(1))
     NotitiesImage.Tag = [COLOR=#ff0000].SelectedItems(1)[/COLOR]
 End If

Code:
Private Sub PictNameBut_Click()         '
  MsgBox [COLOR=#ff0000]Split(NotitiesImage.Tag, "\")(UBound(Split(NotitiesImage.Tag, "\")))[/COLOR]
End Sub


Rechtstreeks printen.

Code:
sub print()
 Shell ("cmd /c mspaint /p """ & NotitiesImage.Tag & """")
end sub

Hierbij krijg je eerst een voorbeeld.
Code:
sub print()
 ThisWorkbook.FollowHyperlink NotitiesImage.Tag
end sub
 
Laatst bewerkt:
Goedenavond HSV,

Had net een optie gevonden om te printen, toen ik jouw berichtje las. (zie UserForm-Image #7)
Werkte nog niet 100%, maar had een mogelijkheid gevonden.

Als ik de 1e aanpassing doe, dan werkt het printen niet meer
Code:
If .Show Then
     NotitiesImage.Picture = LoadPicture(.SelectedItems(1))
     NotitiesImage.Tag = .SelectedItems(1)
 End If

Bij de 2e aanpassing
Code:
Private Sub PictNameBut_Click()         '
  MsgBox Split(NotitiesImage.Tag, "\")(UBound(Split(NotitiesImage.Tag, "\")))
End Sub
werkt alleen als ik een nieuw picture ingevoerd heb, maar niet als de basis picture nog actief is. (zie UserForm-Image #8)

Printen ga ik nu proberen.

Bij 1e optie printen voorkomt m'n anti virus een Documentscript (voor hackers)
Bij de 2e optie opent hij een html document en staat de foto daarin
 

Bijlagen

  • UserForm-Image #7.xls
    138,5 KB · Weergaven: 21
  • UserForm-Image #8.xls
    140,5 KB · Weergaven: 26
Laatst bewerkt:
De naam van het basisplaatje zet je in de Tag bij het openen van het formulier.

De beide opties om te printen werken hier prima.
 
Hoi,

Kan allemaal zijn, maar als je de codes niet overneemt zoals ik aangaf zal het een en ander ook niet werken.
 
Vraagje voor snb of de liefhebber.

Hallo snb,

Zit met een vraagje en zag op internet je Bestanden: eigenschappen en methoden.
op https://www.snb-vba.eu/VBA_Bestanden.html#L_2.3

Zit met een probleem waar ik niet uit kom.

Gaat om Notities met foto's erbij.

Deze Foto's staan apart onder een bepaalde Map. In deze map zitten foto's van meerdere Notities.
Had het zo bedacht dat de naam van een foto bestaat uit:

Not&(nummer notitie)&jaartal-maand-dag_&nummer foto

Dus bv. Notitie 5 heeft 4 fotot's. Gebruik wildcards voor de datum v/d foto's

Deze worden dan genaamd:
Not5 2020-10-28_1 / Not5 2020-10-28_2 / Not5 2020-10-28_3 / Not5 2020-10-28_4

Wil met behulp van VBA checken of bepaalde bestanden (foto's) bestaan en hoeveel.
Dit heb ik onder de knie met:
Code:
  NotitieNummer = 5

  TmpPath = ActiveWorkbook.Worksheets("Blad1").Range("D5")
  TmpName1 = "Not"
  TmpName2 = NotitieNummer
  TmpName3 = " ????-??-??_"
  
With Application.FileDialog(1)
    For x = 1 To 300
      If Dir(TmpPath & TmpName1 & TmpName2 & TmpName3 & x & ".jpg") <> "" Then Aantal = Aantal + 1
    Next x
End With
MsgBox ("Aantal =  " & Aantal)

Om vervolgens met een slide show de desbetreffende foto's te laten zien, loop ik tegen het probleem op dat hij niet de bestandsnaam weergeeft. Probeer onder jouw eigenschappen en methoden dit uit te vogelen, maar kom er niet uit. NotitiesImage.Tag leest de Bestandsnaam (TmpName2) in met vraagtekens als Datum.
De slide show is:
Code:
With Application.FileDialog(1)
   For x = 1 To Aantal
      NotitiesImage.Tag = TmpPath & TmpName1 & TmpName2 & TmpName3 & x & ".jpg"
      NotitiesImage.Picture = LoadPicture(NotitiesImage.Tag)
      DoEvents
      Application.Wait DateAdd("s", 2, Now)
    Next x
  End With


Heeft u hiervoor een oplossing?

Vr. Gr. Dutch
 
Bovenstaand probleem opgelost. zie codes.

Code:
  Dim x As Integer, fList As String, fName As String, fPath As String
  fPath = ActiveWorkbook.Worksheets("Blad1").Range("D5")

  fName = Dir(ActiveWorkbook.Worksheets("Blad1").Range("D5") & "*.jpg")     ' https://www.excelfunctions.net/vba-dir-function.html
  Do While fName <> ""
    With Application.FileDialog(1)
      If NotitieNummer = Mid(fName, 4, 2) Then
        For x = 1 To 25
          If Mid(fName, 17, 1) = x Then
            NotitiesImage.Tag = fPath & fName
            NotitiesImage.Picture = LoadPicture(fPath & fName)
            NaamImage = fPath & fName                                     ' geeft de TextBox het Path en de naam van het File
            DoEvents
            Application.Wait DateAdd("s", 2, Now)
          End If
        Next x
      End If
    End With
    fName = Dir() ' Get the next .csv file within "C:\DataFiles\".
  Loop

Op naar het volgende. Printen van een Image
 

Bijlagen

  • UserForm-Image #14.xls
    82,5 KB · Weergaven: 27
Test-file bijna klaar,

Nr. 4 & 10 nog te doen.

1e In een UserForm in een Image-venster (NotitiesImage), een picture (basis) automatisch invoeren met VBA (Onder activate)
2e In een UserForm in een Image-venster (NotitiesImage), een picture invoeren met een Dialog menu VBA
3e Met VBA de naam van deze picture geven
4e Met VBA (If Then) picture is niet de goede dan verwijderen
5e Met VBA deze picture (Image) rechtstreeks printen
6e Met VBA deze picture (Image) via werkblad printen
7e Met VBA een slide van pictures
8e Met VBA deze picture verwijderen uit Image en/of vervangen door Basis.jpg of niets
9e Met VBA een jpg bestand verwijderen uit een Map
10e Met VBA een picture stretchen
 

Bijlagen

  • UserForm-Image #17.xls
    140,5 KB · Weergaven: 17
Ok, is gelukt allemaal.

Is een test-file dus kijk niet naar het mooie :)

Voor de liefhebber ooit.

Bedoeling was alleen het picture uit een Image printen. Dat is wat ondergetekende nodig heeft, maar gaandeweg paar opties bijgekomen omdat het gebeuren met een picture toch wat omslachtiger is.

De opzet is uiteindelijk geworden:

1e In een UserForm in een Image-venster (NotitiesImage), een picture (basis) automatisch invoeren met VBA (Onder activate)
2e In een UserForm in een Image-venster (NotitiesImage), een picture invoeren met een Dialog menu VBA
3e Met VBA de naam van deze picture geven
4e Met VBA (If Then) picture is niet de goede dan verwijderen
5e Met VBA deze picture (Image) rechtstreeks printen
6e Met VBA deze picture (Image) via werkblad printen
7e Met VBA een slide van pictures werkt
8e Met VBA deze picture verwijderen uit Image en/of vervangen door Basis.jpg of niets
9e Met VBA een jpg bestand verwijderen uit een Map
10e Met VBA eigenschappen Image PictureSizeMode instellen als stretch

zie het voorbeeldje hier bijgevoegd.

Succes allemaal.

Vr. Gr.

Dutch
 

Bijlagen

  • UserForm-Image #18.xls
    151,5 KB · Weergaven: 32
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan