Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
932to936
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
932to936
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Provi gesuch der helfen kann

Provi gesuch der helfen kann
07.12.2007 18:17:00
Wild
Hollo Excel/VBA Provis
Mein erstes Problem:
Ich habe da eine Tabelle auf der ich ca. 30 Command Button's habe die mir jeweils eine ganz bestimmte Arbeitsmappe öffnen. Diese Mappe wird dann hinter der offenen Tabelle gehallten.
Das dumme daran ist das zwar alle Arbeitsmappen in verschiedenen Ordnern untergebracht sind aber schlussendlich alle den gleichen Namen tragen. Nämlich "Daten". Nun das wäre nicht schlimm, denn es darf sowiso immer nur eine Datenmappe offen sein. Wenn ich nun aber abgelenkt werde und aus Versehen noch einmal einen Button drücke bringt mir Excel logischerweise eine Meldung das 2 Mappen mit demselben Namen geöffnet werden sollen und das geht ja nicht.
Ich bräuchte nun einen Code der mir nach dem drücken eines Button's zuerst prüft ob eine Mappe Namens "Daten" bereits geöffnet ist oder nicht. Ist bereits eine Mappe offen so soll auf eine Userform verwiesen werden mit der ich abbrechen kann. Die Userform habe ich bereits kreiert. Ist keine Mappe Namens "Daten"offen so kann normal weiterverfahren werden.
Hier der Cod der hinter dem Button hinterlegt ist.
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\Rolf u.Sonya\Eigene Dateien\VBZ\VBZ 2007\9101\Daten\Daten.xls"
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("01").Select
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets(Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", _
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25")).Select
Sheets("01").Activate
Sheets(Array("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")).Select Replace _
:=False
Sheets(Array("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")).Select Replace _
:=False
Sheets(Array("76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", _
"89", "90", "91")).Select Replace:=False
Cells.Select
Selection.Rows.AutoFit
Range("A1").Select
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets(Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", _
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25")).Select
Sheets("01").Activate
Sheets(Array("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")).Select Replace _
:=False
Sheets(Array("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")).Select Replace _
:=False
Sheets(Array("76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", _
"89", "90", "91")).Select Replace:=False
Sheets("01").Select
ActiveWorkbook.Save
Windows("Drucken.xls").Activate
End Sub


Wobei Drucken.xls die Tabelle ist auf der die Button's anzutreffen sind.
Mein zweites Problem:
Auf eben dieser Tabelle Namens Drucken existieren noch 135 weitere Button's die mir jeweils eine ganz bestimmte Tabelle aus der Mappe Daten auswählen, zum Drucken vorbereiten und dann auf eine weitere Userform verweisen.
Ist hier nun keine Mappe "Daten" offen so kommt unweigerlich die Meldung zum Debuggen.
Hier bräuchte ich ebenfalls einen Code der mir prüft ob die Mappe Daten offen ist oder nicht.
Ist sie offen so kann der Code weiter abgearbeitet werden. Ist sie nicht offen so soll wieder auf meine Userform verwiesen werden damit ich abbrechen kann.
Hier noch ein Code der das Drucken vorbereitet.


Sub Makro6020()
Windows("Daten.XLS").Activate
Range("A1:V34").Select
Sheets("20").Select
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.275590551181102)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0.275590551181102)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0.078740157480315)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = True
.PrintNotes = False
'.Druckqualität = 300
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA5
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 80
frmDruckmenü.Show
End With
Windows("Drucken.XLS").Activate
End Sub


Vielen herzlichen Dank für eure Bemühungen schon im voraus
MfG Wild Rolf

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Provi gesuch der helfen kann
07.12.2007 18:38:00
Wild
Ups
Selbstverständlich seit ihr Profis und nicht Provis wie ich in meinem Beitrag geschrieben habe.
Tschuldigung an alle echten Profis.
MfG Wild Rolf

AW: Provi gesuch der helfen kann
07.12.2007 19:25:32
Ramses
Hallo
Problem 1
Ist nicht getestet, sollte aber eigentlich funktionieren
Option Explicit

Sub Check_Daten()
    'An den Anfang deines Codes
    'oder mti: Call Check_Daten aus deinem bisherigen
    'Makro in der ersten Zeile aufrufen
    Dim myWb As Workbook, QE As Integer
    For Each myWb In Application.Workbooks
        If UCase(myWb.Name) = "DATEN.XLS" Then
            QE = MsgBox("Eine Datei mit dem Namen ist bereits offen." & _
            "OK = Geöffnete Datei schliessen und andere Datei öffnen" & _
            "Abbrechen = Weitere Ausführung abbrechen", _
            vbOKCancel + vbCritical, "DATEN.XLS bereits geöffnet")
            If QE = vbCancel Then
                MsgBox "Makro abgebrochen"
                'Wenn am Anfang des Codes dann diese Zeile
                Exit Sub
                'Wenn als externes Makro aufgerufen dann diese Zeile
                'End
            End If
        End If
    Next
    'Hier kommt dan dein anderer Code
    'wenn du es in jeden deiner Commandbuttons einbaust
End Sub

Problem 2
Nimm den oberen Code und wandle in entsprechend ab: Prüfung ob Datei offen dann exit sub
Gruss Rainer

Anzeige
AW: Provi gesuch der helfen kann
07.12.2007 20:32:00
Wild
Hallo Rainer
Dein Code funktioniert soweit sehr gut.
Bei Abbrechen läuft's rund.
Bei OK müsste doch noch irgendwo der Befehl
Windows("Daten.XLS").Activate
ActiveWindow.Close (False)
eingebaut werden?
Jetzt geht der Ablauf genau an den Anfang meines Code's und will die Mappe öffnen obschon sie ja noch offen ist.
Hier dein Code und mein Code zusammengefügt.
Habe wegen der Uebersicht meinen kleinsten Code genommen

Sub DruckmodusStarten8501()
'An den Anfang deines Codes
'oder mti: Call Check_Daten aus deinem bisherigen
'Makro in der ersten Zeile aufrufen
Dim myWb As Workbook, QE As Integer
For Each myWb In Application.Workbooks
If UCase(myWb.Name) = "DATEN.XLS" Then
QE = MsgBox("Eine Datei mit dem Namen ist bereits offen." & _
"   OK = Geöffnete Datei schliessen und andere Datei öffnen" & _
"   Abbrechen = Weitere Ausführung abbrechen", _
vbOKCancel + vbCritical, "DATEN.XLS bereits geöffnet")
If QE = vbCancel Then
MsgBox "Makro abgebrochen"
'Wenn am Anfang des Codes dann diese Zeile
Exit Sub
'Wenn als externes Makro aufgerufen dann diese Zeile
'End
End If
End If
Next
ChDir "C:\Dokumente und Einstellungen\Rolf u.Sonya\Eigene Dateien\VBZ\VBZ 2007\8501\Daten"
Workbooks.Open Filename:="Daten.XLS"
Sheets(Array("01", "02", "03", "04")).Select Replace:=False
Sheets("01").Activate
Calculate
Cells.Select
Selection.Rows.AutoFit
Range("A1").Select
Sheets("01").Select
Windows("Drucken.XLS").Activate
End Sub


Gruss Rolf

Anzeige
AW: Provi gesuch der helfen kann
07.12.2007 21:36:35
Wild
Hallo Rainer
Ich habe selber rausgefunden wo die 2 Zeilen hin müssen.
Habe sie zwischen die beiden End If gepackt nun läuft alles so wie ich es gerne habe.
Beim 2. Problem wäre ich dir dankbar wenn du mir zeigen könntest wo genau ich deinen Code abändern muss. Ich schnalls nicht.
Vielen herzlichen Dank
Gruss Rolf

Profi gesucht, der helfen kann! ...
07.12.2007 22:40:00
Luc:-?
...orT ;-?

AW: Profi gesucht, der helfen kann! ...
08.12.2007 17:46:00
Wild
Hallo Luc:-?
Bin erst seit kurzem in diesem Forum, ja überhaupt in einem Forum.
Könntest du mir dein Kürtzel bitte erklären, ich bin da noch nicht so auf der Höhe.
Reiner hat mir sehr gut geholfen aber bei meinem Problem ist erst der 1. Teil gelösst.
Klar wenn ich die Lösung meines 2. Problem's sehe werde ich mir an den Kopf langen, aber im Moment machts einfach noch nicht KLICK!
Fals du mir helfen könntest danke ich dir schon recht herzlich
Mit besten Grüssen
Rolf Wild

Anzeige
Das sollte eigentlich nur endlich...
10.12.2007 03:18:34
Luc:-?
...deinen Betreff korrigieren, nachdem du das ja selber gleich bemerkt, aber in der Folge doch nichts dagegen unternommen hast... ;-) Da ich sonst nichts Thema-Relevantes geschrieben hatte, habe ich es mit ohnerelevantenText gekennzeichnet...
Leider hat Ramses doch wieder mit dem fehlerhaften Titel fortgesetzt..., ist zu deiner Frage aber sicher kompetenter als ich.

AW: Provi gesuch der helfen kann
09.12.2007 10:07:00
Ramses
Hallo
"...Bei OK müsste doch noch irgendwo der Befehl
Windows("Daten.XLS").Activate
ActiveWindow.Close (False)
eingebaut werden?..."
Das war nicht Teil deiner Frage, dass die Datei dann aktiviert werden muss.
If UCase(myWb.Name) = "DATEN.XLS" Then
QE = MsgBox("Eine Datei mit dem Namen ist bereits offen." & _
" OK = Geöffnete Datei schliessen und andere Datei öffnen" & _
" Abbrechen = Weitere Ausführung abbrechen", _
vbOKCancel + vbCritical, "DATEN.XLS bereits geöffnet")
If QE = vbCancel Then
MsgBox "Makro abgebrochen"
'Wenn am Anfang des Codes dann diese Zeile
Exit Sub
'Wenn als externes Makro aufgerufen dann diese Zeile
'End
End If
Else
Windows("Daten.XLS").Activate
ActiveWindow.Close (False)

End If
Gruss Rainer
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige