tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
3796
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    V&M V&M ist offline Rookie
    Registriert seit
    Jul 2008
    Ort
    Düsseldorf NRW
    Beiträge
    6
    Hi Leute,

    Um eins am Anfang klar zustellen: ich habe keine VB Kenntnisse, habe die Excelmakros von einem Kollegen übernommen und schon Stunden in Foren verbracht und leider keine Lösung gefunden

    Das Makro was ich verwende wurde für Excel 97 aufgenommen und soll jetzt unter Excel 2007 laufen, was es an sich auch tut.

    Es soll Daten aus externen Dateien lesen und eine Grafik ausgeben.
    Dies geschiet über mehrere Aufrufe anderer Makros, bei denen nach dem wechsel auf Excel 2007 nun der Laufzeitfehler 1004 auftritt.
    Durch diesen Laufzeitfehler schliesse ich das es das andere Makro nicht finden kann, was aber eigentlich nicht sein kann da sich nichts an der Ordnerstrucktur geändert hat und des Fehler erst mit dem Wechel der MS Office Version aufgetretten ist.
    Mit Excel 97 funktioniert es auch noch ohne Probleme, aber ein downgrade auf die alte Version steht außer frage.

    Ich habe die Syntax des Makros auch schon kontrolliert und mir als Leihe ist kein offensichtlicher Fehler aufgefallen.

    Mein Frage ist nun wo liegt der Fehler und/oder gibt es inkompatibilitäten zwischen den VB Versionen die in Excel 97 bzw. Excel 2007 verwendet werden?

    Hier ist der Fehlerhafte Code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    
    Sub GrafikErzeugen(ByVal DruckMappe As String, ByVal Kpf_Datei As String)
    '============================================'
    ' Message drucken und anschliesslich löschen '
    '============================================'
        Static ModulName As String
        Dim Ver_Datei As String, _
            Ve2_Datei As String, Kp2_Datei As String, _
            Alt_Datei As String, Neu_Datei As String, _
            ProcesName As String, LogoName As String, _
            AnwenderSub As String, i As Integer, Anzahl_Charts As Integer, _
            Anzahl_Charts_Totall As Integer
       Dim MeldungText2 As String
       Dim AnwKurzMacroName2  As String, Kurz_Ver_Datei2 As String
         
           ModulName = "GrafikErzeugen"
    1      On Error GoTo FehlerBehandlung
     
           AnwKurzMacroName2 = Empty
           Kurz_Ver_Datei2 = Empty
           
    20     Ver_Datei = Left(Kpf_Datei, Len(Kpf_Datei) - 3) & "VER"
            '-------------------------------------------
            ' KurzeName Ver_datei (ohne Pfad) ermitteln
            '-------------------------------------------
    170         i = [WWSTD.XLS].InZnFr(Ver_Datei, "\")
    180         Kurz_Ver_Datei = Right(Ver_Datei, Len(Ver_Datei) - i)
    190         Kurz_Ver_Datei = UCase(Kurz_Ver_Datei)
    '------------------------------------------
    ' Anwendung-Macro aus Kopf-Datei ermitteln
    '------------------------------------------
    200         AnwenderMacroName = [WWSTD.XLS] _
                                   .GetIniDaten(Kpf_Datei, Empty, "ANWENDER-MACRO")
    210         If WWSTD_Fehler <> 0 Then
    220           Error WWSTD_Fehler
    230         End If
    '------------------------------------------------------------------
    ' Physikalische-Name des AnwenderMacros aus GRFDRU.PAR Datei lesen
    '------------------------------------------------------------------
    240         AnwenderMacroName = [WWSTD.XLS].GetIniDaten(MyParamDataei, _
                                    "Anwender-Macros", AnwenderMacroName)
    290         i = InStr(AnwenderMacroName, " ")
    300         AnwenderSub = Right(AnwenderMacroName, _
                                     Len(AnwenderMacroName) - i)
    310         AnwenderMacroName = Left(AnwenderMacroName, i - 1)
     
    320         i = [WWSTD.XLS].InZnFr(AnwenderMacroName, "\")
    330         AnwKurzMacroName = Right(AnwenderMacroName, _
                                          Len(AnwenderMacroName) - i)
    340         AnwKurzMacroName = UCase(AnwKurzMacroName)
    '------------------------------------------------------------------
    ' Anwender-Macro aufrufen
    ' ( Grafik/Tabelle auf dem Bildschirm erzeugen (um sie zu drucken))
    '------------------------------------------------------------------
    350         Workbooks.Open FileName:=AnwenderMacroName
                AnwKurzMacroName2 = AnwKurzMacroName
    360         Application.Run Macro:=AnwKurzMacroName & "!" & AnwenderSub, _
                                    Arg1:=Ver_Datei
               ' Bei Fehler im AnwKurzMacroName Sprung zur Fehler-Routine
    380         If WWSTD_Fehler <> 0 Then
    390            Error USER_MACRO_FEHLER
    400         End If
    '-------------------------------------------------------------------
    ' Alle Charts suchen (, die im Anwender-Macro erzeugt wurden) lesen
    ' und DruckMappe verschieben.
    '-------------------------------------------------------------------
    405         LogoName = [WWSTD.XLS].GetIniDaten(MyParamDataei, "Parameter", "Logo")
    410         Anzahl_Charts = Workbooks(Kurz_Ver_Datei).Charts.Count
    415         Anzahl_Charts_Totall = Workbooks(DruckMappe).Charts.Count
    420         For i = 1 To Anzahl_Charts
    423            Workbooks(Kurz_Ver_Datei).Charts(Anzahl_Charts - i + 1).Activate
    424            Workbooks(Kurz_Ver_Datei).Charts(Anzahl_Charts - i + 1).Deselect
    425            Workbooks(Kurz_Ver_Datei).Charts(Anzahl_Charts - i + 1).Select
                   ' V&M-Loge hinzufügen
    426            ActiveChart.Pictures.Insert(LogoName).Select
    427            Selection.ShapeRange.ScaleWidth 0.09, True
    428            Selection.ShapeRange.ScaleHeight 0.09, True
                   ' V&M-Beschrieftug setzen
    429            ActiveChart.TextBoxes.Add(17, 7, 50, 40).Select ' Datum
    430            With Selection
    431              .Placement = xlMoveAndSize
    432              .Interior.ColorIndex = xlNone
    433              .Characters.Text = "Vallourec & Mannesmann Tubes"
    '540             .Font.FontStyle = "Fett"
    434              .Font.Size = 5
    435              .Font.ColorIndex = 16
    436              .HorizontalAlignment = xlCenter
    437              .VerticalAlignment = xlCenter
    438              .AutoSize = True
    439            End With
     
    460            Workbooks(Kurz_Ver_Datei).Charts(Anzahl_Charts - i + 1).Move _
                         after:=Workbooks(DruckMappe).Sheets(Anzahl_Charts_Totall + i)
    470            Workbooks(DruckMappe).Sheets(Anzahl_Charts_Totall + i + 1).Name = _
                         "Diagr." & Trim(Str(Anzahl_Charts_Totall + i))
                Next i
    '----------------------------------------------------------------------
    ' Die Mappe vom Usermacro schliessen. Seine Grafikblätter wurden schon
    ' in DruckMappe verschoben.
    '----------------------------------------------------------------------
     ' Falls man die Daten Schlißt (*.VER), dann unverständlicherweise
     ' wird die X-Achsenbeschriftung im Diagramm zersört. Deswegen schließt
     ' man hier die *.Ver Tabelle nicht, sondern nach dem Drucken, was nicht
     ' so schön ist.(Excel Bug ?)
     '-->      Workbooks(Kurz_Ver_Datei).Close savechanges:=False
     
               ' User-Macro hat schon alles getan und wird geschlossen
    620         Application.Windows(AnwKurzMacroName).Close _
                            savechanges:=False
    Exit Sub ' Ende der Routine
    '=============================================
    ' Hier kommt man automatisch im Fehler-Fall
    '=============================================
    FehlerBehandlung:
     
    810 Select Case Err
        Case USER_MACRO_FEHLER
    820    MeldungText = "Fehler " & "AnwenderMacro_Err = " & WWSTD_Fehler & _
                         " im User-Macro " & AnwKurzMacroName & _
                         ". Diagramm wurde nicht gedruckt !"
    830 End Select
    930  Reply_Code = 0
    940  SetTrace (ModulName)
    950  Err.Raise Err.Number
    '-----------------------------------------------------
    ' Nach dem Fehler wird die nächste Message verarbeitet
    '-----------------------------------------------------
    870  If AnwKurzMacroName2 <> Empty Then
    880     Application.Windows(AnwKurzMacroName).Close savechanges:=False
    885     Application.Windows(Kurz_Ver_Datei).Close savechanges:=False
    890  End If
     
    End Sub

    Ich bin für jede Hilfe dankbar.

    Gruß
    V&M
     

  2. #2
    V&M V&M ist offline Rookie
    Registriert seit
    Jul 2008
    Ort
    Düsseldorf NRW
    Beiträge
    6
    Oh vergessen der Fehler tritt bin Zeile 360 auf.

    360 Application.Run Macro:=AnwKurzMacroName & "!" & AnwenderSub, _
    Arg1:=Ver_Datei

    Gruß
    V&M
     

  3. #3
    Zvoni Zvoni ist offline Mitglied Platin
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    735
    Zitat Zitat von V&M Beitrag anzeigen
    *schnipp*

    Mein Frage ist nun wo liegt der Fehler und/oder gibt es inkompatibilitäten zwischen den VB Versionen die in Excel 97 bzw. Excel 2007 verwendet werden?

    *schnipp*
    Excel97=VB5/6
    Excel2007=VB.Net
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  4. #4
    Alx80 Tutorials.de Gastzugang
    Hallo,

    sorry dass ich auf deine Frage nicht antworten kann. Ich habe aber ein sehr ähnliches Problem und hoffe das die Antworten beider Fragen vielleicht auch sehr ähnlich sind. Ich bin von Excel 2003 auf Excel 2007 umgestiegen. Leider funktioniert jetzt die eingebunde dll-Datei nicht mehr. Ich bekomme ein Laufzeitfehler '53' - Datei nicht gefunden als Fehler. Unter Excel 2003 läuft die xls-Datei einwandfrei mit der dll-Datei zusammen.

    VBA Code:
    Option Explicit
    Public Declare Function CrankNicolson "C:\Users\Alx\Desktop\Version5.1\Debug\PDEsolver.dll" (ByRef solution As Double) As Double

    Der Pfad stimmt, die Datei ist vorhanden.
    Wäre um jede Hilfe dankbar!

    Grüße,
    Alx
     

Ähnliche Themen

  1. » Excel Laufzeitfehler 9 bei programmierten Excel-Makro
    Von WING83 im Forum Office-Anwendungen
    Antworten: 7
    Letzter Beitrag: 25.10.10, 16:27
  2. [Excel 2007] Makro mit variablen Zellen
    Von Darko82 im Forum Office-Anwendungen
    Antworten: 6
    Letzter Beitrag: 24.01.10, 17:18
  3. Excel 2007 Makro über Hyperlink aufrufen
    Von janomerico im Forum Office-Anwendungen
    Antworten: 5
    Letzter Beitrag: 28.10.08, 15:05
  4. Excel 97 VB Makro hat Laufzeitfehler unter Excel 2003
    Von V&M im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 23.07.08, 11:16
  5. Excel 2007 + Makro + rauschreiben als Excel 1997 - 2003
    Von Herli im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 10.08.07, 11:09