Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


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
to 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ß
Steuerfuzzi
[-] Folgende(r) 1 Benutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
heli
to top
#3
Hallo Steuerfuzzi !

Vielen Dank für Deine Hilfe.

Liebe Grüße
Helmut
to 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
to 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ß
Steuerfuzzi
to 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
to 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ß
Steuerfuzzi
to 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
to 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ß
Steuerfuzzi
[-] Folgende(r) 1 Benutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
heli
to 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
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Dynamisch Werte von einem anderen Blatt lesen Rapt0r 5 89 26.10.2016, 18:56
Letzter Beitrag: Rapt0r
  Zwei Spalten vergleichen, Ergebnis aus dritter lesen Kyle_Crane 11 1.014 12.02.2016, 17:44
Letzter Beitrag: atilla
  Mittelwert aus Liste aber ohne Ausreißer und ohne bestimmte andere Werte SamTG 14 2.605 21.08.2015, 12:37
Letzter Beitrag: WillWissen
  Spalten per VBA lesen und copieren guenther-st 7 1.774 23.06.2014, 21:16
Letzter Beitrag: guenther-st

Gehe zu:


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