Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
908to912
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
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro läuft nor mit lokaler Pfadangabe

Makro läuft nor mit lokaler Pfadangabe
27.09.2007 15:29:00
Julia
Hallo ich habe ein Makro aufgezeichnet
Klappt alles prima
Blos folgendes Problem:
Als ich das Makro aufgezeichnet habe hat er mir die absoluten Pfade eingetragen
Ich hätte aber gerne folgendes:
Mit der Datei screen.xls starte ich mein Makro welches mir Informationen aus der Datei input.xls zieht.
Wir haben aber sehr viele Ordner und jeder Ordner beinhaltet eine andere input.xls
Mein Wunsch wäre:
Ich kopiere meine screen.xls in einen x-beliebigen Ordner, dann wenn ich das Makro ausführe soll er mir genau die input.xls packen in der auch meine screen.xls hineinkopiert wurde.
Kann ich das in meinem Code einbauen?

Sub Analyse_input()
' Analyse_v09 Makro
' Makro am 27.09.2007 von mir aufgezeichnet
ChDir _
"H:\Analyse_Backup\2007-09-xx tests with asys\asys_Online_75_Thread\20070924 S1"
Workbooks.Open Filename:= _
"H:\Analyse_Backup\2007-09-xx tests with asys\asys_Online_75_Thread\20070924 S1\input. _
xls"
Columns("D:D").Select
Selection.NumberFormat = "hh:mm:ss.000"
Range("D2").Select
Selection.Copy
ActiveWindow.SmallScroll ToRight:=3
Range("L1").Select
ActiveSheet.Paste
Range("L1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "1:00:00 AM"
Range("L2").Select
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Windows("Screen.xls").Activate
Range("D6").Select
ActiveCell.FormulaR1C1 = "=input.xls!R2C3"
Range("D8").Select
Windows("input.xls").Activate
ActiveWindow.SmallScroll ToRight:=3
Range("M1").Select
ActiveCell.FormulaR1C1 = "=MAX(C[-7])"
Range("M2").Select
ActiveCell.FormulaR1C1 = "=MIN(C[-7])"
Range("M3").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(C[-7])"
Range("M4").Select
Windows("Screen.xls").Activate
ActiveCell.FormulaR1C1 = "=input.xls!R1C13/1000"
Range("D9").Select
ActiveCell.FormulaR1C1 = "=input.xls!R2C13/1000"
Range("D10").Select
ActiveCell.FormulaR1C1 = "=input.xls!R3C13/1000"
Range("D12").Select
ActiveCell.FormulaR1C1 = "=COUNT(input.xls!C6)"
Range("D12").Select
Selection.NumberFormat = "0"
Range("D11").Select
ActiveCell.FormulaR1C1 = ""
Windows("input.xls").Activate
Range("M6").Select
ActiveCell.FormulaR1C1 = "=MAX(C[-9])-MIN(C[-9])"
Range("M7").Select
Windows("Screen.xls").Activate
ActiveCell.FormulaR1C1 = "=input.xls!R6C13"
Range("D13").Select
Windows("input.xls").Activate
Range("L9").Select
ActiveCell.FormulaR1C1 = "=R[-8]C/R[-3]C[1]"
Range("L10").Select
Windows("Screen.xls").Activate
Windows("input.xls").Activate
Windows("Screen.xls").Activate
Range("D13").Select
Windows("input.xls").Activate
ActiveCell.FormulaR1C1 = "=COUNT(C[-6])"
Range("L11").Select
Windows("Screen.xls").Activate
ActiveCell.FormulaR1C1 = "=input.xls!R9C12*input.xls!R10C12"
Range("D13").Select
Selection.NumberFormat = "0"
Windows("input.xls").Activate
Columns("L:M").Select
Selection.Font.ColorIndex = 2
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Range("D21").Select
End Sub


15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro läuft nor mit lokaler Pfadangabe
27.09.2007 15:33:00
selli
schreibe folgendes
ChDir thisworkbook.path
Workbooks.Open Filename:= thisworkbook.path & "\input. xls"
gruß selli

AW: Makro läuft nor mit lokaler Pfadangabe
27.09.2007 15:36:22
Julia
wohin schreiben?
In mein Makro?
Als eigenes Makro?

AW: Makro läuft nor mit lokaler Pfadangabe
27.09.2007 15:38:31
Julia
Er soll die Datei nicht gleichtzeitg öffnen mit der Screen.xls
Das Makro soll die Datei so bearbeiten wie in meinem Makro
Allerdings nimmt er immer die gleiche input.xls da ja ein fester verweis in meinem Makro ist
Er soll aber die input.xls aus dem Ordner nehme aus dem ich meine screen.xls starte
Ansonsten alles gleich

AW: Makro läuft nor mit lokaler Pfadangabe
27.09.2007 16:33:00
Renee
Hallo Selli,
1. Ich finde es gut, wenn Du hier hilfst.
2. Ich find es nicht so gut, wie Du auf Kritik reagierst.
z.B. Deine Empfehlung:

ChDir thisworkbook.path
Workbooks.Open Filename:= thisworkbook.path & "\input. xls"


Kannst Du z.B. erklären warum zuerst ein Verzeichniswechsel stattfinden soll und was passiert, wenn sich Excel zur Zeit auf einem anderen Drive 'befindet', d.h. nicht demjenigen auf dem die aktive Arbeitsmappe gespeichert ist ?
Dann zu .Select und .Activate (ich weiss ich bin da ein bisschen empfindlich!): Ist etwas vom Schlimmsten, und wenn man nicht weiss, wie das zu verhindern ist (Application.Screenupdating ist keine Lösung, sondern reine Symptombekämpfung), dann wird frau/man nie effektiv progrmmieren können: Darum das hier lesen: Achtung Makrorekorder oder Wer selektiert denn da?
Dann zu Julia Code: Der funktioniert momentan meeeega gut, morgen vermutlich nicht mehr....
Jeder und jedem müsste zum Beispiel auch klar sein, dass hier mindestens 2 Zeilen überflüssig sind:


Windows("Screen.xls").Activate
Windows("input.xls").Activate
Windows("Screen.xls").Activate


hier 3:


ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1


hier 5:


ActiveCell.FormulaR1C1 = "=input.xls!R1C13/1000"
Range("D9").Select
ActiveCell.FormulaR1C1 = "=input.xls!R2C13/1000"
Range("D10").Select
ActiveCell.FormulaR1C1 = "=input.xls!R3C13/1000"


etc.
Also ein Blick und eine kurze Überarbeitung des aufgezeichneten Codes ist immer nötig
Helfen ist gut. Wenn alle davon profitieren können.
GreetZ Renee

Anzeige
AW: Makro läuft nor mit lokaler Pfadangabe
27.09.2007 16:38:00
schlechtes
Hallo Rene
danke für Deine Unterstützung, genau das wollte ich eigentlich mit meinem Beitrag ausdrücken!
Schönen Tag noch!

AW: Makro läuft nor mit lokaler Pfadangabe
27.09.2007 15:48:00
selli
so sollte dein makro in screen.xls jetzt aussehen:

Sub Analyse_input()
' Analyse_v09 Makro
' Makro am 27.09.2007 von mir aufgezeichnet
Workbooks.Open Filename:= thisworkbook.path & "\input. xls"
Columns("D:D").Select
Selection.NumberFormat = "hh:mm:ss.000"
Range("D2").Select
Selection.Copy
ActiveWindow.SmallScroll ToRight:=3
Range("L1").Select
ActiveSheet.Paste
Range("L1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "1:00:00 AM"
Range("L2").Select
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Windows("Screen.xls").Activate
Range("D6").Select
ActiveCell.FormulaR1C1 = "=input.xls!R2C3"
Range("D8").Select
Windows("input.xls").Activate
ActiveWindow.SmallScroll ToRight:=3
Range("M1").Select
ActiveCell.FormulaR1C1 = "=MAX(C[-7])"
Range("M2").Select
ActiveCell.FormulaR1C1 = "=MIN(C[-7])"
Range("M3").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(C[-7])"
Range("M4").Select
Windows("Screen.xls").Activate
ActiveCell.FormulaR1C1 = "=input.xls!R1C13/1000"
Range("D9").Select
ActiveCell.FormulaR1C1 = "=input.xls!R2C13/1000"
Range("D10").Select
ActiveCell.FormulaR1C1 = "=input.xls!R3C13/1000"
Range("D12").Select
ActiveCell.FormulaR1C1 = "=COUNT(input.xls!C6)"
Range("D12").Select
Selection.NumberFormat = "0"
Range("D11").Select
ActiveCell.FormulaR1C1 = ""
Windows("input.xls").Activate
Range("M6").Select
ActiveCell.FormulaR1C1 = "=MAX(C[-9])-MIN(C[-9])"
Range("M7").Select
Windows("Screen.xls").Activate
ActiveCell.FormulaR1C1 = "=input.xls!R6C13"
Range("D13").Select
Windows("input.xls").Activate
Range("L9").Select
ActiveCell.FormulaR1C1 = "=R[-8]C/R[-3]C[1]"
Range("L10").Select
Windows("Screen.xls").Activate
Windows("input.xls").Activate
Windows("Screen.xls").Activate
Range("D13").Select
Windows("input.xls").Activate
ActiveCell.FormulaR1C1 = "=COUNT(C[-6])"
Range("L11").Select
Windows("Screen.xls").Activate
ActiveCell.FormulaR1C1 = "=input.xls!R9C12*input.xls!R10C12"
Range("D13").Select
Selection.NumberFormat = "0"
Windows("input.xls").Activate
Columns("L:M").Select
Selection.Font.ColorIndex = 2
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Range("D21").Select
End Sub


gruß selli

Anzeige
AW: Makro läuft nor mit lokaler Pfadangabe
27.09.2007 15:52:00
schlechtes
Hallo Ihr Beiden
genau so sollte es eigentlich NICHT ausschauen, ich glaube, wir hatten das heute schon ein paarmal - von wegen SELECT etc....

attn: "schlechtes beispiel"
27.09.2007 15:55:00
selli
was erwartest DU, soll ich das makro komplett umschreiben?
ich habe nur auf die frage geantwortet.
wenn du keinen konstruktiven beitrag leisten willst, halt dich einfach raus
selli

AW: attn: "schlechtes beispiel"
27.09.2007 16:00:59
schlechtes
Hallo Selli
wäre natürlich super, wenn Du das schaffen würdest, muß aber nicht sein. Aber ein bischen effektiver zu antworten, wäre sicher sehr hilfreich. Du weißt ja - wegen des Lerneffekts!
Schönen Tag noch

Anzeige
AW: attn: "schlechtes beispiel"
27.09.2007 16:06:00
selli
das forum wäre um einiges effektiver, wenn es weniger beiträge von deiner sorte gäbe. dann könnte man sich effektiver mit effektiven fragen auseinandersetzen und müsste nicht effektiv auf auneffetive zwischenrufe antworten.
war das effektiv genug?
selli

Bildschirmflackern ?
27.09.2007 15:53:14
selli
habe mir dein makro mal genauer angesehen. das muss deinen bildschirm ja an den rande der verzweiflung bringen.
setze an den anfang deines makros folgende zeile:
Application.ScreenUpdating = False
und ans ende:
Application.ScreenUpdating = True
dann klappts auch mit dem Bildschirm
gruß selli

Anzeige
AW: Bildschirmflackern ?
27.09.2007 16:04:34
Julia
Klappt megaaaaaaaaaaaaaaa gut
Vielen vielen DANK
:-)

Habe den Code Deines Makros optimiert
27.09.2007 17:49:00
NoNet
Hallo Julia,
ich habe das, was selli und "schlechtes Beispiel" diskutiert haben, mal umgesetzt, somit wird der Code wohl um einiges verständlicher :


Sub Analyse_input_2()
    'Makro umstrukturiert von NoNet, 27.09.2007
    Dim wbInput As Worksheet 'Variable für "Input"-Mappe
    Dim wbScreen As Worksheet 'Variable für "Screen"-Mappe
    'Variablen mit den Mappen belegen :
    Set wbScreen = Workbooks("Screen.xls") 'Muss bereits geöffnet sein !
    Set wbInput = Workbooks.Open(Filename:=ThisWorkbook.Path & "\input. xls")
    With wbScreen.ActiveSheet
        .Range("D6").FormulaR1C1 = "=" & wbInput.Name & "!R2C3"
        .Range("D8").FormulaR1C1 = "=" & wbInput.Name & "!R1C13/1000"
        .Range("D9").FormulaR1C1 = "=" & wbInput.Name & "!R2C13/1000"
        .Range("D10").FormulaR1C1 = "=" & wbInput.Name & "!R3C13/1000"
        .Range("D11").FormulaR1C1 = "=" & wbInput.Name & "!R6C13"
        .Range("D12").FormulaR1C1 = "=COUNT(" & wbInput.Name & "!C6)"
        .Range("D12").NumberFormat = "0"
        .Range("D13").FormulaR1C1 = "=" & wbInput.Name & "!R9C12*" & wbInput.Name & "!R10C12"
        .Range("D13").NumberFormat = "0"
    End With
    With wbInput.ActiveSheet
        .Columns("D:D").NumberFormat = "hh:mm:ss.000"
        .Range("D2").Copy Range("L1")
        .Range("L1").Value = "1:00:00 AM"
        .Range("M1").FormulaR1C1 = "=MAX(C[-7])"
        .Range("M2").FormulaR1C1 = "=MIN(C[-7])"
        .Range("M3").FormulaR1C1 = "=AVERAGE(C[-7])"
        .Range("M6").FormulaR1C1 = "=MAX(C[-9])-MIN(C[-9])"
        .Range("L9").FormulaR1C1 = "=R[-8]C/R[-3]C[1]"
        .Range("L10").FormulaR1C1 = "=COUNT(C[-6])"
        .Columns("L:M").Font.ColorIndex = 2
        .Range("A1").Select
    End With
    ActiveWorkbook.Save
    ActiveWindow.Close
    Range("D21").Select
End Sub

Mangels pasender Dateien konnte ich das allerdings noch nicht testen, starte das Makro daher bitte zunächst an einer Kopie Deiner Mappen und überprüfe, ob er den gewünschten Vorstellungen entspricht !
Gruß, NoNet

Anzeige
OT: Nanu, nana, NoNet,...
28.09.2007 04:43:11
Luc:-?
...grüß dich,
hier im Exil... ;-) ("weiße bescheid"!)
...und dann FormulaR1C1? Das wird aber von den VBA-Machern nicht als Standard betrachtet... ;-)
Gruß Luc[ius] :-?
PS: Ist dein ArbZimmer inzwischen OK? ;-)

AW: OT: Nanu, nana, NoNet,...
28.09.2007 10:48:00
Julia
With wbScreen.ActiveSheet
da meckert er

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige