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

Verlinkungen mit VBA ansprechen

Verlinkungen mit VBA ansprechen
20.03.2007 12:42:46
Andreas
Hallo,
ich habe Dateien mit vielen Verknüpfungen zu anderen Dateien, die ich jetzt mittels VBA zählen möchte und zwar in allen vorhandenen Tabellenblättern und beschriebenen Zellen. Dabei beginnt eine solche verlinkte Zelle mit "='H:\" Das Laufwerk kann auch I oder J sein.
Meine Prozedur zählt mir aber diese Zellen nicht. Die Programmzeilen dazu sind:
...
For b = 1 To Sheets.Count
For s = 1 To Columns.Count
For z = 1 To Rows.Count
Workbooks(originalDatei).Sheets(b).Activate
If Left(Workbooks(originalDatei).Sheets(b).Cells(z, s).Value, 5) Like "=?:\" Then _
AnzahlVerlinkungen = AnzahlVerlinkungen + 1
If Workbooks(originalDatei).Sheets(b).Cells.SpecialCells(xlLastCell).Row = z Then Exit For
'Außer bei Gesamtkontrolle, wenn in der 2. Datei mehr Zeilen sind
Next
If Workbooks(originalDatei).Sheets(b).Cells.SpecialCells(xlLastCell).Column = s Then Exit For
'Außer bei Gesamtkontrolle, wenn in der 2. Datei mehr Spalten sind
Next
Next
...
Ausgegeben wird mir aber kein Wert. Liegt der Fehler nur beim Hochzählen? Kann mir bitte jemand helfen?
Gruss
Andreas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verlinkungen mit VBA ansprechen
20.03.2007 13:24:00
mpb
Hallo Andreas,
in der Zeile
If Left(Workbooks(originalDatei).Sheets(b).Cells(z, s).Value, 5) Like "=?:\" Then _
Value durch Formula und "=?:\" durch "='?:\" ersetzen.
Der Code ist aber generell noch optimierungsbedürftig.
Gruß
Martin
AW: Verlinkungen mit VBA ansprechen
20.03.2007 13:53:00
Andreas
Hallo Martin,
ich hab das grad mal ausprobiert, also value durch formula ersetzt und das andere auch. Aber das funktioniert immer noch nicht, leider. Hast Du vielleicht noch eine Idee?
Und dann meintest Du dass der Quelltext optimierungsbedürftig ist - hast Du da vielleicht auch einen besseren Vorschlag, damit das dann am Ende beim Durchlaufen auch nicht zu lange dauert.
Gruss
Andreas
Anzeige
AW: Verlinkungen mit VBA ansprechen
20.03.2007 14:15:11
mpb
Hallo Andreas,
ich habe den Code an einem (abgespeckten) Beispiel getestet und er funktioniert. Wenn es bei Dir nicht hinhaut, kann das viele Ursachen haben, am wahrscheinlichsten ist eine fehlerhafte Umsetzung. Da ich kein Hellseher bin, müsstest Du zumindest den zuletzt verwendeten Code vollständig(!) posten und angeben, in welcher Codezeile der Fehler auftritt und welcher Fehler es ist (Nummer und Fehlermeldung).
Fall der Code ohne Fehlermeldung durchläuft, aber nicht das gewünschte Ergebnis bringt, beschreibe bitte, was falsch ist.
Gruß
Martin
AW: Verlinkungen mit VBA ansprechen
20.03.2007 14:30:56
Andreas
Martin, hier ist mal die gesamte Prozedur:

Private Sub CommandButton1_Click()
Dim meldung As Variant
Dim originalDatei As String
Dim AnzahlSheets As Long
Dim Datei As Variant
Dim b As Long, s As Long, z As Long
Dim AnzahlVerlinkungen As Long
Datei = Application.GetOpenFilename("Excel Dateien (*.xls), *.xls", , "Bitte wählen Sie die Exceldatei aus!")
If Right(Datei, 4) = ".xls" Then
' Datei öffnen
Workbooks.Open Datei
originalDatei = ActiveWorkbook.Name
ActiveWorkbook.Worksheets(1).Activate
' Anzahl der Tabellenblätter der Datei
AnzahlSheets = Sheets.Count
AnzahlVerlinkungen = 0
For b = 1 To Sheets.Count
For s = 1 To Columns.Count
For z = 1 To Rows.Count
Workbooks(originalDatei).Sheets(b).Activate
If Left(Workbooks(originalDatei).Sheets(b).Cells(z, s).Formula, 5) Like "=?:\" Then _
AnzahlVerlinkungen = AnzahlVerlinkungen + 1
If Workbooks(originalDatei).Sheets(b).Cells.SpecialCells(xlLastCell).Row = z Then Exit For
'Außer bei Gesamtkontrolle, wenn in der 2. Datei mehr Zeilen sind
Next
If Workbooks(originalDatei).Sheets(b).Cells.SpecialCells(xlLastCell).Column = s Then Exit For
'Außer bei Gesamtkontrolle, wenn in der 2. Datei mehr Spalten sind
Next
Next
Workbooks(originalDatei).Close (False)
meldung = MsgBox("Eigenschaften der ausgewählten Datei: " & Chr(13) & Chr(13) & _
"Dateiname:                    " & originalDatei & Chr(13) & _
"Anzahl Tabellenblätter:  " & AnzahlSheets & Chr(13) & _
"Anzahl Verknüpfungen:  " & AnzahlVerlinkungen, vbInformation, "Ausgabe")
End If
On Error Resume Next
End
End Sub
Es wird alles durchlaufen, aber als Ergebnis wird mir bei den Verknüpfungen immer 0 ausgegeben. Nehm ich die Initialisierung AnzahlVerlinkungen = 0 heraus steht bei der Ausgabe dann gar nix.
Gruss
Andreas
Anzeige
AW: Verlinkungen mit VBA ansprechen
20.03.2007 14:39:00
mpb
Hallo Andreas,
statt
"=?:\"
wie bereits geschrieben
"='?:\"
d.h. nach dem Gleichheitszeichen noch ein Apostroph (auf der Tastatur über der #).
Bitte mit Copy und Paste einfügen. Wenn es dann nicht zu richtigen Ergebnis führt, nimm die Zeile
On Error Resume Next
heraus und kontrolliere, ob der Code überhaupt fehlerfrei durchläuft.
Gruß
Martin
AW: Verlinkungen mit VBA ansprechen
20.03.2007 15:02:00
Andreas
Martin,
ich hab jetzt alles mögliche probiert - die verschiedensten Varianten, aber wenn ich das Programm durchlaufen lasse, zählt der mir die Zählvariable einfach nicht hoch - die bleibt permanent auf 0. Und da hab ich sogar schon versucht das so einzugeben: "='H:\" , wo bei meinem Test der Anfang exakt so ist.
Ich verzweifle langsam, denn so läuft das Programm ja ohne irgendwelche Fehlermeldungen!
Gruss
Andreas
Anzeige
AW: Verlinkungen mit VBA ansprechen
20.03.2007 15:13:00
mpb
Hallo Andreas,
kannst Du die Dateien mal hochladen (die mit dem Makro und die mit den Verknüpfungen)?
Gruß
Martin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige