Witam, odzyskałem makro VBA programu Excel, ale nie wiem, jak je poprawnie zmodyfikować. Wyszukuje numer planu (Plan), a następnie oznaczenie (Oznaczenie), ale ponieważ niektóre nazwy plików PDF nie pasują dokładnie do oznaczenia w bazie danych planu, kopiowanie kończy się niepowodzeniem. Chciałbym zamienić Oznaczenie na coś, co jest odpowiednikiem wyszukiwania Windows " * ".
Oto aktualne makro:
Tenskoroszyt.Arkusze(" Arkusz3 "). Komórki(b, 1). Interior.Color = RGB(204, 255, 204) LinkSearch = " " CopyLink = " " Plan = ThisWorkbook.Sheets(" Arkusz3 "). Komórki(b, 1). Tekst Oznaczenie = ThisWorkbook.Sheets(" Arkusz3 "). Komórki(b, 2). Tekst LinkSearch = "C:\FIVE-SERVICES\LIBRARY STANDARDS\Copie_PDF_Standard" & Plan & " - " & Oznaczenie & " .pdf " " CopyLink = Tenskoroszyt.Arkusze(" Arkusz3 "). Komórki(1, 4). Tekst i Plan & " - " & Oznaczenie & " .pdf " FileCopy SearchLinkCopyLink
Celem jest wyszukanie w następującym folderze nazwy znalezionej w programie Excel. Tyle tylko, że te 2 nie pasują. Dlatego chciałbym, aby skopiował, nawet jeśli nie może znaleźć poprawnej nazwy oznaczenia.
Witam Użyj tagu " Kod ", aby opublikować kody. W ten sposób będzie o wiele bardziej czytelny. Kod, który nam pokażesz, utworzy link wyszukiwania. Nie prowadzi badań.
Musisz mieć funkcję, która przeprowadza wyszukiwanie. Pokaż nam, jak to jest zrobione.
Public DerLigne As Long
Public DerPlan As Long
Public a As Long
Public b As Long
Public c As Long
Public LienRecherche As String
Public LienCopie As String
Public Plan As String
Public Désignation As String
Public TempsMacro As Double
Public Sub IdentifierPlans()
Application.ScreenUpdating = False
TempsMacro = Timer
DerPlan = ThisWorkbook.Sheets("Feuil3").Range("a65000").End(xlUp).Row
'With ThisWorkbook.Sheets("feuil3").Range("A1:B" & DerPlan)
With ThisWorkbook.Sheets("feuil3").Range(Cells(1, 1), Cells(DerPlan, 2))
.ClearContents
.Interior.TintAndShade = 0
.Interior.Pattern = xlNone
.Font.Color = RGB(0, 0, 0)
End With
DerLigne = ThisWorkbook.Sheets("feuil1").Range("c65000").End(xlUp).Row
b = 1
For a = 17 To DerLigne
If ThisWorkbook.Sheets("feuil1").Cells(a, 1) = "x" Or ThisWorkbook.Sheets("feuil1").Cells(a, 1) = "X" Then
If Left(ThisWorkbook.Sheets("feuil1").Cells(a, 3), 1) = "A" Then
Else
ThisWorkbook.Sheets("feuil3").Cells(b, 1) = LTrim(ThisWorkbook.Sheets("feuil1").Cells(a, 3))
ThisWorkbook.Sheets("feuil3").Cells(b, 2) = LTrim(ThisWorkbook.Sheets("feuil1").Cells(a, 5))
b = b + 1
End If
End If
Next a
ThisWorkbook.Sheets("feuil3").Range(Columns(1), Columns(2)).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
Application.ScreenUpdating = True
ThisWorkbook.Sheets("Feuil3").Cells(2, 4).Value = "Temps d'exe de la macro : " & Round(Timer - TempsMacro, 2) & " s"
End Sub
Public Sub CopierPlans()
TempsMacro = Timer
DerPlan = ThisWorkbook.Sheets("Feuil3").Range("a65000").End(xlUp).Row
c = 0
On Error GoTo Erreur
'On Error Resume Next
For b = 1 To DerPlan
Suite:
ThisWorkbook.Sheets("Feuil3").Cells(b, 1).Interior.Color = RGB(204, 255, 204)
LienRecherche = ""
LienCopie = ""
Plan = ThisWorkbook.Sheets("feuil3").Cells(b, 1).Text
Désignation = ThisWorkbook.Sheets("feuil3").Cells(b, 2).Text
LienRecherche = "C:\FIVE-SERVICES\BIBLIOTHEQUE STANDARDS\Copie_PDF_Standard\" & Plan & " - " & Désignation & ".pdf"
LienCopie = ThisWorkbook.Sheets("feuil3").Cells(1, 4).Text & "\" & Plan & " - " & Désignation & ".pdf"
FileCopy LienRecherche, LienCopie
Next b
ThisWorkbook.Sheets("Feuil3").Cells(2, 4).Value = "Temps d'exe de la macro : " & Round(Timer - TempsMacro, 2) & " s"
If c = 0 Then
MsgBox "Nickel, tous les PDF ont été copiés", vbOKOnly, "Fichiers copiés"
Else
If c = 1 Then
MsgBox "Certains PDF ont été copiés mais il y a " & c & " erreur", vbExclamation + vbOKOnly, "Fichiers copiés partiellement"
Else
MsgBox "Certains PDF ont été copiés mais il y a " & c & " erreurs", vbExclamation + vbOKOnly, "Fichiers copiés partiellement"
End If
End If
Exit Sub
Erreur:
ThisWorkbook.Sheets("Feuil3").Cells(b, 1).Interior.Color = RGB(255, 80, 80)
c = c + 1
Resume Next
End Sub
Tak, początek pliku jest poprawny. Przykład: SDA-CAD-002-A - stali nierdzewnej souder.pdf, gdy wyszukiwanie jest wykonywane za pomocą " SDA-CAD-002-A - Szef spawalniczy ze stali nierdzewnej", więc nie może go znaleźć. Początek " SDA-CAD-002-A " jest dobry. Ale chciałbym, aby uniknął " Stainless Steel Weld Boss", ale nadal skopiuj znaleziony plik za pomocą " SDA-CAD-002-A ". Na przykład wtedy, gdy " szukaj " w systemie Windows za pomocą " SDA-CAD-002-A*.pdf ".
Rzeczywiście, nie znam dobrze funkcji VBA. Nie ma więc funkcji wyszukiwania. Kod tworzy ścieżkę z elementami tablicy. Musisz więc utworzyć to wyszukiwanie i zastąpić ścieżkę resurltatami swojego wyszukiwania. Aby Ci pomóc, zapoznaj się z funkcją GetFiles.