Thema Datum  Von Nutzer Rating
Antwort
06.08.2019 21:51:42 Kati
NotSolved
07.08.2019 08:22:48 Gast64631
NotSolved
07.08.2019 09:46:29 Kati
NotSolved
07.08.2019 11:11:14 Gast65885
NotSolved
07.08.2019 23:56:04 Kati
NotSolved
08.08.2019 09:39:07 frau
NotSolved
10.08.2019 18:29:11 Kati
NotSolved
Blau wozu
11.08.2019 18:12:58 frau
NotSolved
13.08.2019 22:37:38 Kati
Solved

Ansicht des Beitrags:
Von:
frau
Datum:
11.08.2019 18:12:58
Views:
434
Rating: Antwort:
  Ja
Thema:
wozu

- etwas erklären, dass ohnedies schon Makulatur wenn der User auf Beitrag erstellen klickt?

Da prüfe ich flexibel besser die Dateien im Verzeichnis auf Übereinstimmung im Arbeitsblatt

Option Explicit
'
'vorbelegen Quellordner
Const zvPfad As String = "C:\Warenkorb\Zu_Verkaufen\"
Const zkPfad As String = "C:\Warenkorb\Zu_Kaufen\"
'vorbelegen Zielordner
Const vPfad As String = "C:\Warenkorb\Verkauft\"
Const gPfad As String = "C:\Warenkorb\Gekauft\"
'vorbelegen Teilstring
Const charleft As Integer = 10
'vorbelegen Spalten wo
Const shortname As Long = 12
Const saledstat As Long = 17

Sub DoIt()
Dim arrFiles() As Variant  'Dateiliste
Dim i As Integer
'
   'Dateien in den Quellordner(n)
   On Error Resume Next
   arrFiles = listfiles(zvPfad, zkPfad)
   If Err.Number Then
      Call MsgBox("leere oder falsche Ordner", vbExclamation, "Abbruch")
      Exit Sub
   End If
   On Error GoTo 0
   
   'wir triggern "Gekauft" über "C:\Warenkorb\Zu_Verkaufen\"
   'die Liste aller Dateien sucht sich in Spalte shortname ob gekauft
   arrFiles = chkhits(arrFiles, shortname, saledstat, "Gekauft", zvPfad, gPfad)
      
   'wir triggern "Verkauft" über "C:\Warenkorb\Zu_Kaufen\"
   'die Liste aller Dateien sucht sich in Spalte shortname ob verkauft
   arrFiles = chkhits(arrFiles, shortname, saledstat, "Verkauft", zkPfad, vPfad)
   
   'Verschiebung
   For i = LBound(arrFiles, 1) To UBound(arrFiles, 1)
      'nur die Felder mit Pfad
      If InStr(arrFiles(i, 1), ":\") > 0 Then _
         Name arrFiles(i, 1) As arrFiles(i, 2)
   Next i
   
End Sub

Private Function chkhits(aFiles As Variant, clTerm As Long, clHit As Long, _
strHit As String, fFolder As String, tFolder As String)
Dim x As Long
Dim aList() As Variant
Dim rngHit As Range
Dim clDiff As Long
Dim strName As String

   'Liste der Begriffe umschreiben
   aList = aFiles
   'Spaltenabstand
   clDiff = clHit - clTerm
   'Makro startet im Arbeitsblatt mit den Vorgaben
   With ActiveSheet.Columns(clTerm)
      For x = LBound(aList, 1) To UBound(aList, 1)
         'nur wenn noch kein Ordner eingetragen
         If InStr(aList(x, 1), ":\") = 0 Then
            'Teilstring in benannter Spalte suchen
            Set rngHit = .Find(aList(x, 2), , -4163, 2)
            If Not rngHit Is Nothing Then
               'Abgleich mit Vorgabe
               If rngHit.Offset(, clDiff).Value <> strHit Then
                  'Quellpfad und Zielpfad
                  strName = aList(x, 1)
                  aList(x, 1) = fFolder & strName
                  aList(x, 2) = tFolder & strName
               End If
            End If
         End If
      Next x
   End With
   'an die aufrufende Liste zurückgeben
   chkhits = aList

End Function

Private Function listfiles(ByVal zk As String, vk As String)
'thx to Justin Mosser https://www.chippergolf.com/

Dim vaArray     As Variant
Dim i           As Integer
Dim s           As Integer
Dim oFile       As Object
Dim oFSO        As Object
Dim oFolder     As Object
Dim oFiles      As Object

   Set oFSO = CreateObject("Scripting.FileSystemObject")
   'Anzahl Dateien in den Ordner(n)
   Set oFolder = oFSO.GetFolder(zk)
   Set oFiles = oFolder.Files
   s = oFiles.Count
   Set oFolder = oFSO.GetFolder(vk)
   Set oFiles = oFolder.Files
   s = s + oFiles.Count
   If s = 0 Then Exit Function
   
   'Array mit Dateinamen und Teilstring dazu
   ReDim vaArray(1 To s, 1 To 2)
   'aus dem aktuel betrachteten Verzeichnis
   For Each oFile In oFiles
      i = i + 1
      vaArray(i, 1) = oFile.Name
      vaArray(i, 2) = Left(oFile.Name, charleft)
   Next
   'aus dem zuerst betrachteten Verzeichnis dazu
   Set oFolder = oFSO.GetFolder(zk)
   Set oFiles = oFolder.Files
   For Each oFile In oFiles
      i = i + 1
      vaArray(i, 1) = oFile.Name
      vaArray(i, 2) = Left(oFile.Name, charleft)
   Next
   'an die aufrufende Liste zurückgeben
   listfiles = vaArray

End Function


 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
06.08.2019 21:51:42 Kati
NotSolved
07.08.2019 08:22:48 Gast64631
NotSolved
07.08.2019 09:46:29 Kati
NotSolved
07.08.2019 11:11:14 Gast65885
NotSolved
07.08.2019 23:56:04 Kati
NotSolved
08.08.2019 09:39:07 frau
NotSolved
10.08.2019 18:29:11 Kati
NotSolved
Blau wozu
11.08.2019 18:12:58 frau
NotSolved
13.08.2019 22:37:38 Kati
Solved