Jarosław
Ł.
Konstruktor-projekta
nt
Temat: Porównywanie listy plików =>wstawianie pustego...
WitamZaczynam dopiero z VBA i "guglając" udało mi się napisać proste makro które częściowo robi to czego potrzebuję ale nie do końca. Problem wygląda następująco:
Potrzebowałem makro, które będzie pobierało z określonego katalogu listę wszystkich plików wordowskich zawierających ciąg "(PL)", jednocześnie tworząc hiperłącza, makro wstawia również formułę warunkową, która dodaje obok hiperłącza komentarz odnośnie wersji pliku. Tyle udało mi się zdziałać i to działa dobrze.
Sub ListaPlikow()
Dim Katalog As String
Dim NazwaPliku As String
Dim IndexSheet As Worksheet
ActiveSheet.Unprotect
Dim KolejnyWiersz As Long
KolejnyWiersz = 3
Set IndexSheet = ThisWorkbook.ActiveSheet
Katalog = Range("B1").Value
Katalog = Katalog & "\"
NazwaPliku = Dir(Katalog & "*(PL)*.doc*")
Do While NazwaPliku <> ""
IndexSheet.Cells(KolejnyWiersz, 1).Value = KolejnyWiersz - 2
IndexSheet.Cells(KolejnyWiersz, 2).Formula = "=hyperlink(""" & Katalog & NazwaPliku & """,""" & NazwaPliku & """)"
IndexSheet.Cells(KolejnyWiersz, 3).Formula = "=IF(RC[-1]<>0,IF(OR(IFERROR(SEARCH(2017,RC[-1],1),0),IFERROR(SEARCH(2018,RC[-1],1),0),IFERROR(SEARCH(2019,RC[-1],1),0)),""według szablonu"",""starsza wersja""),"""")"
KolejnyWiersz = KolejnyWiersz + 1
NazwaPliku = Dir
Loop
Set IndexSheet = Nothing
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End Sub
Problem pojawia się natomiast w związku z tym, że kolejna kolumna jest uzupełniana adnotacjami ręcznie, i w momencie gdy w katalogu pojawią się nowe pliki worda, adnotacje przestają pasować do listy plików - są przesunięte. Lista jest uporządkowana alfabetycznie a nowe pliki worda nie mają kolejnego indeksu, mogą być na początku albo w środku listy.
Czy jest możliwe aby makro porównywało nowo powstałą listę z ostatnio zapisaną i w przypadku gdy wykryje nowy rekord listy, dodawało pustą komórkę w kolumnie uzupełnianej ręcznie, tak by wszystko do siebie pasowało.
Z góry dziękuję za pomoc.