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

Email probleem

Status
Niet open voor verdere reacties.

ExcelNoob

Gebruiker
Lid geworden
20 apr 2007
Berichten
227
Beste mensen,

Ik heb een macro opgenomen in mijn excelformulier, wanneer op een afbeelding geklikt wordt, wordt het bestand opgeslagen in een bepaalde map en daarna verzonden naar een emailadres. Alleen hij verzend hem met het cijfer 18 in de bestandsnaam, maar ik kan aan de code niet zien waarom hij dat doet.

Deze code heb ik gebruikt:

Code:
Sub Mail_Workbook()
'Working in 97-2007
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
 
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
 
    Set Sourcewb = ActiveWorkbook
    
    'Opslaan file
    Opslaan_file = "H:\Mijn Documenten\PMF" & Range("D8").Value & ".xls"
    ActiveWorkbook.SaveAs Filename:=Opslaan_file
    
    'Copy the sheet to a new workbook
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook
 
    'Determine the Excel version and file extension/format
    With Destwb
        If Val(Application.Version) < 12 Then
            'You use Excel 97-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            'You use Excel 2007
            'We exit the sub when your answer is NO in the security dialog that you only
            'see  when you copy a sheet from a xlsm file with macro's disabled.
            If Sourcewb.Name = .Name Then
                With Application
                    .ScreenUpdating = True
                    .EnableEvents = True
                End With
                MsgBox "Your answer is NO in the security dialog"
                Exit Sub
            Else
                Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
                End Select
            End If
        End If
    End With
 
    '    'Change all cells in the worksheet to values if you want
    '    With Destwb.Sheets(1).UsedRange
    '        .Cells.Copy
    '        .Cells.PasteSpecial xlPasteValues
    '        .Cells(1).Select
    '    End With
    '    Application.CutCopyMode = False
 
    'Save the new workbook/Mail it/Delete it
    TempFilePath = Environ$("temp") & ""
    TempFileName = "Formulier" & Sourcewb.Name & " "
 
    Onderwerp = ActiveSheet.Name & " " & Range("D8").Value
    Emailadres = "Test@test.nl"
    
    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        .SendMail Emailadres, Onderwerp
        On Error GoTo 0
        .Close SaveChanges:=False
    End With
 
    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr
 
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    
    'geef melding weer
    MsgBox "File is per email verzonden aan: " & Emailadres & " en tevens opgeslagen op locatie: " & Opslaan_file
    
End Sub
 
Heb je hem al door gelopen mbv je debug opties?
klik op de grijze balk naast je witte scherm waarin je code staat.
Nu zie je een rode bol staan. dit is nu een stoppunt in je code. Als je na het stoppen van je code op F8 drukt dan gaat de code een stap verder (mits je meerdere bollen hebt geplaatst, anders loopt hij de gehele code af).

Het mooie ervan is dat je nu je code kan laten stoppen op de punten welke jij wilt en zo kan kijken wat er precies gebeurt / uitgevoerd is. Tevens kan je nu in je editor, als je met je muis over een variabele gaat, bekijken waarmee een variabele is gevuld.

Je kan ook je Excel en je VB-editor zo vecshuiven dat ze alle twee de helft van je monitor inbeslag nemen zodat je ook kan zien wat er in Excel gebeurt (wel je foutmelding aan zetten, bv application.screenupdating op true laten staan).

Misschien kom je erzo op deze manier achter waar je 18 vandaan komt!!!!
 
Bedankt voor je reactie, maar het heeft niet geholpen, ik kan nergens vinden dat ie 18 in de naam moet opnemen. 18 staat nergens in de code vermeld. Snap er niks van.
 
En die 18 is ook niet terug te vinden in een van je bereiken of tabladnaam / werkbladnaam?

Heb je code geprobeerd met verschillende mogelijkheden maar alleen als ik een 18 in mijn werkbladnaam heb dan krijg ik een 18 in mijn mail. Ik krijg wel een file met 2x .xls erin.

Dit komt doordat Sourcewb.Name .xls in zich heeft en je later (na controle op 2007) de extensie er aanplakt.
 
Ja klopt, heb het inmiddels aangepast (extensie), maar kan echt nergens en 18 in het bestand vinden.
 
Wat staat er in cel D8?

Code:
Opslaan_file = "H:\Mijn Documenten\PMF" & Range("D8").Value & ".xls"

Want hier staat dat de file wordt opgeslagen als PMF + cel D8 + .xls ?

Pierre
 
Wat staat er in cel D8?

Code:
Opslaan_file = "H:\Mijn Documenten\PMF" & Range("D8").Value & ".xls"

Want hier staat dat de file wordt opgeslagen als PMF + cel D8 + .xls ?

Pierre

Daar hoort de achternaam te staan van degene waarvoor het formulier wordt ingevuld, daar staat dus ook geen 18.;)
 
Vandaag staat ipv 18, 22 in de bestandsnaam:confused: :shocked:
Misschien dat het getal toch afhankelijk is van de datum?????

Please help me:(
 
Zou het kunnen dat in de regel
Code:
TempFilePath = Environ$("temp") & ""
iets mis gaat?

Uit de hulp van Excel±

Environ, functie


Geeft als resultaat de String voor een omgevingsvariabele van een besturingssysteem. Niet beschikbaar op de Macintosh

Syntaxis

Environ({envstring | number})

De functie Environ heeft de volgende benoemde argumenten:

Onderdeel Beschrijving
envstring Optioneel. Een reeksexpressie die de naam van een omgevingsvariabele bevat.
number Optioneel. Een numerieke expressie die correspondeert met de numerieke volgorde van de omgevingsreeks in de tabel met omgevingsreeksen. Het argument number kan een willekeurige numerieke expressie zijn, maar wordt afgerond tot een geheel getal voordat het wordt geëvalueerd.



Notities

Als envstring niet voorkomt in de tabel met omgevingsreeksen, wordt een gegevensreeks zonder gegevens ("") als resultaat gegeven. Anders geeft Environ als resultaat de tekst die is toegewezen aan de opgegeven envstring; dat wil zeggen, de tekst na het gelijkteken in de tabel met omgevingsvariabelen voor de betreffende omgevingsvariabele.

Als u number opgeeft, wordt de reeks op die numerieke positie in de tabel met omgevingsreeksen als resultaat gegeven. In dat geval geeft Environ alle tekst als resultaat, inclusief envstring. Als op de opgegeven positie geen omgevingsreeks staat, geeft Environ een tekenreeks met lengte nul als resultaat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan