Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA geöffnete Workbooks
#1
Hallo,

ich lese in meiner Tabelle alle geöffneten Excelfiles und kontrolliere in welcher Excel die richtigen Werte stehen.
Diese Tabelle verwende ich dann.(Temp)

Code:
For Each Temp In Workbooks
       If Temp.Sheets(1).Range("A20").Text = "XY" Then     'Wenn richtige Version der Excel
           If Temp.Sheets(1).Range("A21").Text = "AB" Then              'Wenn richtig
               Set PartFamily = Temp
               Exit For
           End If
       End If
   Next Temp

Funktioniert gut solange ich Excel normal vom PC Speicherort öffne.
Öffne ich hingegen eine Tabelle aus einem Programm heraus wo die Excel nicht bei mir gespeichert ist wird diese erst gar nicht in den Workbooks aufgelistet .
Sprich in der VBA Oberfläche scheint diese nicht auf. Bzw. ich habe dann 2 VBA Fenster nebeneinander die nicht auf die jeweils andere Tabelle zugreifen können.

Kann ich dann trotzdem die Tabelle irgendwie einlesen?


liebe Grüße
Antworten Top
#2
Hallo,

wenn ich das jetzt richtig verstehe, hast Du dann zwei unabhängige Instanzen von Excel, die nichts voneinander wissen.
Um von einer Instanz auf eine andere per VBA zugreifen zu können, kommst Du m.W. um Windows API nicht herum.

Wie sowas geht, kannst Du z.B. hier nachlesen Excel VBA Application Objekte per Windows API erzeugen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#3
(09.04.2018, 17:08)maninweb schrieb: Hallo,

wenn ich das jetzt richtig verstehe, hast Du dann zwei unabhängige Instanzen von Excel, die nichts voneinander wissen.
Um von einer Instanz auf eine andere per VBA zugreifen zu können, kommst Du m.W. um Windows API nicht herum.

Wie sowas geht, kannst Du z.B. hier nachlesen Excel VBA Application Objekte per Windows API erzeugen.

Gruß

Hi,
ja genau das ist mein Problem =(
habe bemerkt dass es ein Häkchen gibt welches verhindert das beide in der selben Instanz geöffnet werden.
Aber ich kann dies in der Tabelle nicht ändern. Es wird automatisch generiert.

Leider werde ich aus dem Artikel nicht schlau muss mich da nochmals durchlesen.

:) Danke für die Hilfe!!
Antworten Top
#4
Hallo Topology,


Vollzitate sind zu 99% unnötig, vor allem dann, wenn sich die Antwort auf einen unmittelbar davorstehenden Beitrag bezieht. Notwendige (Teil)Zitate können durch kopieren des entsprechenden Textbereichs in Verbindung mit dem 3. Symbol von rechts in der zweiten Symbolleiste erreicht werden.
Für normale Antworten bitte den Antworten-Button (rechts) benutzen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#5
Hallo,

hat jemand eine Idee wie man das sonst noch lösen könnte, 

oder geht das wirklich nur mit diesem Code der bereits gepostet wurde?


liebe Grüße,
Antworten Top
#6
Hallo,

in einem vorherigen Beitrag hattest Du ein Kästchen erwähnt, welches sich nicht aktivieren/deaktivieren lässt.
Da könntest Du ggf. ansetzen, z.B. ggf. einen Admin fragen (falls Du in einem Unternehmen bist), ob sich
die Sperre nicht aufheben lässt. Bzw. recherchieren, warum dieses gesperrt ist, z.B. Anbieter fragen.

Ansonsten sehe ich meinerseits nur die Möglichkeit, die durch das Tool geöffnete Datei abzuspeichern,
zu schließen und in der anderen Instanz zu öffnen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#7
Hallo maninweb,

Werde nächste Woche mit dem Anbieter und unserem Admin sprechen.
Vielleicht lässt sich da was machen:) danke für die Hilfe

habe diesen Code gefunden, leider gibt mir dieser Code eine Fehlermeldung bei Set WbExtWB
Code:
   Dim wbAktWB As Workbook, wbExtWB As Workbook
   Dim xlApp As Excel.Application

   Set wbAktWB = ActiveWorkbook                    'Die aktuelle Mappe
   Set xlApp = GetObject(, "Excel.Application")    'die andere Instanz
   Set wbExtWB = xlApp.Workbooks(1)                'die 1. Mappe der anderen Instanz


Huh
Antworten Top
#8
Hallöchen,

welche Meldung kommt denn da?

Unabhängig davon wäre es auch unklar, auf welche Instanz da

Set xlApp = GetObject(, "Excel.Application") 'die andere Instanz

eigentlich zugegriffen wird. Theoretisch sehe ich da zwei Möglichkeiten. entweder die naheliegende, also die, aus der der Code aufgerufen wird, oder die in der Prozessliste zuerst aufgerufene. Womit wir wieder bei den API wären, wo Du z.B. anhand des Fenstertitels differenzieren kannst.

Warum tust Du eigentlich Deine Datei nicht in der vom anderen Programm erzeugten Instanz öffnen?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
Hallo,

auch ich frage mich, warum du nicht deine Datei mit der Instanz, die vom anderen Programm erzeugt wurde, öffnest.
Ansonsten fallen mir noch zwei weitere Möglichkeiten ein, deren Sinnhaftigkeit aber von deinem gesamten Workflow abhängt:
a) Zum einen könntest du den VBA-Code in einem AddIn haben. Das AddIn wird in jeder Instanz geöffnet - und damit steht der Code zur Verfügung.
b) Programme, die eine Exceldatei erzeugen, können meist auch andere Exportformate erzeugen. Vielleicht wäre es einfacher, den Export z.B. als csv Datei zu speichern und dann mit VBA auf diese zuzugreifen.

Grüße, Ulrich
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste