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.

Zelleneigenschaft ohne Dateiöffnen lesen
#1
Hallo liebes Forum !

Ich würde wieder Eure geschätzte Hilfe benötigen.
Ich möchte aus einer geschlossenen Datei die Zellenfarben von 3 Zellen abfragen, um das zeitraubende Öffnen zu vermeiden:

    If Sheets("Dezember").Range("H50").Interior.ColorIndex = 15 Or _

       Sheets("Dezember").Range("H51").Interior.ColorIndex = 15 Or _
       Sheets("Dezember").Range("H49").Interior.ColorIndex = 15 Then......

Ich hatte schon einmal von Berverly einen Code für die Datenabfrage aus einer geschlossenen Datei, hier wurden die Werte aber dann in eine Tabelle übernommen, was ja hier nicht der Fall ist.

Hat jemand eine Idee ?
Ich bedanke mich im Voraus.

Liebe Grüße aus Innsbruck
Helmut
Antworten Top
#2
Hallo,

Code:
Dim Quelle as Object
Set Quelle = GetObject("Pfad zur Datei")
If Quelle.Sheets("Dezember").Range("H50").Interior.ColorIndex ) = 15 then ...
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • heli
Antworten Top
#3
Hallo Steuerfuzzi !

Vielen Dank für Deine Hilfe.

Liebe Grüße
Helmut
Antworten Top
#4
Hallo Steuerfuzzi !

Leider funktioniert der Code nicht ganz, bzw. mit Hindernissen.

Code:
Dim Quelle As Object, pathName As String

pathName = strPath & strFileName

Set Quelle = GetObject(pathName)

   If Quelle.Sheets("Dezember").Range("H50").Interior.ColorIndex = 15 Or _
      Quelle.Sheets("Dezember").Range("H51").Interior.ColorIndex = 15 Or _
      Quelle.Sheets("Dezember").Range("H49").Interior.ColorIndex = 15 Then
GoTo nextStep
    End If



Das Problem ist, dass mit dem ersten Starten des Codes dieser bis "Set Quelle=GetObject(pathName)" läuft, dann das "VBAProject"(strFileName )"  öffnet (nicht aber die Datei selbst!) und eine Fehlermeldung bringt.
Nach Abbrechen des Makros und einem zweiten Start funktioniert es. Bei der nächsten Datei ist aber wieder das gleiche Problem.

Wenn also das "VBAProject" nicht geöffnet ist stoppt es.

Wie ließe sich das verhindern ?

Vielen Dank
Liebe Grüße
Helmut
Antworten Top
#5
Hm, bei mir funktioniert es ohne Probleme. Könnte an der Stelle im Code bzw. am weiteren Code liegen.
Welche Fehlermeldung kommt denn und an welcher Stelle im Code?

Dass die Datei nur in der VBE sichtbar ist, kommt daher, dass Du aus einer "geschlossenen" Datei auslesen wolltest. Um aber auslesen zu können, musst Du die Datei zumindest im Hintergrund öffnen. Man sieht nur das Fenster nicht.
Gruß
Michael
Antworten Top
#6
(12.03.2015, 08:52)Der Steuerfuzzi schrieb: Hm, bei mir funktioniert es ohne Probleme. Könnte an der Stelle im Code bzw. am weiteren Code liegen.
Welche Fehlermeldung kommt denn und an welcher Stelle im Code?

Dass die Datei nur in der VBE sichtbar ist, kommt daher, dass Du aus einer "geschlossenen" Datei auslesen wolltest. Um aber auslesen zu können, musst Du die Datei zumindest im Hintergrund öffnen. Man sieht nur das Fenster nicht.

Vielen Dank für Deine Antwort.

Die Fehlermeldung ist '9' "Index außerhalb des gültigen Bereichs" und die Meldung kommt  in der  Zeile"Set Quelle = GetObject(pathName)" nachdem das VBAProject geöffnet wurde.

Ich hoffe, es hilft.
Liebe Grüße
Helmut
Antworten Top
#7
Kann ich mir, ohne den gesamten Code zu kennen, auch keinen Reim darauf machen.

Kannst Du entweder die Datei hochladen oder zumindest den gesamten Code posten?
Gruß
Michael
Antworten Top
#8
Hallo, guten Abend !

Ich habe den Code drastisch gekürzt und mit "Sub Test" betitelt. Ich habe diesen natürlich auch getestet und versuchsweise auch "Do While / Loop" weggelassen, aber alles ohne Erfolg.
Das Interessante ist, dass es im zweiten Anlauf, das heißt, wenn das "VBAProject" bereits offen ist funktioniert. Beim ersten mal aber immer
bei "Set Quelle = GetObject(pathName)"  Halt ist.
Ich tendiere langsam dazu, die Datei zum Check der Zellfarbe doch zu öffnen, denn dann geht es ohne Probleme.
Danke für Deine Mühe und Hilfe, vielleicht hast Du noch eine Idee.

Liebe Grüße

Helmut
Code:
Sub Test()

Dim Quelle As Object, pathName As String, VorJahr, strBetr As String, strPath As String, _
strFileName As String
          
    VorJahr = Year(Date) 
    StZe = " Stundenzettel "
    strBetr = ThisWorkbook.ActiveSheet.Range("AC1").Value
   
   strPath = "C:\Geschäftsleitung\"
   strFileName = Dir(strPath & "*Stundenzettel " & VorJahr & " " & strBetr & ".xlsm")
    
Do While strFileName <> ""
   
   pathName = strPath & strFileName
   
Set Quelle = GetObject(pathName)
    If Quelle.Sheets("Dezember").Range("H50").Interior.ColorIndex = 15 Then
GoTo weiter
   Else
   End If

weiter:
strFileName = Dir()     'Nächsten Dateinamen ermitteln

Loop
End Sub
Antworten Top
#9
Hallo,

ich habe Deinen Code in eine Testdatei eingearbeitet und mit mehreren Dateien getestet. Bei mir funktioniert es einwandfrei.

Die Mappen werden mit GetObject übrigens geöffnet, nur dass man das Fenster nicht sieht. Excel könnte nicht auf die Datei zugreifen, wenn Sie nicht offen ist.

Nach Abschluss des Makros müssten die Dateien auch alle offen sein (und in der VBE sichtbar sein). Ein Hinweis noch: Nach Abfrage der Werte aus dem jeweiligen Blatt solltest Du diese vielleicht mit Quelle.Close schließen. Wird Dir aber bei Deinem Problem nicht helfen.

Nachdem auch nur dieser kleine Teil des Codes und auch andere Angaben über die Mappen nicht bekannt sind, bin ich ratlos und kann wohl nicht weiter helfen. Wie gesagt, bei mir funktioniert es (getestet unter Excel 2007 und 2010, 2013 habe ich leider nicht zur Verfügung).
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • heli
Antworten Top
#10
Hallo !

Vielen Dank für Deine Antwort.
Ich bin sicher, dass der Rest des Codes nicht den Ausschlag gibt, da ich genau diesen Test-Code verwende und immer den gleichen Fehler erhalte.
Es sind, wie Du beschreibst auch alle Dateien offen und im VBA sichtbar und es funktioniert auch, aber bei jeder Datei erst nach dem zweiten Anlauf.
Vielleicht liegt es an Excel 2013 ?
Ich denke, ich werde die Dateien einfach normal öffnen , denn dann gibt es kein Problem.

Vielen Dank für Deine Mühe und Hilfe.
Liebe Grüße
Helmut
Antworten Top


Gehe zu:


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