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

Code aanpassen of volledig nieuw?

Status
Niet open voor verdere reacties.

Drieband

Gebruiker
Lid geworden
30 dec 2011
Berichten
107
Ik plaats dit hier voor een vriend,daar mijn gezondheid het momenteel niet toelaat om er zelf lang mee bezig te zijn?

Eerste vraag: Hoe gaat het met jou en je gezondheid? Ik hoop dat alles OK is.

Ik durf het bijna niet meer vragen maar als je er geen zin hebt dan moet je het zeker niet doen.
Je kent het programma en ik heb tussentijds al wat aanpassingen gedaan en alles werkt nog steeds perfect.
Regelmatig werd er al wat fouten gemaakt en die heb ik proberen op te vangen door de uitslagfile te nazien voor het versturen.
Als daar een foutje in staat (een hoogste reeks dat ontbreekt of een naam die niet juist is) wordt er een FF score genoteerd.

Omdat telkens de uitslag “BW_NIDM_Uitslag.xlsm” dezelfde naam draagt wordt deze steeds overschreven.
Zou het mogelijk zijn om de naam “BW_NIDM_Uitslag.xlsm” te saven als in bv: het wedstrijd nr. “N2A127.xslm” En dan ook onder deze nieuwe naam de uitslag te versturen.

PS: heb in module 2 al wat aan het proberen geweest maar ik krijg er een punthoofd van.

Op voorhand bedankt voor de eventuele hulp.
Jhonny
 

Bijlagen

Laatst bewerkt:
uit de code Overzetten blijkt dat er 2 bestanden zijn met een hardcoded name
test_NIDM_Uitslag.xlsm en TEST_NIDM_V5.xlsm

geen van beide files zijn hier verstrekt nu zal de bijlage wel onder de naam Kopie van Test_NIDM_V5(1937) hier geplaatst zijn. maar om te testen en aan te passen hebben we die 2e file ook nodig.. aangezien die wordt "geopend" en al moet bestaan volgens de code..
 
Toch even een (test)code zonder de uitslag file.

De overzetten code kon een stuk eenvoudiger zonder een hele hoop activate, select en selections.. dat is allemaal overbodige "rommel" dat door de macrorecorder wordt gegenereerd.
wat ik heb gedaan om dat "geflipper" tussen sheets te voorkomen is een aantal variablen gemaakt.
de belangrijkste zijn voor het tabblad samenvatting (srcSamenvatting) en het tabblad met de uitslag in de andere file (tarUitslag)

Ik heb in het begin van de code het openen van file "test NIDM uitslag" laten staan voor nu. Dat bestand kan dienen als lege template (als dat nodig is, kan ik niet beoordelen omdat ik de file niet heb)
Na het kopieren van de cellen met wedstrijd info komt het nieuwe opslaan als van het bestand door saveAs te gebruiken en de cel met het wedstrijdnr voor de bestandsnaam
de bestandsnaam incl pad word opgeslagen in variable fileUitslag.

Die variable wordt ook gebruikt bij het stukje code om de het versturen te starten ipv application.run gebruik ik Call

In de verzendcode is alleen de openingsregel sub CDOmail() aangepast naar CDOmail(pdfFile As String) en de regels
Code:
Dim pdfFile As String
    pdfFile = ThisWorkbook.Path & "\" & "Test_NIDM_Uitslag.xlsm"
zijn verwijderd omdat dit nu wordt geregeld via de aanroep vande macro waar de bestandsnaam al in staat.

De nieuwe ovdrzetten code staat hieronder
Code:
Sub Overzetten()
'
' Overzetten Macro
' Sneltoets: Ctrl+o
'
Application.ScreenUpdating = False
'
'   Check Date and Title
    For Each cell In Range("M16:M19,M23:M26")
        If IsEmpty(cell) Then
            MsgBox "Het Wedstrijdnummer en/of Hoogste Reeks is niet ingevuld!", vbExclamation, "Samenvattingsblad onvolledig!"
            Exit Sub
        End If
    Next
    
'   File "Test_NIDM_Uitslag.xlsm" openen
    Dim strFile As String
    strFile = ThisWorkbook.Path & "\" & "Test_NIDM_Uitslag.xlsm"
    If Dir(strFile) = "" Then
        MsgBox "Er is geen Test_NIDM_Uitslag.xlsm file aanwezig!", vbCritical, "Verzendfile nakijken"
        Exit Sub
    End If
    Workbooks.Open Filename:=strFile

    Dim tarUitslag, srcSamenvatting As Worksheet
    Set tarUitslag = ActiveWorkbook.Worksheets(1)
    Set srcSamenvatting = ThisWorkbook.Worksheets("samenvatting")

'Overzetten
'   Wedstrijdnr ophalen
    tarUitslag.Range("C3") = srcSamenvatting.Range("U1")
    
'   Spelers ophalen
    tarUitslag.Range("C10") = srcSamenvatting.Range("T15")
    tarUitslag.Range("C12") = srcSamenvatting.Range("T17")
    tarUitslag.Range("C14") = srcSamenvatting.Range("T19")
    tarUitslag.Range("C16") = srcSamenvatting.Range("T21")

    tarUitslag.Range("N10") = srcSamenvatting.Range("T23")
    tarUitslag.Range("N12") = srcSamenvatting.Range("T25")
    tarUitslag.Range("N14") = srcSamenvatting.Range("T27")
    tarUitslag.Range("N16") = srcSamenvatting.Range("T29")
    
'   Wedstrijd resultaten ophalen
    srcSamenvatting.Range("V15:W21").Copy
    tarUitslag.Range("G10").PasteSpecial xlPasteValues
    srcSamenvatting.Range("X15:X21").Copy
    tarUitslag.Range("J10").PasteSpecial xlPasteValues
    srcSamenvatting.Range("V23:W29").Copy
    tarUitslag.Range("R10").PasteSpecial xlPasteValues
    srcSamenvatting.Range("X23:X29").Copy
    tarUitslag.Range("U10").PasteSpecial xlPasteValues
    
'   File NIDM Uitslag Opslaan
    Dim Keuze2 As Integer
    Dim fileUitslag As String
    Application.ScreenUpdating = True
    fileUitslag = ThisWorkbook.Path & "\" & srcSamenvatting.Range("U1") & ".xlsm"
    
    ActiveWorkbook.SaveAs Filename:=fileUitslag
    
'   Overzetting bevestigen
    If Not Range("K3").Value = 0 Then
    Keuze2 = MsgBox("OPGEPAST!  -  Er staat MOGELIJK een fout in de samenvatting! --TOCH VERZENDEN!--", vbYesNo + vbExclamation, "Verzendfile nakijken")
    If Keuze2 = vbNo Then Exit Sub
    End If
    ActiveWorkbook.Close
    
'   Uitslag Versturen
    UserForm1.Show vbModeless
    Call CDOmail(fileUitslag)
    Unload UserForm1
    If Err.Number = 0 Then
        MsgBox "Uitslag is verzonden!", vbInformation, "Verzend Bevestiging"
    End If
End Sub


misschien lukt testen van deze code, maar er is wel een redelijke kans op wat foutjes omdat ik de uitslagfile niet heb en dus ook niet kan nagaan of alles klopt.
 
roeljongman,
Hartelijk dank voor je hulp,ja er is nog een tweede file bij welke ik heb toegevoegd.
Wel merk ik dat er een beveiliging op zit,weet nu niet of die er af moet.
 
Ok, ja met die beveiligde file kan ik weinig er zit ook een ww op de vba code. dus dan wordt die 2e file "test_NIDM_Uitslag.xlsm" als gegeven aangenomen.

Zwak punt in de overzetten code is dan nog dat de bestandsnaam in de code staat omdat er kennelijk nogal eens aanpassingen worden gedaan en dan een andere naam krijgt zoals hier geupload met toevoeging (1936). dat zou je nog kunnen oplossen door de meest actuele bestandsnaam in een cel te zetten (net als bijv het wedstrijdnummer) zodat je in de code kan verwijzen naar de cel met de bestandsnaam ipv de naam in de code zetten.

Voor nu denk ik dat dit even het beste is wat ik kan opleveren.

Er zat nog 1 foutje in de code bij het kopiëren van de reeksen van de bezoekersploeg die heb ik in de bijlage gecorrigeerd.
 

Bijlagen

Roeljongman

Ik laad hierbij de bestanden op waar het om gaat(onbeveiligd).
Uw laatste bericht is kort bij de oplossing denk ik,maar bij het versturen krijg ik een foutmelding.
 

Bijlagen

De mail code kan ik niet debuggen.. daar heb ik geen verstand van. Mijn veranderingen zouden volgens mij niet van invloed moeten zijn op de verzending. ik krijg de fout pas bij .send regel en dat kan heel goed komen omdat de mailcode bij mij geen toegang weet te krijgen tot mijn mailclient. Ik gebruik mailen uit excel eigenlijk nooit dus heb ook geen ervaring met het achterhalen van oorzaken waarom op een bepaald moment een code vastloopt.

Enige wat ik heb gedaan is de string-variabele pdfFile anders vullen, deze wordt nu al gevuld bij het aanroepen van de CDOmail code vanwege de wens telkens een andere bestandsnaam te gebruiken
De enige aanpassingen heb ik eerder genoemd in reactie #3.
Ik heb bij het testen (voor zover ik het kan) dat de oorzaak niet bij de variable omdat ik kan zien dat de pdffile variable exact dezelfde inhoud heeft als de fileuitslag variable.
En in ook de oude ongewijzigde code in de laatst toegevoegde bijlage gaat het verzenden fout. dus het ligt volgens mij niet aan mijn aanpassingen in CDOmail

Er zal iemand met meer verstand van mailcode naar moeten kijken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan