Makros unter Excel2010 64 bit
René
ich habe in einer Datei (Excel2003) in einem Makro folgende Anweisung
Makro
Call ExportWochenBericht(ExportName, cbxModell, CInt(kopieren_ab), CInt(merken))
'Ausblenden der entsprechenden Tabellenblätter
Worksheets("WB_" + cbxModell).Visible = xlVeryHidden
Worksheets("DWB_" + cbxModell).Visible = xlVeryHidden
Worksheets("FWB_" + cbxModell).Visible = xlVeryHidden
'Festlegung für nächsten Durchlauf
näxtmodell:
If durchlauf = 1 Then cbxModell = "B"
If durchlauf = 2 Then cbxModell = "A"
Next durchlauf
If durchlauf = 1 Then cbxModell = "B"
If durchlauf = 2 Then cbxModell = "A"
'Ausblenden der entsprechenden Tabellenblätter
Worksheets("Berichtsdaten").Visible = xlVeryHidden
Worksheets("tmp").Visible = xlVeryHidden
Worksheets("Daten").Visible = xlVeryHidden
Worksheets("Menü").Activate
'Abspeichern der Datei
ActiveWorkbook.PrecisionAsDisplayed = False
Application.DisplayAlerts = False
Exit Sub
Err_Handler:
Application.ScreenUpdating = True
Call MsgBox("!FEHLER!", vbCritical, "SHIT")
End Sub Im zugehörigen Modul steht
Sub ExportWochenBericht(NeuerName, cbxModell As String, seitenumbruch, druckbereich As Integer)
Sheets("tmp").Visible = True
Sheets("DWB_" + cbxModell).Visible = True
Worksheets("WB_" + cbxModell).Visible = True
On Error GoTo ErrCatcher
Orginaldoc = ThisWorkbook.Name
'Kopieren der WERTE des Graphen --> um die Zellnamen zu umgehen in ein Hilfsblatt "tmp"
Sheets("DWB_" + cbxModell).Select
Range("A1:R32").Select
Selection.Copy
Sheets("tmp").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'Kopieren des Hilfsblattes "tmp" sowie des eigentlichen Berichtes
Sheets(Array("tmp", "WB_" + cbxModell)).Copy
For Each ws In ActiveWorkbook.Worksheets
ws.Cells.Copy
ws.[A1].PasteSpecial Paste:=xlValues
ws.Cells.Hyperlinks.Delete
Application.CutCopyMode = False
Cells(1, 1).Select
ws.Activate
Next ws
Cells(1, 1).Select
'Damit richtige Seite angezeigt wird beim ersten Öffnen des Dokuments
Worksheets("WB_" + cbxModell).Select
'Verzeichnisname festlegen
Set fso = CreateObject("Scripting.FileSystemObject")
f = ThisWorkbook.Path & "\Wochenberichte"
'Prüfen, ob es existiert, falls nicht dann erstellen
If Not fso.FolderExists(f) Then fso.CreateFolder f
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs f & "\" & NeuerName & " " & cbxModell & ".xls"
ActiveWorkbook.ChangeLink Orginaldoc, NeuerName & " " & cbxModell & ".xls", xlExcelLinks
'Dies ist die Änderung des oberen Graphen
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(1).Name = "=tmp!R6C12"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(1).Values = "=tmp!R6C13:R6C16"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(1).XValues = "=tmp!R5C13:R5C16"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(2).Name = "=tmp!R7C12"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(2).Values = "=tmp!R7C13:R7C16"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(2).XValues = "=tmp!R5C13:R5C16"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(3).Name = "=tmp!R8C12"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(3).Values = "=tmp!R8C13:R8C16"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(3).XValues = "=tmp!R5C13:R5C16"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(4).Name = "=tmp!R9C12"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(4).Values = "=tmp!R9C13:R9C16"
ActiveSheet.ChartObjects("Chart 8").Chart.SeriesCollection(4).XValues = "=tmp!R5C13:R5C16"
'Dies ist die Änderung des unteren Graphen
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(1).Name = "=tmp!R10C2"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(1).Values = "=tmp!R10C3:R10C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(1).XValues = "=tmp!R5C3:R6C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(2).Name = "=tmp!R9C2"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(2).Values = "=tmp!R9C3:R9C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(2).XValues = "=tmp!R5C3:R6C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(3).Name = "=tmp!R8C2"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(3).Values = "=tmp!R8C3:R8C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(3).XValues = "=tmp!R5C3:R6C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(4).Name = "=tmp!R7C2"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(4).Values = "=tmp!R7C3:R7C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(4).XValues = "=tmp!R5C3:R6C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(5).Name = "=tmp!R11C2"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(5).Values = "=tmp!R11C3:R11C10"
ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(5).XValues = "=tmp!R5C3:R6C10"
Range("A1:A1").Select
'Namensbereiche aus Dokument entfernen:
For Each nm In ActiveWorkbook.Names
nm.Delete
Next nm
'Druckbereich festlegen
If druckbereich > seitenumbruch Then
ActiveSheet.PageSetup.PrintArea = "$A$1:$K$" + CStr(druckbereich)
'Manueller Zeilenumbruch für erste Seite
'Set ActiveSheet.HPageBreaks(1).Location = Range("A19")
Else
ActiveSheet.PageSetup.PrintArea = "$A$1:$K$" + CStr(seitenumbruch)
End If
ActiveWorkbook.Close SaveChanges:=True
ActiveWindow.WindowState = xlMaximized
Exit Sub
ErrCatcher: MsgBox "Speicherung der Kopie nicht möglich."
End Sub
Unter Excel 2003 ist das alles super gelaufen. Unter Excel 2010 stürzt der Code Call Export Wochenbericht schon in der 2. Zeile ab. Könnt ihr mir bitte helfen was ich ändern muss. Ich bin da alleine völlig ratlos. Ich bin für jede Hilfe dankbar.
Es grüßt Euch freundlich René