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

Excel Fenster ausblenden mit wHandle

Excel Fenster ausblenden mit wHandle
23.06.2008 07:51:00
chris
Hallo und guten morgen VBA experten,
habe heute wieder einmal eine frage zum ausblenden von "Windows"Fenstern
Ich habe eine Datei.Mit dieser Datei greife ich über eine userform auf Daten einer anderen Arbeitsmappe zu.Diese anderen Arbeitsmappen sind Freigegeben und geschützt so das der User selbst die größe nicht verändern darf.
die größe habe ich so vergeben das mann in der "Datenbank" selbst nichts sehen kann also keine Daten.
Jetzt möchte ich aber gerne noch dieses datenbank Fenster also die Exceldatei ausblenden.
Das geht aber nicht so einfach weil die Datei ja geschützt ist und Freigegeben.
Habe mir jetzt überlegt die datei per API schliesen zu lassen. So das also das fenster Handle geschlossen wird.
Set Obj_Datenbank_O = Workbooks.Open(PfadDatenbank_O, False, , , "dbpass", "dbpass") '(Datenbank öffnen mit Passwort)
Set Obj_Datenbank_U = Workbooks.Open(PfadDatenbank_U, False, , , "dbpass", "dbpass") '(Datenbank öffnen mit Passwort)
Hier öffne ich meine beiden datenbanken.Wie bekomme ich jetzt für diese beiden fenster den Windowshandle heraus ?
und wäre es dann möglich diese beiden Datenbanken auszublenden ? Hier ist der code mit dem ich mir vorstelle die Datenbanken auszublenden.
Würde mich sehr freuen wenn mir jemand von euch helfen könnte.Dafür im vorraus schon einmal vielen dank !
Hier der oder die code schnipsel die ich habe mit denen das gehen sollte.Nur wie weiß ich leider nichT :(
Dim hWnd As Long, A As Long
Dim Titel$, Result$
'Mit dem code müsste ich rigendwie an die windows handle herankommen ?
hWnd = GetDesktopWindow()
hWnd = GetWindow(hWnd, GW_CHILD)
'Und hiermit sollte das ausblenden gehen ?Nur eben nicht wie in dem Beispiel mit dem rechner sondern mit der aktuell geöffneten Datenbank.
Private Const SW_HIDE = 0
Private Const SW_SHOW = 5

Sub Ausblenden()
wHandle = FindWindow(vbNullString, "Rechner")
lResult = ShowWindow(wHandle, SW_HIDE)
End Sub


Vielen Dank für eure Hilfe
gruß Chris

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Fenster ausblenden mit wHandle
23.06.2008 08:25:00
chris
Hallo zusammen,
nach einem versuch mit einer anderen möglichkeit habe ich es doch irgendwie geschafft das es mir die geschützte neuen Mappen ausblendet.Und auch das einblenden nicht mehr möglich ist.
Hier ist mein versuch.das was mir nicht so gut gefällt ist das ich das passowort mit sendkeys übergeben muss aber vielleicht hat jemand hier noch eine andere möglichkeit.Würde mich über Antworten trotzdem imme rnoch sehr freuen deshalb lasse ich noch einmal offen.
Danke
Hier mein Ansatz:
Set x = Workbooks.Open("db1.xls", , True, , "dbpass", "dbpass")
SendKeys "dbpass"
SendKeys "{ENTER}"
Windows(x.Name).Visible = False

Anzeige
AW: Excel Fenster ausblenden mit wHandle
23.06.2008 09:04:44
Tino
Hallo Chris,
hier mal zwei Möglichkeiten, wobei ich die zweite bevorzugen würde, da es in der ersten zu unerwünschten Effekten kommen kann, da die Mappe nicht in einer eigenen Instanz geöffnet wird.

Sub test()
Dim x As Workbook
Set x = Workbooks.Open("db1.xls", , True, , "dbpass", "dbpass")
Application.Visible = False
End sub


'Oder


Sub Test2()
Dim myXL As Object, strPfad$
Set myXL = CreateObject(Class:="Excel.Application")
strPfad = "db1.xls"
myXL.Workbooks.Open strPfad, , True, , "dbpass", "dbpass"
myXL.WindowState = xlMinimized
myXL.Visible = False
Set myXL = Nothing
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Excel Fenster ausblenden mit wHandle
23.06.2008 09:56:00
chris
Hallo Tino,
vielen Dank für deine Antwort.
Aber leider klapt das nicht so wie ich es brauche.
Ist zwar super aber ich weiß nicht wie ich es so umsetzten kann das es läuft.
Kannst du mir noch einmal helfen ?
Ich benötige es etwa so weil ich die variable Obj_Datenbank_O und Obj_Datenbank_U öfters im code benötige weil ich darüber auf Zellen der workbooks zugreifen muss.
Set Obj_Datenbank_O = CreateObject(Class:="Excel.Application")
Set Obj_Datenbank_O = Workbooks.Open(PfadDatenbank_Oracle, False, , , "dbpass", "dbpass") '(Datenbank öffnen mit Passwort)
'Obj_Datenbank_Oracle.WindowState = xlMinimized
Windows(Obj_Datenbank_Oracle.Name).Visible = False

Anzeige
AW: Excel Fenster ausblenden mit wHandle
23.06.2008 10:27:34
Tino
Hallo,
mein VBA Level ist zwar nicht so hoch wie Deiner ;-), aber so kannst Du doch die Tabelle ansprechen.
Benötigst Du diese nur in einer Sub.

Sub Test2()
Dim myXL As Object
Dim strPfad$
Set myXL = CreateObject(Class:="Excel.Application")
strPfad = "db1.xls"
myXL.Workbooks.Open strPfad, , True, , "dbpass", "dbpass"
myXL.WindowState = xlMinimized
myXL.Visible = False
Range("A1").Value = myXL.Sheets(1).Range("A1").Value
End Sub


Benötigst Du diese in einem Modul.


Dim myXL As Object
Sub Test2()
Dim strPfad$
Set myXL = CreateObject(Class:="Excel.Application")
strPfad = "db1.xls"
myXL.Workbooks.Open strPfad, , True, , "dbpass", "dbpass"
myXL.WindowState = xlMinimized
myXL.Visible = False
Range("A1").Value = myXL.Sheets(1).Range("A1").Value
End Sub


Benötigst Du diese auch in einem anderen Modul oder Tabellenblatt oder Userform


Public myXL As Object
Sub Test2()
Dim strPfad$
Set myXL = CreateObject(Class:="Excel.Application")
strPfad = "db1.xls"
myXL.Workbooks.Open strPfad, , True, , "dbpass", "dbpass"
myXL.WindowState = xlMinimized
myXL.Visible = False
Range("A1").Value = myXL.Sheets(1).Range("A1").Value
End Sub


Vergiss aber nicht die Tabelle irgendwann auch wieder zu schließen.
In etwa so:
myXL.ActiveWorkbook.Save
myXL.ActiveWorkbook.Close
Set myXL = Nothing
Gruß Tino

www.VBA-Excel.de


Anzeige
AW: fehler :(
23.06.2008 11:04:26
chris
Hallo Tino,
bei mir klappt das nicht ;:((
Bitte hilf mir.
Ich habe es so und hier kommt immer der fehler.
habe dir hier mal meine coden code zum teil eingefügt..
Modul1
Set Obj_Datenbank_User = CreateObject(Class:="Excel.Application")
Obj_Datenbank_User.Workbooks.Open PfadDatenbank_User, , True, , "dbpass", "dbpass"
Obj_Datenbank_User.WindowState = xlMinimized
Obj_Datenbank_User.Visible = False
Modul2:
Public Obj_Datenbank_Oracle As Object
Public Obj_Datenbank_User As Object
Dim vntArray
'hier kommt immer der Fehler:
vntArray = Range(Obj_Datenbank_User.Sheets(1).Cells(2, 1), Obj_Datenbank_User.Sheets(1).Cells(Obj_Datenbank_User.Sheets(1).Rows.Count, 1).End(xlUp))
Was ist da nicht OK ?
danke für die Hilfe an alle !°

Anzeige
AW: fehler :(
23.06.2008 11:15:47
Tino
Hallo,
bei allem was sich auf diese Datei bezieht, musst du auch dies als Objekt voranstellen.
Kann es leider nicht Testen da ich die Tabellen in der Form nicht nachbauen möchte.
Aber so in etwa:

vntArray = _
Obj_Datenbank_User.Range(Obj_Datenbank_User.Sheets(1).Cells(2, 1), _
Obj_Datenbank_User.Sheets(1).Cells( _
Obj_Datenbank_User.Sheets(1).Rows.Count, 1).End(xlUp))


Gruß Tino

www.VBA-Excel.de


AW: fehler :(
23.06.2008 11:25:03
chris
Hallo Danke.
ich habe jetzt das so gebaut.
Obj_Datenbank_User.Close False
neu:
Obj_Datenbank_User.ActiveWorkbook.Close False
Also vor allem was kommt habe ich immer "ActiveWorkbook" geschrieben.
ich denke das müsste ja überall und immer stimmen weil in z.b "Obj_Datenbank_User"
immer nur dieses eine Workbook existiert oder ?
Danke vielmals für deine Hilfe noch einmal !.

Anzeige
AW: fehler :(
23.06.2008 11:42:00
Tino
Hallo,
sollte eigentlich funktionieren.
Bei großen Codeteilen, wo oft dieses Objekt zum Einsatz kommt, kannst du es auch so schreiben.

With Obj_Datenbank_User
.ActiveWorkbook.Close False
End With


Gruß Tino

www.VBA-Excel.de


AW: nicht möglich (zeit dauer) bitte um Hilfe
23.06.2008 13:18:00
chris
Hallo Tino,
hatte es gerade so umgebaut das es funktioniert hat.
Nur leider kann ich es so doch nicht verwenden.Nachdem ich es vorgestellt habe ist uns aufgefallen das das laden und lesen aus der geöffneten Datenbank sehr viel länger dauert als wenn ich es nicht als Object öffne.
Deshalb frage ich noch einmal ob es möglich ist das ganze einfach über handel auszublenden das das ganze object ausgeblendet ist.
geht das ?
Danke

Anzeige
AW: nicht möglich (zeit dauer) bitte um Hilfe
23.06.2008 13:33:15
Tino
Hallo,
bin auf der Mittagschicht, schreibe vom Pocket.
Also vorstellen kann ich es mir nicht, dass es langsamer ist.
Vieleicht hast du irgend welche fehler noch im code

AW: nicht möglich (zeit dauer) bitte um Hilfe
23.06.2008 17:28:05
Tino
Hallo,
eine weitere möglichkeit besteht darin die datenbank nach access umzubauen und diese abzufragen.
Gruß Tino

AW: nicht möglich (zeit dauer) bitte um Hilfe
23.06.2008 19:26:00
Chris
Das kann ich nicht.
Tino ich weiß das ist etwas viel verlangt.
Aber würdest du mir ein kleines beispiel erstellen das ich auch durchblicke ?
Also einfach in excel eine userform mit z.b 4 textfeldern und dann dazu die abfrage in access das ich untereinander daten eintragen kann und auch wieder auslesen kann mit suche. wäre super.
Wenn nicht trotzdem vielen Dank !!!
gruß Chris

Anzeige
AW: nicht möglich (zeit dauer) bitte um Hilfe
23.06.2008 23:03:00
Tino
Hallo,
die Tabellen die ich gemacht habe, kann ich leider nicht veröffentlichen und ein
Beispiel zu erstellen ist mir ehrlich gesagt jetzt zu aufwendig.
Google doch mal da findest du bestimmt viele Code- Beispiel, vielleicht hat auch einer hier
ein fertiges Beispiel für Dich.
Aber noch mal zu der anderen Sache, kann mir einfach nicht vorstellen, dass es um so viel langsamer ist.
Eventuell musst du die Bildschirmaktualisierung noch abstellen, verwendest Du Select oder Aktivate in Deinem Code usw…
Gruß Tino

http://www.VBA-Excel.de


Anzeige
AW: nicht möglich (zeit dauer) bitte um Hilfe
24.06.2008 05:40:00
Chris
Nein verwende ich nicht.
Schade.Vielleicht kannst du deinen code etwas abspecken ?
Wenn nicht trotzdem danke für deine Hilfe !!! schönen Tag !

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige