Anzeige
Archiv - Navigation
772to776
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
772to776
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro in einer anderen xls datei ausführen

Makro in einer anderen xls datei ausführen
19.06.2006 03:33:27
Tom
Hallo VBA Experten
Ich möchte aus einem excel file ein anderes excel (AuswertName) öffnen.
Dann möchte ich das Makro "Temp_in_auswert_berechnen()" ausführen.
Leider bekomm ich immer die Fehlermeldung in dieser Zeile:
x = Reformat.Cells(Rows.Count, 1).End(xlUp).Row
Öffne ich AuswertName manuell. Kopiere den Code in ein Makro und führ es aus, so funktioniert es!
Nur aus einem anderen Excel file nicht.
Weiss jemand wieso und wie kann ich das Problem lösen?
Mit "Reformat.Cells(Rows.Count, 1).End(xlUp).Row" soll die letzte Reihe in dem Sheet "Reformat" ermittelt werden.
Hier der Anfang des Makros
Sub Temp_in_auswert_berechnen()
'On Error Resume Next
Dim x As Integer
x = 0
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'AuswertName = Cells(5, 47).Value
'Workbooks.Open Filename:= _
' AuswertName
'AuswertName = Cells(5, 47).Value
Sheets("Werte_Temp").Select
Dim Reformat, Rauch, Agilent, RefForm, BZ As Worksheet, objS As Worksheet
Datum = Sheets("Protokoll").Cells(1, 18) & Sheets("Protokoll").Cells(5, 2) & "." & Sheets("Protokoll").Cells(1, 19) & Sheets("Protokoll").Cells(5, 3) & "." & Sheets("Protokoll").Cells(5, 4) & " "
' Reformat in Werte_Temp kopieren
'
For Each objS In ThisWorkbook.Worksheets
If objS.Name Like "Ref_Arch*" Or objS.Name Like "Ref_*" Then
If objS.Name Like "Reformereinheit*" Or objS.Name Like "Ref_Einheit*" Then
Exit For
End If
Set Reformat = objS
Exit For
End If
Next
x = Reformat.Cells(Rows.Count, 1).End(xlUp).Row
'Cells(5, 2) = x
For i = 2 To x
j = i + 1
'Reformat Zeit in abhängigkeit
' Selection.NumberFormat = "h:mm:ss;@"
Uhrzeit = Reformat.Cells(i, 1)
Uhrzeit = Replace(Uhrzeit, Datum, "")
Sheets("Werte_Temp").Cells(i + 1, 1) = Uhrzeit
Sheets("Werte_Temp").Cells(i + 1, 1).NumberFormat = "hh:mm:ss"
Sheets("Werte_Temp").Cells(i + 1, 2).FormulaR1C1 = "=RC[-1]-Protokoll!R3C7"
Sheets("Werte_Temp").Cells(i + 1, 2).NumberFormat = "hh:mm:ss"
Sheets("Werte_Temp").Cells(i + 1, 3).FormulaR1C1 = "=RC[-1]*24*3600"
Sheets("Werte_Temp").Cells(i + 1, 3).NumberFormat = "0"
'Reformer Eingang
Formel = (Reformat.Cells(i, 2) + Reformat.Cells(i, 3) + Reformat.Cells(i, 4)) / 3
Sheets("Werte_Temp").Cells(i + 1, 4) = Formel
.......
Danke für eure mühen
gruß
Tom

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro in einer anderen xls datei ausführen
19.06.2006 06:39:06
Erich
Hallo Tom,
du hast zwar geschrieben, in welcher Zeile der Fehler auftritt, nicht aber den Inhalt der Fehlermeldung.
Ist die etwa so? Laufzeitfehler '424 - Objekt erforderlich
Die Probleme scheinen mir in der Belegung von Reformat zu liegen, also in der Schleife
For Each objs In ThisWorkbook.Worksheets
If objs.Name Like "Ref_Arch*" Or objs.Name Like "Ref_*" Then
If objs.Name Like "Reformereinheit*" Or objs.Name Like "Ref_Einheit*" Then
Exit For
End If
Set Reformat = objs
Exit For
End If
Next
Die Schleife geht über die Tabellenblätter von "ThisWorkbook",
also der Mappe, in der der Code steht. Wenn du ein Blatt aus der geöffneten Mappe bearbeiten willst,
musst du statt "ThisWorkbook" das "ActiveWorkbook" nehmen.
Reformat wird nicht belegt, wenn zufällig das erste gefundene Blatt einen Namen hat,
der mit "Ref_Einheit" beginnt - dann wird die Schleife ohne Ergebnis verlassen.
Ich vermute, du willst ein beliebiges Blatt finden, das "Ref_...", aber nicht "Ref_Einheit..." heißt.
Wenn es kein solches Blatt gibt, soll dann die Prozedur beendet werden?
"Ref_Arch*" habe ich weggelassen - wird bei "Ref_*" mitgefunden.
"Reformereinheit*" habe ich auch weggelassen - kann nicht vorkommen, fängt nicht mit "Ref_" an.
Ich könnte mir das etwa so vorstellen:
For Each objs In ActiveWorkbook.Worksheets
If objs.Name Like "Ref_*" Then
If Not objs.Name Like "Ref_Einheit*" Then
Set Reformat = objs
Exit For
End If
End If
Next
If objs Is Nothing Then
MsgBox "Kein Blatt 'Ref_*' gefunden - Abbruch"
Exit Sub
End If
x = Reformat.Cells(Rows.Count, 1).End(xlUp).Row
' usw.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Makro in einer anderen xls datei ausführen
19.06.2006 20:00:03
Tom
Danke daran lags !
gruß
Thomas

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige