Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
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

Link anstatt Zahl - Buchstaben

Link anstatt Zahl - Buchstaben
16.05.2022 17:14:58
Marcus
Hallo zusammen,
habe hier im Forum diesen Code bekommen, finde nur leider den Post nicht mehr:

Sub Werteeinlesen(sWsName As String)
Dim loLetzte As Long
Dim Fullpfad As String
Dim i  As Long
Dim pfad As String
Dim lOrdnername As Long
Dim sVorlagename As String
Dim sArchivOrdner As String
Dim Ziel As Range
Dim sh As Worksheet
pfad = ThisWorkbook.Path
Set sh = Worksheets(sWsName)
loLetzte = sh.Cells(Rows.Count, 1).End(xlUp).Row
sVorlagename = "Vorlage.xlsm"
sArchivOrdner = sh.Cells(2, "W").Value
For i = 8 To loLetzte
lOrdnername = sh.Cells(i, 1).Value
Set Ziel = sh.Cells(i, 6) 'wo soll der wert das 2x hin
If IsNumeric(lOrdnername) And IsDate(sh.Cells(i, 2).Value) Then
Fullpfad = pfad & "\" & lOrdnername & "\" & sArchivOrdner & "\" & sVorlagename
If Dir(Fullpfad)  "" Then
GetDataClosedWB pfad & "\" & lOrdnername & "\" & sArchivOrdner & "\", _
sVorlagename, _
"config", _
"h2:n2", _
Ziel
End If
End If
Next
End Sub
er funktioniert super, solange der Ordnername aus echten Zahlen ohne Trennstriche usw. besteht.
Jetzt habe ich versucht auch zu benutzen wenn der Ordnername aus einem Wort besteht und da hängt er sich immer bei diesem Abschnitt auf:
Laufzeitfehler 13 - Typ unverträglich
lOrdnername = sh.Cells(i, 1).Value
was müsste ich da ändern das er läuft?
Danke im voraus - ich hoffe ich habe nichts vergessen
Gruß
Marcus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Link anstatt Zahl - Buchstaben
16.05.2022 17:26:54
ChrisL
Hi Marcus
Ungetestet einfach mal Datentyp Long (Ganzzahl) in String (Text) geändert und die IsNumeric() Prüfung rausgenommen:

Sub Werteeinlesen(sWsName As String)
Dim loLetzte As Long
Dim Fullpfad As String
Dim i  As Long
Dim pfad As String
Dim sOrdnername As String
Dim sVorlagename As String
Dim sArchivOrdner As String
Dim Ziel As Range
Dim sh As Worksheet
pfad = ThisWorkbook.Path
Set sh = Worksheets(sWsName)
loLetzte = sh.Cells(Rows.Count, 1).End(xlUp).Row
sVorlagename = "Vorlage.xlsm"
sArchivOrdner = sh.Cells(2, "W").Value
For i = 8 To loLetzte
sOrdnername = sh.Cells(i, 1).Text
Set Ziel = sh.Cells(i, 6) 'wo soll der wert das 2x hin
If IsDate(sh.Cells(i, 2).Value) Then
Fullpfad = pfad & "\" & sOrdnername & "\" & sArchivOrdner & "\" & sVorlagename
If Dir(Fullpfad)  "" Then
GetDataClosedWB pfad & "\" & sOrdnername & "\" & sArchivOrdner & "\", _
sVorlagename, _
"config", _
"h2:n2", _
Ziel
End If
End If
Next i
End Sub
cu
Chris
Anzeige
AW: Link anstatt Zahl - Buchstaben
16.05.2022 17:41:05
Nepumuk
Hallo Marcus,
teste mal:

Public Sub Werteeinlesen(sWsName As String)
Const VORLAGENAME = "Vorlage.xlsm"
Dim Fullpfad As String
Dim i  As Long
Dim sOrdnername As String
Dim sVorlagename As String
Dim sArchivOrdner As String
With Worksheets(sWsName)
sArchivOrdner = .Cells(2, 23).Text
For i = 8 To .Cells(.Rows.Count, 1).End(xlUp).Row
If IsDate(.Cells(i, 2).Value) Then
sOrdnername = .Cells(i, 1).Text
Fullpfad = ThisWorkbook.Path & "\" & sOrdnername & "\" & sArchivOrdner & "\"
If Dir$(Fullpfad & VORLAGENAME)  vbNullString Then
GetDataClosedWB _
Fullpfad, _
VORLAGENAME, _
"config", _
"H2:N2", _
.Cells(i, 6)
End If
End If
Next
End With
End Sub
Gruß
Nepumuk
Anzeige
AW: Link anstatt Zahl - Buchstaben
16.05.2022 18:13:40
Yal
Hallo Marcus,
einige Zeichen sind als Teil eines Dateinamen nicht erlaubt. Diese kannst Du testen und melden:

Sub Werteeinlesen(sWsName As String)
Dim Pfad As String
Dim sArchivOrdner As String
Dim Z As Range
Const sVorlagename = "Vorlage.xlsm"
sArchivOrdner = Worksheets(sWsName).Range("W2").Value
For Each Z In Worksheets(sWsName).Range(Range("A8"), Cells(Rows.Count, "A").End(xlUp))
If IsNumeric(Z.Value) And IsDate(Z.Offset(,2).Value) Then
Pfad = ThisWorkbook.Pfad & "\" & Z.Value & "\" & sArchivOrdner & "\"
If Not IstDateiNameOk(Pfad) Then
Debug.Print "Problem mit: " & Pfad
ElseIf Dir(Pfad & sVorlagename)  "" Then
GetDataClosedWB Pfad, sVorlagename, "config", "h2:n2", Z.Offset(,6).Value
End If
End If
Next
End Sub
Private Function IstDateiNameOk(ByVal DateiTeilName As String) As Boolean
Dim C
For Each C In Split("? *  . , \ + : = / "" ; [ ] |")
If InStr(1, DateiTeilName, C) Then Exit Function
Next
IstDateiNameOk = True
End Function
Ich bevorzuge die Sparsamkeit bei Variablen. Aber es macht es nicht leichter zu debugen, da keine Sichtbarkeit in dem lokalen Fenster.
Zum Beispiel, wenn man eine Range-Variable (Z) als Schleifen-Variable, dann ist Worksheets(sWsName) nur zweimal verwendet. Es ist daher fraglich, ob eine Variable dafür notwendig ist.
Auch die Kombination Fullpfad nimmt in deiner Variante sVorlagename (unveränderbar, daher Const) dazu, was eine separate Stringbildung notwendig macht, um nur den Pfad zu prüfen. Wenn man den Pfad ohne sVorlagename bildet, kann man Pfad öfter wiederverwenden.
VG
Yal
Anzeige
AW: Link anstatt Zahl - Buchstaben
17.05.2022 09:25:47
Marcus
@alle
danke für die schnelle Hilfe
@ChrisL
Laufzeitfehler 52 Name oder Nummer falsch
If Dir(Fullpfad) "" Then
@Nepumuk
Laufzeitfehler 52 Name oder Nummer falsch
If Dir$(Fullpfad & VORLAGENAME) vbNullString Then
@ Yal
Keine Fehlermeldung, keine Funktion
Kann es an dem vorgelagerten Code liegen?
mit diesem wird der Link erstellt:

Option Explicit
Sub dateienablegen(rngTarget As Range)
Dim Pfad   As String
Dim Vorlage As String
Dim Ziel As Range
Dim Fullpfad As String
Dim sh As Worksheet
Set sh = rngTarget.Parent
Pfad = ThisWorkbook.Path
'            'make id
'            If IsNumeric(rngTarget.Offset(-1, -1).Value) Then
'                rngTarget.Offset(, -1).Value = rngTarget.Offset(-1, -1).Value + 1
'            End If
Fullpfad = Pfad & "\" & sh.Cells(rngTarget.Row, 1).Value & "\" & sh.Range("w2") & "\"
'Hyperlink anlegen
ActiveSheet.Hyperlinks.Add Anchor:=rngTarget.Offset(, -1), _
Address:=Fullpfad, _
ScreenTip:="Öffne " & Fullpfad, _
TextToDisplay:=Fullpfad
Call einenUnterOrdner_erstellen64bit(Fullpfad)
Set Ziel = rngTarget.Offset(, 4) 'wo soll der wert das erstemal hin
If GetDataClosedWB(Pfad & "\", "Vorlage.xlsm", "config", "h2:n2", Ziel) Then
MsgBox "Daten importiert"
End If
Vorlage = ActiveWorkbook.Path & "\Vorlage.xlsm"
FileCopy Vorlage, Fullpfad & Dir(Vorlage)
Set Ziel = rngTarget.Offset(, 2)
End Sub

Anzeige
AW: Link anstatt Zahl - Buchstaben
17.05.2022 09:41:39
Yal
Hallo Marcus,

@ Yal
Keine Fehlermeldung, keine Funktion
Da ich deine Ordner-Struktur nicht habe, kann ich den Debuging nicht für dich übernehmen.
Im Schritt-Modus laufen lassen (F8), lokale Fenster öffnen, Überwachungsausdrücke verwenden, usw...
Viel Erfolg
VG
Yal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige