Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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
Inhaltsverzeichnis

Application visible False nur für aktive Mappe

Application visible False nur für aktive Mappe
19.03.2018 20:40:06
Heinz
Hallo zusammen, ich hoffe mir kann jemand helfen.
Im Moment öffne ich meine Arbeitsmappe mit folgendem Makro.
Userform1.show
Application.Visible = false
Klappt auch wunderbar so wie ich das haben möchte. Es wird nur die Userform dargestellt Das Problem
was ich habe ist das er bereits geöffnete excel Dateien ebenfalls auf visible setzt.
Wie kann man denn gezielt nur die eine Arbeitsmapoe mit der Userform ansprechen.
Liebe Grüße Heinz

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application visible False nur für aktive Mappe
19.03.2018 20:50:21
Werner
Hallo Heinz,
versuch doch mal
ThisWorkbook.Visible = False

Gruß Werner
AW: Application visible False nur für aktive Mappe
19.03.2018 21:13:28
Heinz
Hallo Werner Danke für die Antwort.
Leider klappt das nicht ich bekomme einen laufzeitfehler wenn bereits eine andere Datei offen ist. Wenn ich sie alleine aufmache funktioniert es nur leider hilft mir das nicht.
Gruß Heinz
AW: Application visible False nur für aktive Mappe
19.03.2018 23:50:53
Peter(silie)
Hallo,
hier ein bisschen Code:

Sub HideMe()
Dim xlApp As Object
Set xlApp = ThisWorkbook.Parent
xlApp.Visible = False
ThisWorkbook.Windows(1).Visible = False
UserForm1.Show
End Sub
Und hier in der UserForm bei einem Button z.B.

Private Sub CommandButton1_Click()
Dim xlApp As Object
Set xlApp = ThisWorkbook.Parent
xlApp.Visible = True
ThisWorkbook.Windows(1).Visible = True
Unload Me
End Sub

Anzeige
Nachtrag
19.03.2018 23:55:53
Peter(silie)
Sollte der Code nicht funktionieren,
dann musst du wahrscheinlich auf Windows API Funktionen zurückgreifen und
prüfen ob sich der Window Handler verändert hat usw.
Wenn dir WinAPI zu hoch ist und du es so gar nicht verstehst, rate ich eher davon ab.
WinAPI Funktionen können viele Fehler hervorrufen und es muss auf Kompatibilität geachtet werden.
Das Application Objekt hat allerdings den vorteil dass es dir den Window Handler zurückgibt durch
Application.hWnd was durchaus hilfreich und praktisch ist und dir evtl ein oder zwei WinAPI Funktionen spart.
AW: Nachtrag
20.03.2018 11:53:13
Heinz
Hallo Peter danke für deine Mühe.
Leider lässt dein Code ebenfalls eine bereits geöffnet datei verschwinden.
Mit WinApi habe ich überhaupt keine Erfahrung. Gibt es darin Beispiel?
Ich finde es trotzdem komisch wenn ich mehrere excel Dateien offen habe kann ich doch auch eine in die taskleiste schieben und die anderen bleiben offen.
Anzeige
AW: Nachtrag
20.03.2018 14:08:23
Peter(silie)
Hallo,
das Application Objekt von Word kennt kein hWnd,
aber ein einzelnes Fenster schon.
Somit könntest du folgenden Code ausprobieren:

Option Explicit
Private Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Long) _
As Long
Public Function CloseWordWindow(ByRef wApp As Word.Application, _
ByVal hwndName As String) As Boolean
Dim hwnd    As Long
Dim wWin    As Long
'falls es offene fenster gibt in der applikation
If wApp.Windows.count > 0 Then
'durchlaufe alle
For wWin = 1 To wApp.Windows.count
'falls der fenster titel richtig ist dann
If wApp.Windows(wWin).Caption = hwndName Then
'hole dir den pointer zu diesem fenster
hwnd = wApp.Windows(wWin).hwnd
'schließe fenster
SendMessage hwnd, &H10, 0&, 0&
CloseWordWindow = True
Exit Function
End If
Next wWin
End If
End Function
Public Sub Test()
Dim wApp    As Word.Application
Dim wFile   As Word.Document
Dim pName   As String
'Der pfad + dateiname einer word datei
pName = "pfad zu einer word datei"
'erstelle neues word objekt
Set wApp = New Word.Application
'öffne die datei
Set wFile = wApp.Documents.Open(pName)
'Do Stuff
'rufe Function auf, übergebe das Word Objekt und den namen des Dateifensters
If CloseWordWindow(wApp, wFile.Windows(1).Caption) Then
MsgBox "Word Window closed"
End If
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige