Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1196to1200
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Makros unter Excel2010 64 bit
René
Hallo liebe Excelprofis,
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é

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makros unter Excel2010 64 bit
31.01.2011 18:39:33
fcs
Hallo René,
das Problem könnte das Pluszeichen (+) als Operator für das Zusammenfügen von Textteilen sein. Siehe hierzu auch die VBA-Hilfe zu "mathematische Operatoren" -- "+(Operator)"
Das funktioniert ggf. nur, wenn beide Operanden vom Typ String (also Text) sind. Ist einer der Operanden eine Zahl gibt es ggf. Probleme.
Besser bzw. sicherer ist es für das Zusammenfügen von Texten das & als Operator zu verwenden.
Ich frag mich sowieso warum der eigentlich mathematische Additionsoperator + seit einiger Zeit immer öfter für das Verketten von String-Ausdrucken verwendet wird.
Scheint mal wieder eine Pseudo-Vereinfachung sein, die vom VBA-Compiler zugelassen wird/wurde, aber zu gegebener Zeit holen einen dann solche "Schlampereien" bei der Programmierung wieder ein.
Ersetzt alle "+" in deiner Prozedur, die keine mathematische Addition sind, durch "&".
Zusätzlich solltes du die Meldung bei Fehler im Makroablauf etwas erweitern, damit du einen Hinweis auf den Grund des Fehlers bekommst.
ErrCatcher:
With Err
MsgBox "Fehler-Nr: " & .Number & vbLf & .Description, vbCritical + vbOKOnly, _
"Speicherung der Kopie nicht möglich."
End With

Gruß
Franz
Anzeige
AW: Makros unter Excel2010 64 bit
31.01.2011 18:50:43
René
Hallo Franz,
ganz herzlichen Dank für Deine Hilfe. Werde morgen früh weiter daran arbeitenund melde mich auf jeden Fall morgen.
Noch mal herzlichsten dank. Ohne Euch bring ich sonst garnichts zum Ende. Danke Danke Danke
MfG René
AW: Makros unter Excel2010 64 bit
01.02.2011 13:43:17
René
Hallo Franz,
habe das alles so befolgt wie Du mir aufgetragen hast.
Num bekomme ich die Meldung
Fehler- Nr: 1004 Anwendungs oder objektorientierter Fehler in Zeile 2 (siehe unten)
Ich verzweifel bald daran weil wir nun bald auf Office 2010 umstellen und diese Probleme nun nach 4 Jahren erfolgreichen Arbeitens mit der Datei auftauchen. Kannst Du mir bitte weiterhelfen?
Danke MfG René
'Export in Datei
Call ExportWochenBericht(ExportName, cbxModell, CInt(kopieren_ab), CInt(merken))
'Ausblenden der entsprechenden Tabellenblätter
Worksheets("WB_" & cbxModell).Visible = xlVeryHidden
Worksheets("DWB_" & cbxModell).Visible = xlVeryHidden Hier kommt der Fehler !!!!!!!!!!
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
ErrCatcher:
With Err
MsgBox "Fehler-Nr: " & .Number & vbLf & .Description, vbCritical + vbOKOnly, _
"Speicherung der Kopie nicht möglich."
End With
End Sub
Anzeige
AW: Makros unter Excel2010 64 bit
03.02.2011 10:52:29
fcs
Hallo René,
der Fehler 1004 deutet oft auf Fehler bei den Namen (Tabellen, Diagrammen, etc.) von Objekten hind.
D.h. es wurde kein Objekt mit dem Namen gefunden.
Wenn die Fehlermeldung direkt beim Aufruf der Sub "ExportWochenBericht" angezeigt wird, dann stimmt etwas mit der Übergabe der Parameter nicht oder der Fehler tritt beim Abarbeiten der Prozedur auf.
Hast du schon mal probiert in den VBA-Prozeduren Hallte-Punkte zu setzten und dann mit Taste F8 im Einzelschritt-Modus die Prozeduren abzuarbeiten? So kannst du ggf. die Problemzeile(n) besser eingrenzen.
Kontrolliere insbesondere den Wert der Variablen cbxModell und ob auch alle Blattnamen vorhanden sind, die aus diesem Wert erzeugt werden. Hier solltes es eigentlich keine Probleme beim Versionswechsel geben.
Nach meinen Erfahrungen mit Excel2007 (nur über das verfüge ich) gibt es bei Kopiervorgängen von Grafikobjekten und bei Diagrammen einiges an Problemen, wenn man in Excel 2003 erstellte Dateien in Excel 2007 via VBA weiterbearbeiten will. Zum Teil werden Objekte neu benamt oder durchnummeriert.
Prüfe also ob die eingebetteten Diagramme tatsächlich noch die Namen "Chart 1" und "Chart 8" haben. Hier ist es ggf. besser mit der Zählnummer statt den Namen zu arbeiten. also z.B.
ActiveSheet.ChartObjects(2).....
statt
ActiveSheet.ChartObjects("Chart 8")....
ActiveSheet.ChartObjects(1).....
statt
ActiveSheet.ChartObjects("Chart 1")....
Mit dem nachfolgenden Makro kannst du Namen und Index-Nummer von Diagramm-Objekten ermitteln.
Leider hab ich nur Vermutungen was mögliche Fehler angeht, denn ich hab keine Codezeilen gefunden, die unter Versionen neuer als 2003 grundsätzlich nicht laufen.
Gruß
Franz
Sub Chartobject_NamenListen()
'Chartobjekte im aktiven Tabellenblatt listen, ggf. Name ändern.
Dim objChartObject As ChartObject, AktiveZelle As Range, vName, sNameAlt
Set AktiveZelle = ActiveCell
For Each objChartObject In ActiveSheet.ChartObjects
With objChartObject
ActiveWindow.ScrollColumn = .TopLeftCell.Column
ActiveWindow.ScrollRow = .TopLeftCell.Row
sNameAlt = .Name
vName = InputBox("Name Chartobjekt : " & .Name & vbLf _
& "Index :    " & .Index & vbLf _
& "TopLeftCell :    " & .TopLeftCell.Address, _
"Liste der ChartObject-Namen", sNameAlt)
If vName = "" Then
GoTo Ende
Else
If vName  sNameAlt Then .Name = vName
End If
End With
Next
AktiveZelle.Select
Ende:
Set AktiveZelle = Nothing: Set objChartObject = Nothing
End Sub

Anzeige
AW: Makros unter Excel2010 64 bit
03.02.2011 22:01:38
René
Hallo Franz,
ich werde das mal beherzigen und Deine Hinweise umsetzen. Ich danke Dir erst mal ganz herzlich und melde mich wieder.
MfG René
AW: Makros unter Excel2010 64 bit
04.02.2011 17:01:23
René
Hallo Franz,
ich möchte mich bei Dir ganz ganz herzlich bedanken. Deine Hilfe hat es mir ermöglicht das ich mit der Excel2003 Datei auf Arbeit weiter arbeiten kann wenn Excel 2010 installiert wird.
Ich bin jetzt total glücklich und freu ich total.
Anbei sende ich Dir die Zeilen die ich geändert habe und die auch dann so zum Erfolg dank Deiner Hilfe geführt haben.
MfG René
'Dies ist die Änderung des oberen Graphen
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).Name = Worksheets("tmp").Range("L6")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).Values = Worksheets("tmp").Range("M6:P6")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).XValues = Worksheets("tmp").Range("M5:P5")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(2).Name = Worksheets("tmp").Range("L7")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(2).Values = Worksheets("tmp").Range("M7:P7")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(2).XValues = Worksheets("tmp").Range("L5:P5")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(3).Name = Worksheets("tmp").Range("K8")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(3).Values = Worksheets("tmp").Range("M8:P8")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(3).XValues = Worksheets("tmp").Range("M5:P5")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(4).Name = Worksheets("tmp").Range("L9")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(4).Values = Worksheets("tmp").Range("M9:P9")
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(4).XValues = Worksheets("tmp").Range("M5:P5")
'Dies ist die Änderung des unteren Graphen
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Name = Worksheets("tmp").Range("B10")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Values = Worksheets("tmp").Range("C10:J10")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).XValues = Worksheets("tmp").Range("C5:J6")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(2).Name = Worksheets("tmp").Range("B9")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(2).Values = Worksheets("tmp").Range("C9:J9")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(2).XValues = Worksheets("tmp").Range("C5:J6")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(3).Name = Worksheets("tmp").Range("B8")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(3).Values = Worksheets("tmp").Range("C8:J8")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(3).XValues = Worksheets("tmp").Range("C5:J6")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(4).Name = Worksheets("tmp").Range("B7")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(4).Values = Worksheets("tmp").Range("C7:J7")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(4).XValues = Worksheets("tmp").Range("C5:J6")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(5).Name = Worksheets("tmp").Range("B11")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(5).Values = Worksheets("tmp").Range("C11:J11")
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(5).XValues = Worksheets("tmp").Range("C5:J6")
Anzeige
AW: erledigt o.w.T
04.02.2011 18:08:01
fcs
...

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige