Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Macro maken voor printen  (gelezen 5738 keer)

0 leden en 1 gast bekijken dit topic.

Offline Dotchiejack

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 625
  • Geslacht: Man
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #15 Gepost op: 07 april 2020, 15:35:05 »
Mag ik dan weten welke fout?
Groet, Philiep

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #16 Gepost op: 07 april 2020, 15:45:44 »
Beste Philiep,

Ik was al even bezig met mijn laatste meest recente bestand om de persoonsgegevens er uit te halen ik heb het bestand toegevoegd.
Hij geeft op de andere macro's nu ook meldingen.
Ik zal wel ergens iets verkeerd gedaan hebben.

Alvast bedankt
« Laatst bewerkt op: 07 april 2020, 17:49:53 door Wilbert »

Offline Dotchiejack

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 625
  • Geslacht: Man
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #17 Gepost op: 07 april 2020, 16:09:13 »
De cel waar je naar verwijst,D28 is de oorzaak.
Je verwijst naar =TEKST.SAMENVOEGEN("Bezoekverslag"&" "&D4&" "&TEKST(L5;"jjjj-mm-dd"))
dus D4 en L5, cel D4 heeft (in dit voorbeeld) een #N/B foutmelding en je L5 cel is een samengevoegde cel van L5:N5.
Ik heb hier op het forum al weet ik veel hoeveel keer gezegd,gebruik NOOIT samengevoegde cellen met VBA.(beter nog, gebruik nooit samengevoegde cellen)
Er is dus niets mis met de code maar met je opzet.
Een foutmelding en samengevoegde cellen,dan moet je toch begrijpen dat dit nooit goed kan komen.
Zet maar eens de tekst Wilbert in cel  D28,loopt als een trein.
Groet, Philiep

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #18 Gepost op: 07 april 2020, 16:21:26 »
Beste Philiep,

Ik heb weer wat tekst ingevuld en deze werken nu weer goed (ook met samengevoegde teksten) alleen als ik "opslaan als exel" word mijn scherm wit en kom ik niet terug in mijn eigen bestand, het bestand word dan wel met juiste naam opgeslagen in de map.

Het enige wat nog niet werkt is het versturen in xlsm per mail, deze hebben we nodig omdat we de verslagen vaak buiten "de cloud" maken en op deze manier ze in de cloud terecht komen, deze hoeft dan ook alleen naar ons zelf verzonden te worden.

Alvast bedankt
« Laatst bewerkt op: 07 april 2020, 17:36:48 door Wilbert »

Offline Dotchiejack

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 625
  • Geslacht: Man
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #19 Gepost op: 07 april 2020, 16:39:49 »
Sub mailEXEL()
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
 On Error Resume Next
With OutlookMail
    .To = [B3]
    .CC = [B6]
    .BCC = "Gxxxxx.mxxxxx@vxxxxxk.nl"
    .Subject = [D28] & " " & [D5]
    .Body = "Beste," & vbCrLf & vbCrLf & "In de bijlage het bezoekverslag van" & " " & [L5] & vbCrLf & vbCrLf & "Met vriedenlijke groet," & vbCrLf & vbCrLf & [D5]
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Nooit een echt emailadres gebruiken op een forum, zo zit je te vissen naar spam.
Verwijder het echte "Gxxxxx.mxxxxx@vxxxxxk.nl" email adres in je code.
Groet, Philiep

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #20 Gepost op: 07 april 2020, 17:48:56 »
Beste Philiep,

Ik dacht dat ik er alles uitgehaald had maar niet dus, ik heb het bestand er af gehaald.
De link werkt nu goed, ik zou alleen de bestandsnaam dan nog veranderd willen hebben met hetzelfde als de PDF versie en PDF mail versie (cel D28).

Alvast bedankt

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #21 Gepost op: 08 april 2020, 11:04:58 »
Beste Philiep,

Ik was zelf ook al aan het proberen geweest maar lukte mij niet.
Ik had al wat geprobeerd met de macro waarmee PDF word verstuurd maar kreeg deze niet omgezet naar exel bestand.

Ik de nieuwe macro die je gestuurd hebt word het bestand zelf nog niet meegenomen.
Ik zou graag nog willen dat het bestand in exel (volledig bestand) meegenomen word met als naam cel D28, dat is mij (nog niet) gelukt.
Alvast bedankt

Offline Dotchiejack

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 625
  • Geslacht: Man
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #22 Gepost op: 08 april 2020, 13:19:51 »
Citaat
Ik zou graag nog willen dat het bestand in exel (volledig bestand) meegenomen word met als naam cel D28.
Sub mailEXEL()
workbookCopyFullName = Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - 26) & Range("D28").Value & ".xlsm"
ThisWorkbook.SaveCopyAs workbookCopyFullName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
 On Error Resume Next
With OutlookMail
    .To = [B3]
    .CC = [B6]
    .BCC = "Gxxxxx.mxxxxx@vxxxxxk.nl"
    .Subject = [D28] & " " & [D5]
    .Body = "Beste," & vbCrLf & vbCrLf & "In de bijlage het bezoekverslag van" & " " & [L5] & vbCrLf & vbCrLf & "Met vriedenlijke groet," & vbCrLf & vbCrLf & [D5]
    .Attachments.Add workbookCopyFullName
    .Display
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Kill workbookCopyFullName
End Sub
Je zal in de eerste lijn het getal 26 zien (26 is het aantal karacters in de bestandsnaam + .xlsm, het voorbeeld was BoezoekverslagTEST3-6 (21 karacters +.xlsm 5 karacters)
De 26 moet je aanpassen aan je eigen bestandsnaam)
Groet, Philiep

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #23 Gepost op: 08 april 2020, 16:39:07 »
Beste Philiep,

Zoals het nu lijkt werkt alles goed te werken.
Mijn dank is hiervoor heel groot.
Ik zet er vanavond of morgen de oorspronkelijke data weer in en kijk of alles naar behoren werkt.
Ik zal je dit nog laten weten.

Alvast bedankt!!

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #24 Gepost op: 09 april 2020, 22:05:21 »
Beste

Zover ik nu het bestand getest heb werkt het op 2 kleine dingen na:
Het enige wat er nog gebeurd is als ik het bestand als "exel bestand" per mail verzend dan selecteert het bestand cel D28 als bestandsnaam maar zet voor "bezoekverslag" nog een keer "Be" voor zodat je "BeBezoekverslag krijgt.
Ik heb al het één en ander geprobeerd maar kom er niet uit, de tekst in cel D28 klopt ook.

Sub mailEXEL()
workbookCopyFullname = Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - 26) & Range("D28").Value & ".xlsm"
ThisWorkbook.SaveCopyAs workbookCopyFullname
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
 On Error Resume Next
With OutlookMail
    .To = [B3]
    .CC = [B6]
    .BCC = "Gxxxxxxxxxx@xxxxxxx.nl"
    .Subject = [D28]
    .Body = "Beste," & vbCrLf & vbCrLf & "In de bijlage het bezoekverslag van" & " " & [L5] & vbCrLf & vbCrLf & "Met vriedenlijke groet," & vbCrLf & vbCrLf & [D5]
    .Attachments.Add workbookCopyFullname
    .Display
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Kill workbookCopyFullname
End Sub

Als ik het bestand wil opslaan als xlsm krijg ik een wit scherm, hij slaat het bestand wel met goede naam ondertussen op maar moet het originele bestand weer opnieuw openen.
Ik heb in de macro zitten zoeken maar ik kom er helaas niet uit.

Sub opslaanexcel()
Application.ScreenUpdating = False
Set dlgSaveFolder = Application.FileDialog(msoFileDialogFolderPicker)
With dlgSaveFolder
.Title = "Selecteer een Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo CancelFolderSelection
sFolderPathForSave = .SelectedItems(1)
End With
Set dlgSaveFolder = Nothing
With ActiveWorkbook
    .SaveAs Filename:=sFolderPathForSave & "\ " & Range("D28").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    .Close savechanges:=False
End With
CancelFolderSelection:
Application.ScreenUpdating = True
End Sub


Alvast bedankt
« Laatst bewerkt op: 09 april 2020, 22:29:41 door SoftAid »

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 18.204
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Macro maken voor printen
« Reactie #25 Gepost op: 09 april 2020, 22:40:54 »
Wilbert,

zet code steeds tussen code-tags (volledige code selecteren en dan op de #-knop klikken.

Welke naam gebruik je precies voor je bestand.
Er gaan hier nogal wat versies rond, en juist daar moet je op letten.

Zoals Dotchiejack al heeft aangegeven:
Je zal in de eerste lijn het getal 26 zien (26 is het aantal karacters in de bestandsnaam + .xlsm, het voorbeeld was BoezoekverslagTEST3-6 (21 karacters +.xlsm 5 karacters)
De 26 moet je aanpassen aan je eigen bestandsnaam)

Je moet het aantal karakters in je bestandsnaam, inclusief .xlsm tellen, en dat aantal moet als getal gebruikt worden in de macro Sub mailEXEL() in de lijn:

workbookCopyFullName = Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - 26) & Range("D28").Value & ".xlsm"
Daar vervang je de 26 daar het aantal karakters van je bestandsnaam.

:) SoftAid :)             

« Laatst bewerkt op: 09 april 2020, 23:46:20 door SoftAid »
Wegens veelvuldig melden van dubbelposten, het posten op verschillende help-fora van dezelfde vraag, zijn de gedragsregels op dit forum aangepast. Dubbelposten dient in de toekomst op voorhand gemeld te worden, met een melding en een link naar het topic op de andere site. De helpers wensen een weinig respect voor de inspanningen die ze doen om mensen te helpen. Je doet jezelf ook een plezier. Door je dubbelposten te melden wordt je vraag mogelijk op meerdere fora beantwoord.

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #26 Gepost op: 10 april 2020, 09:12:24 »
Beste,

De bestandsnaam lengte is telkens anders, dat hangt ervan af hoelang de naam is.
Bij het opslaan in PDF gebeurd dit niet maar staat de "range ook niet, zie onderstaande:

Sub mailpdf()
    Bestand = ThisWorkbook.Path & "\" & Range("d28").Value & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Bestand
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .Subject = [D28] '(onderwerp)
        .To = [B3]
        .CC = [B6]
        .BCC = "xxxxxxxxx@xxxxxxx.nl"
        .Body = "Beste" & " " & [D4] & "," & vbCrLf & vbCrLf & vbCrLf & "Als bijlage het bezoekverslag van mijn bezoek op" & " " & [L5] & "." & vbCrLf & vbCrLf & vbCrLf & "Met vriedenlijke groet," & vbCrLf & vbCrLf & [D5]
        .Attachments.Add Bestand
        .Display
    End With
 Kill (Bestand)
End Sub

Is er toevallig ook nog naar mijn 2e vraag gekeken mbt wit scherm (crash??) na opslaan in exel

Alvast bedankt


Offline Dotchiejack

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 625
  • Geslacht: Man
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #27 Gepost op: 10 april 2020, 09:59:13 »
Weer vergeten te lezen zeker?
Citaat
zet code steeds tussen code-tags (volledige code selecteren en dan op de #-knop klikken.
Ik ben het een beetje beu, dat je de moeite niet doet je antwoorden te lezen, alleen de code kopieert.
De nu geposte mail pdf code doet in deze vraag niets ter zake.
Citaat
Als ik het bestand wil opslaan als xlsm krijg ik een wit scherm, hij slaat het bestand wel met goede naam ondertussen op maar moet het originele bestand weer opnieuw openen.
Sub opslaanexcel()
Application.ScreenUpdating = False
Set dlgSaveFolder = Application.FileDialog(msoFileDialogFolderPicker)
With dlgSaveFolder
.Title = "Selecteer een Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo CancelFolderSelection
sFolderPathForSave = .SelectedItems(1)
End With
Set dlgSaveFolder = Nothing
With ThisWorkbook
    .SaveAs Filename:=sFolderPathForSave & "\ " & Range("D28").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End With
CancelFolderSelection:
Application.ScreenUpdating = True
End Sub
Citaat
De bestandsnaam lengte is telkens anders, dat hangt ervan af hoelang de naam is.
Hier hoort een duidelijke uitleg bij, hoe je aan die naam komt, waar je die vandaan haalt vooraleer ik hier kan op antwoorden.


Groet, Philiep

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #28 Gepost op: 10 april 2020, 10:46:39 »
Beste,

Ik snap je frustratie over de dingen die ik niet opgelost krijg.
En ja ik kijk wel degelijk naar de codes en probeer het op te lossen maar lukken mij niet allemaal, ik heb er gaandeweg al heel wat foutjes uit het bestand gehaald maar bij een marcro is dit nog net wat moeilijker en lukt me niet allemaal.
Ik heb de macro van opslaanPDF erbij gedaan omdat deze het bestand ook op dezelfde manier verstuurd per mail alleen in PDF en niet in xlsm en daar de range van 28 niet in zie staan.

De verwijzing naar cel D28 is zelfs al vaker (in deze chat) aangewezen:

De cel waar je naar verwijst,D28 is de oorzaak.
Je verwijst naar =TEKST.SAMENVOEGEN("Bezoekverslag"&" "&D4&" "&TEKST(L5;"jjjj-mm-dd"))

Cel D4 verwijst naar een bedrijfsnaam die varieerd tussen 5 en 30 letters
Cel L5 verwijst in dit geval naar een naam van begeleider wat vaieert tussen 8 en 25 letters.

Sorry voor je frustratie maar ben je tot nu toe toch zeker erg dankbaar.
« Laatst bewerkt op: 10 april 2020, 13:25:29 door SoftAid »

Offline Dotchiejack

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 625
  • Geslacht: Man
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #29 Gepost op: 10 april 2020, 11:25:22 »
Deze lengte heeft niets te doen met de lengte van cell D28 in je originele bestand.
Maar ik begrijp dat je een reeds opgeslagen verslag nogmaals wilt mailen en de lengte daarom verschillend is van je origineel bestand.
Doe het dan zo.
lengte = Len(ThisWorkbook.Name)
workbookCopyFullName = Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - lengte) & Range("D28").Value & ".xlsm"
ThisWorkbook.SaveCopyAs workbookCopyFullName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
 On Error Resume Next
With OutlookMail
    .To = [B3]
    .CC = [B6]
    .BCC = "Gxxxxx.mxxxxx@vxxxxxk.nl"
    .Subject = [D28] & " " & [D5]
    .Body = "Beste," & vbCrLf & vbCrLf & "In de bijlage het bezoekverslag van" & " " & [L5] & vbCrLf & vbCrLf & "Met vriedenlijke groet," & vbCrLf & vbCrLf & [D5]
    .Attachments.Add workbookCopyFullName
    .Display
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Kill workbookCopyFullName
End Sub
Groet, Philiep

 


www.combell.com