Hallo
Es wird in xlsx abespeichert, das Problem liegt aber nicht am speichern sondern am kopieren da ich ja das gesamte Sheet in ein neues Excel kopiere und da nimmt er die Codes die im Sheet hinterlegt sind ja leider mit.
Das ist der Code mit dem ich die Datei kopiere
'xxxx senden
Sub xxxx_senden()
Dim strBlatt As String
Dim strDatei As String
Dim strPfad As String
Dim outObj As Object
Dim Mail As Object
Dim strBodyText As String
''Set outObj = CreateObject("Outlook.Application")
''Set Mail = outObj.CreateItem(0)
strPfad = "C:\Temp"
strBlatt = ActiveSheet.Name
Sheets(strBlatt).Copy
ActiveWorkbook.SaveAs strPfad & "\" & ActiveSheet.Name & "_" & Format(Now(), "DD.MM.YYYY") & ".xlsx"
Application.ScreenUpdating = False
Call Blattschutz_Admin_aufheben
strDatei = ActiveWorkbook.FullName
''strbody = "<font face=Arial>Sehr geehrter Damen und Herren,</font><br><br>" & _
''"<font face=Arial>ixxxxm Anhang finden Sie die aktuelle FO Liste."
''With Mail
''.GetInspector.Display
''.To = Worksheets("DDDD").Range("D24")
''.CC = Worksheets("DDDD").Range("D25")
''.Subject = "xxxx_" & Format(Date, "DD.MM.YYYY") 'Betreff
''.HTMLBody = strbody & "<br>" & .HTMLBody
''.Attachments.Add strDatei
''End With
''Workbooks(Dir(strDatei)).Close
''Kill (strDatei)
'Mail.send
Application.ScreenUpdating = True
End Sub
Im Sheet selbst steht Call Spaltenbreiten und an dem scheitert es, den der Code steht in Modul 1 und darauf kann die Porzedur Worksheet actived natürlich nicht zugreifen da im kopierten Sheet das Modul ja nicht vorhanden ist
Sub Spaltenbreiten()
Application.ScreenUpdating = False
Range("A:A").ColumnWidth = 11
Range("B:C").ColumnWidth = 16
Range("D:D").ColumnWidth = 15
Range("E:E").ColumnWidth = 6
Range("F:F").ColumnWidth = 28
Range("G:G").ColumnWidth = 7
Range("H:H").ColumnWidth = 18
Range("I:I").ColumnWidth = 24
Range("J:M").ColumnWidth = 8
Range("N:Q").ColumnWidth = 7
Range("R:R").ColumnWidth = 25
Range("S:S").ColumnWidth = 8
Range("T:W").ColumnWidth = 10
Range("X:X").ColumnWidth = 2
Range("Y:Z").ColumnWidth = 16
Range("AA:AC").ColumnWidth = 11
Range("AD:AE").ColumnWidth = 12
Range("AF:AF").ColumnWidth = 25
Range("AG:AG").ColumnWidth = 2
Range("AH:AH").ColumnWidth = 10
Range("AI:AI").ColumnWidth = 10
Range("1:1").RowHeight = 30
Application.ScreenUpdating = True
Darum entweder beim kopieren wird der VBA Hintergerund nicht mitkopiert wenn das möglich ist.
Eine andere Idee ist aber ich weiss nciht ob das funktionieren kann wenn ich den Code Spaltenbreite selbst nicht in ein Modul schreibe sondern direkt ins Sheet.dann würde der Zugriff aufs Modul wegfallen aber läuft der Code dann auch wenn das Shett aktiviert wird, oder muss der Code in einem Modul stehen.
Jolanda
|