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

opmerking knop koppelen met extern bestand.

Status
Niet open voor verdere reacties.

MartijnLiempde

Gebruiker
Lid geworden
27 mei 2016
Berichten
100
Goedemorgen iedereen,

Ik heb een vraag.

Ik heb een verzamelbestand waar alle werkorders die in de geschiedenis uitgeschreven zijn, in een lijst staan onder elkaar genaamd werkorders.

In deze lijst staat in de meest linkse kolom een hyperlink die gekoppelt is met de desbetreffende werkorder.

Het komt veel voor dat we foto's of opmerkingen toe willen voegen aan de desbetreffende werkorders, gebeurt dit, dan willen we dit kenbaar maken in het verzamelbestand.

Ik zou dus willen dat ik een knop krijg (genaamd opmerking) (is al toegevoegd zonder formule) in de enkele werkorders, en wanneer ik daar op klik, dat de kolom in het verzamelbestand geel in gekleurt word zodat voor iedereen kenbaar is dat er iets aan de hand is met dat werkorder.

Hieronder het verzamelbestand.
Bekijk bijlage VERZAMELBESTAND VB.xlsb

Hieronder een enkel werkorder.
Bekijk bijlage ENKELE WERKORDER VOORBEELD.xlsx

Als je VBA opent zit onder module2 de formule van de knop opslaan, hier zie je dus de hyperlink die die wegschrijft staan.

Ik hoop op iemand's reactie, ik zou er zeer geholpen mee worden.

Groet,

Martijn
 
Hoi,
Test deze eens
Code:
Sub dotchie()
    Dim wb1 As Workbook, wb2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim cl As Range, ws1Rng As Range, ws2Rng As Range, aCell As Range
    Dim lRowW1 As Long, lRowW2 As Long
    Application.ScreenUpdating = False
        Set wb1 = ThisWorkbook
        Set ws1 = ActiveSheet
        Workbooks.Open ("VERZAMELBESTAND VB.xlsb")[COLOR="#008000"] 'aanpassen[/COLOR]
        Set wb2 = Workbooks("VERZAMELBESTAND VB.xlsb")
        Set ws2 = wb2.Sheets("werkorders")
        Set ws1Rng = ws1.Range("B3")
    With ws2
        lRowW2 = .Range("A" & .Rows.Count).End(xlUp).Row
        Set ws2Rng = .Range("A2:A" & lRowW2)
        Set cl = ws1Rng
        Set aCell = ws2Rng.Find(what:=cl.Value, LookIn:=xlValues)
        If Not aCell Is Nothing Then
        aCell.Resize(, 7).Interior.Color = vbYellow
    End If
    End With
        Application.DisplayAlerts = False
        Workbooks("VERZAMELBESTAND VB.xlsb").Close (True)
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
End Sub
 
heb de knop gemaakt en toegewezen aan de sub "dotchie" naam zelf wel verandert in opmerking maar dat is nvt.

daarna geeft hij de fout op verzamelbestand VB (heb ik veranderd in zie afbeelding)

hij zegt dat het bestand niet gevonden word.
opmerking afbeelding.jpg
 
Klopt het path wel? Het Path die nu op het plaatje staat betekend dat het bestand kamplan Defenitief.xlsb in dezelfde map staat als het bestand (werkorder) waar je de macro laat lopen.
Dit zal waarschijnlijk niet het geval zijn.
Je moet het path aanpassen in het juiste path zoiets als:
Code:
("C:\Users\....\......\.......\kamplan Defenitief VB.xlsb")
 
Goedemorgen

Ik heb zoals je zei inderdaad het hele pad ingevoerd.

Ik krijg nu geen foutopsporing meer en het lijkt of excel iets uitvoert, hij laad iets..

Alleen de kolom in de sheet werkorder word niet geel gemaakt.

Moet ik van vbYellow ook iets anders maken?
 
Hoi Martijn;
vbYellow is juist, daar moet je niets aan veranderen.
Waren uw twee vbtjes echt representatief? (werkordernummer in B3 in werkorder en werkordernummers in kolom A in verzamelbestand)
Zet in het echte werkorder eens een apostrof voor volgende lijntjes of code zoals
Code:
'Application.ScreenUpdating = False
 'Application.DisplayAlerts = False
 'Workbooks("VERZAMELBESTAND VB.xlsb").Close (True)
 'Application.DisplayAlerts = True
 'Application.ScreenUpdating = True
Dan kan je zien wat de code doet.
In bijlage een werkend vbtje (als beide bestanden in hetzelfde mapje staan)
 

Bijlagen

beste dotchie.

ja die kolommen en rijen komen overeen met de "echte werkorder bestanden"

bij mij doen die 2 voorbeelden het ook, maar wanneer ik dan die Verzamelbestand VB verander in Kamplan Definitief, zegt die dat die die niet kan vinden.

terwijl Kamplan Definitief in dezelfde map staat als alle andere aangemaakte enkele werkorders,
 
Ohja dit moest ik nog melden.

het bestand word wel automatisch opgeslagen, dit staat ook achter de bestandsnaam. moet ik dit dus ook in VBA erachter plaatsen.
 
nu zie ik nog iets wat ik anders doe als jou.

In mijn "officiele document" (om het zo maar even te noemen) zet ik de code in VBA in het verzamelbestand jij hebt hem in de enkele werkorder staan> maakt dit verschil?
 
het bestand word wel automatisch opgeslagen, dit staat ook achter de bestandsnaam. moet ik dit dus ook in VBA erachter plaatsen.
Dit is wat deze regel doet in mijn stukje code
Code:
 Workbooks("VERZAMELBESTAND VB.xlsb").Close (True)
In mijn vbtje heb ik VERZAMELBESTAND VB veranderd in Kamplan Definitief en het werkt prima. Het is mij een raadsel wat er bij u fout gaat.
Hierbij als bijlage
Edit
In mijn "officiele document" (om het zo maar even te noemen) zet ik de code in VBA in het verzamelbestand jij hebt hem in de enkele werkorder staan> maakt dit verschil?
Jazeker, dat was trouwens uw vraag;)
Ik zou dus willen dat ik een knop krijg (genaamd opmerking) (is al toegevoegd zonder formule) in de enkele werkorders, en wanneer ik daar op klik, dat de kolom in het verzamelbestand geel in gekleurt word zodat voor iedereen kenbaar is dat er iets aan de hand is met dat werkorder.
 

Bijlagen

haha dat was inderdaad mijn vraag, alleen hoe kan ik die dan in een enkel werkorder zetten als ik vanuit het verzamelbestand de enkele werkorders weg schrijf?
 
zou het iets uitkunnen maken dat mijn "officiele verzamelbestand een xlsb bestand is en mijn werkorders allemaal weggeschreven worden als xlsx?

werkorderafbeelding.jpg
 
Ik denk dat ik het ongeveer begrijp nu maar op zeker te zijn leg me eens uit hoe een nieuw werkorder wordt aangemaakt, wat er met het nieuwe werkorder gebeurd. wordt die opgeslagen in dezelfde map als het verzamel map e.d.
 
oke komt die.

stap 1. in het verzamelbestand zie je ook nog de sheet leeg werkorder staan.

stap 2. daar word automatisch een werkordernummer in b3 gezet, is gewoon elke x plus 1.

stap 3. daar vul ik een klantnaam in uit een pull down menu incl adres bla bla bla.

stap 4. dan druk ik op de knop opslaan en word die weggeschreven naar dezelfde map als waar het verzamelbestand zich bevindt.

ook word er in de sheet werkorder een kolom aan toegevoegd met de werkorders op een rij met hyperlink gekoppeld aan het bestand in die map, adres, telefoon etc.

ik zou nu dus willen dat die ook die knop "opmerking" mee stuurt naar de enkele werkorder.
wanneer ik daar op druk word in het verzamelbestand onder de sheet werkorders de kolom van de desbetreffende werkorder geel.
 
hieronder de code waar ik het de werkorders mee opsla en weg schrijf naar de sheet werkorders.

Code:
Public Sub OpslBestand()
Dim NieuwFact As Variant
'kopiëren document als nieuwe factuur
ActiveSheet.Copy
NieuwFact = "\\SBS2011\RedirectedFolders\pepijn\My Documents\Pepijn\Werkorders\Werkorder" & Range("B3").Value & ".xlsx"
ActiveWorkbook.SaveAs NieuwFact, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
    With Sheets("werkorders")
    lastrow = Sheets("werkorders").Range("A:I").Find("*", _
    SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    .Cells(lastrow + 1, "A") = Sheets("Leeg Werkorder").Range("B3")
    .Cells(lastrow + 1, "A").Hyperlinks.Add .Cells(lastrow + 1, "A"), "\\SBS2011\RedirectedFolders\pepijn\My Documents\Pepijn\Werkorders\Werkorder" & Range("B3").Value & ".xlsx"
    .Cells(lastrow + 1, "B") = Sheets("Leeg Werkorder").Range("B2")
    .Cells(lastrow + 1, "C") = Sheets("Leeg Werkorder").Range("B5")
    .Cells(lastrow + 1, "D") = Sheets("Leeg Werkorder").Range("B7")
    .Cells(lastrow + 1, "E") = Sheets("Leeg Werkorder").Range("B6")
    .Cells(lastrow + 1, "F") = Sheets("Leeg Werkorder").Range("E4")
    .Cells(lastrow + 1, "H") = Sheets("Leeg Werkorder").Range("B10")
    .Cells(lastrow + 1, "G") = Sheets("Leeg Werkorder").Range("B9")
    .Cells(lastrow + 1, "I") = Sheets("Leeg Werkorder").Range("A11")
    MsgBox "Werkorder succesvol verwerkt!", vbInformation, "Goed gedaan"
    Range("B3").Value = Range("B3").Value + 1
    Range("B4:C4").ClearContents
    Range("B5:C8").ClearContents
    Range("B9:C10").ClearContents
    Range("D4:q32").ClearContents
    Range("A13:C15").ClearContents
    Range("A15:B33").ClearContents
     End With
 
xlsx bestanden kunnen geen macro's bevatten. Uw vraag kan in een xlsx bestand niet worden uitgevoerd.
We kunnen de huidige code voor het opslaan veranderen dat uw werkorders vanaf nu worden opgeslagen in xlsb formaat met de juiste code achter de knop(en) maar helaas de reeds bestaande werkorders zal je moeten omzetten naar xlsb en de code stuk voor stuk achter de knoppen plakken.
 
Dat is niet nodig, ik zou wel graag willen dat ze dan vanaf nu als xlsb worden opgeslagen en dat vanaf nu dan die opmerking functie erin zit, als dat kan ben ik ZEER maar dan ook ZEER geholpen:P:d
 
ik neem aan dat in die regel van het opslaan xlsx veranderen in xlsb genoeg is om vanaf nu alles op te slaan als xlsb bestanden?

maar hoe dan verder?
 
Martijn,
Onderstaande code achter de knop Opmerkingen hangen in het blad Leeg Werkorder (uw sjabloon; zeg maar) in het verzamelbestand Kamplan Definitief. Een nieuwe werkorder opslaan als xlsb. Nadien als je iets veranderd in een (xlsb) werkorder kan je de knop gebruiken.
Code:
Sub dotchie()
    Dim wb1 As Workbook, wb2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim cl As Range, ws1Rng As Range, ws2Rng As Range, aCell As Range
    Dim lRowW1 As Long, lRowW2 As Long
    Application.ScreenUpdating = False
        Set wb1 = ThisWorkbook
        Set ws1 = ActiveSheet
        Workbooks.Open Filename:=ThisWorkbook.Path & "\Kamplan Definitief.xlsb" 'aanpassen
        Set wb2 = Workbooks("Kamplan Definitief.xlsb")
        Set ws2 = wb2.Sheets("werkorders")
        Set ws1Rng = ws1.Range("B3")
    With ws2
        lRowW2 = .Range("A" & .Rows.Count).End(xlUp).Row
        Set ws2Rng = .Range("A2:A" & lRowW2)
        Set cl = ws1Rng
        Set aCell = ws2Rng.Find(what:=cl.Value, LookIn:=xlValues)
        If Not aCell Is Nothing Then
        aCell.Resize(, 7).Interior.Color = vbYellow
    End If
    End With
        Application.DisplayAlerts = False
        Workbooks("Kamplan Definitief.xlsb").Close (True)
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
End Sub
Aan deze code zelf moet niets veranderd worden als de werkorders in dezelfde map staan als Kamplan Definitief.xlsb en de naam Kamplan Definitief.xlsb klopt.
 
ik ben al zover dat ik hem opsla als xlsb bestand, dit is gelukt dit kan ik terug zien in de map waar de werkorders staan.

alleen geeft hij nog steeds de melding dat hij kamplan defintief niet kan vinden...

hieronder een foto met het path waar het verzamelbestand en de werkorders staan.

screenshotexcel.jpg
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan