Ik ben bezig een macro aan te passen, maar 1 ding wil mij niet lukken.
Ik zal het even kort uitleggen.
Ik start de macro en er verschijnt een inputbox .
Ik selecteer de cellen A2:K15 en klik op Ok, vervolgens word deze selectie inclusief de opmaak naar een nieuw Excel bestand gekopieerd en als mail bijlage automatisch naar diverse personen gemaild.
Tot zover werkt alles goed alleen het formaat van de rijen en kolommen word niet overgenomen.
In het nieuwe Excelbestand die men per mail ontvangt zijn de rijen en de kolommen soms te smal en is dus soms de tekst in een cel niet goed te lezen.
Zo is kolom K in het originele bestand 61,14 (432 pixels) breed maar in het per mail ontvangen bestand maar 8,43 (64 pixels).
Als nu de hoogte en de breedte van de cellen ook zou worden overgenomen dan zou de macro perfect zijn.
Weet iemand of dit mogelijk is?
Hier onder zie je een voorbeeld van de macro zoals die nu is.
Ik zal het even kort uitleggen.
Ik start de macro en er verschijnt een inputbox .
Ik selecteer de cellen A2:K15 en klik op Ok, vervolgens word deze selectie inclusief de opmaak naar een nieuw Excel bestand gekopieerd en als mail bijlage automatisch naar diverse personen gemaild.
Tot zover werkt alles goed alleen het formaat van de rijen en kolommen word niet overgenomen.
In het nieuwe Excelbestand die men per mail ontvangt zijn de rijen en de kolommen soms te smal en is dus soms de tekst in een cel niet goed te lezen.
Zo is kolom K in het originele bestand 61,14 (432 pixels) breed maar in het per mail ontvangen bestand maar 8,43 (64 pixels).
Als nu de hoogte en de breedte van de cellen ook zou worden overgenomen dan zou de macro perfect zijn.
Weet iemand of dit mogelijk is?
Hier onder zie je een voorbeeld van de macro zoals die nu is.
Code:
Sub email_verzenden_met_celselectie_als_bijlage_TEST()
'
1 Dim lngAntwoord As Long
2 lngAntwoord = MsgBox("Wil je een e-mail sturen met als bijlage een Exelbestand" + vbCr + "met daarin een door jou gemaakte celselectie?" + vbCr + vbCr + "Klik op Ja om de celselectie te maken die je wilt e-mailen." + vbCr + vbCr + "De volgende personen zullen deze mail ontvangen:" + vbCr + vbCr + " Test persoon 1" + vbCr + " Test persoon 2" + vbCr + " Test persoon 3" + vbCr + " Test persoon 4" + vbCr + " Test persoon 5", vbQuestion + vbYesNo + vbDefaultButton2, "Celselectie e-mailen als bijlage")
If lngAntwoord = vbYes Then
GoTo 3
Else
GoTo Error_handler:
End If
3 Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
5 xTitleId = "Selecteer de cellen die je wilt mailen"
On Error GoTo Error_handler:
Set WorkRng = Application.Selection
8 Set WorkRng = Application.InputBox("Celbereik selecteren", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, " dd-mmm-yyyy h uur mm")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "test@mail.nl" 'Typ hier een geldig e-mail adres
.CC = ""
.BCC = ""
.Subject = "Onderwerpnaam van de mail"
.Body = "Bij deze een update met de laatste wijzigingen in het test Excelbestand. (zie bijlage)"
.Attachments.Add Wb2.FullName
.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
9 MsgBox "De e-mail is verzonden.", vbInformation, "Ter informatie"
GoTo 10
Error_handler: MsgBox "De e-mail is niet verzonden.", vbExclamation, "Geannuleerd"
10 Range("O1").Select
End Sub