Advertisement
Dombear

Untitled

Sep 10th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Sub pismaWychodząceDodajHiperlacza()
  2.     'Utworzenie pustej listy, w której będą przechowywane pliki
  3.    Dim files()
  4.  
  5.     'Ścieżka do plików
  6.    Path = "D:\KORESPONDENCJA_ODC.7\Pisma wychodzące"
  7.  
  8.     'Wypełnienie listy plikami znajdującymi się w ścieżce
  9.    files = listfiles(Path)
  10.    
  11.     Dim zakresHiperlaczy As Range
  12.     Dim cell As Range
  13.  
  14.     'Wybór komórek w którch są hiperłącza (kolumna A od 3 do końca)
  15.    Set zakresHiperlaczy = Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row)
  16.  
  17.     'Pytanie czy ingerować w istniejące hiperłącza
  18.    answer = MsgBox("Naprawić istniejące hiperłącza?", vbQuestion + vbYesNo + vbDefaultButton2, "Dodanie hiperłączy")
  19.  
  20.     'Pętla wybierająca każdą komórkę z ustawionego wcześniej zakresu
  21.    For Each cell In zakresHiperlaczy
  22.         'Jeżeli użytkownik chce ingerować w istniejące hiperłącza (naprawić je) lub nie ma hiperłącza w tej komórce to:
  23.        If answer = vbYes Or cell.Hyperlinks.Count <= 0 Then
  24.  
  25.             'Jeżeli ta komórka ma wpisaną jakąś wartość:
  26.            If cell.Text <> "" Then
  27.  
  28.                 'W komórce wpisany jest numer pliku
  29.                Name = cell.Text
  30.                 'Uzupełniamy numer zerami z przodu jeżeli ma mniej niż 4 cyfry
  31.                Do While Len(Name) < 4
  32.                     Name = "0" + Name
  33.                 Loop
  34.  
  35.                 'Wyszukujemy pliku o takiej nazwie w liście plików
  36.                filename = (findFile(Name, files))
  37.                            
  38.                 'Jeżeli taka nazwa została znaleziona to:
  39.                If filename <> "" Then
  40.  
  41.                     'Tworzymy nową ścieżkę z ścieżki do plików i nazwy pliku - jest to ścieżka do konkretnego pliku
  42.                    newPath = Path + "\" + filename
  43.                    
  44.                     'Usuwamy stare hiperłącze (jeżeli nie ma to nic się nie stanie)
  45.                    cell.Hyperlinks.Delete
  46.  
  47.                     'Dodajemy nowe hiperłacze
  48.                    cell.Hyperlinks.Add Anchor:=cell, Address:=newPath
  49.                 End If
  50.             End If
  51.         End If
  52.     Next cell
  53.    
  54. End Sub
  55.  
  56. 'Funkcje poniżej wziąłem z internetu i nie przyglądałem się im jak dokładnie działają
  57. Function findFile(ByVal filenum As String, filesArray() As Variant)
  58.     For i = 0 To (UBound(filesArray) - LBound(filesArray))
  59.         filename = filesArray(i)
  60.         If startsWith(filename, filenum) = True Then
  61.             findFile = filename
  62.             Exit Function
  63.         End If
  64.     Next i
  65. End Function
  66.  
  67.  
  68. Public Function startsWith(ByVal str As String, prefix As String) As Boolean
  69.     startsWith = Left(str, Len(prefix)) = prefix
  70. End Function
  71.  
  72. Function listfiles(ByVal sPath As String)
  73.  
  74.     Dim vaArray()
  75.     Dim i           As Integer
  76.     Dim oFile       As Object
  77.     Dim oFSO        As Object
  78.     Dim oFolder     As Object
  79.     Dim oFiles      As Object
  80.  
  81.     Set oFSO = CreateObject("Scripting.FileSystemObject")
  82.     Set oFolder = oFSO.GetFolder(sPath)
  83.     Set oFiles = oFolder.files
  84.  
  85.     If oFiles.Count = 0 Then Exit Function
  86.  
  87.     ReDim vaArray(0 To oFiles.Count - 1)
  88.     i = 0
  89.     For Each oFile In oFiles
  90.         vaArray(i) = oFile.Name
  91.         i = i + 1
  92.     Next
  93.  
  94.     listfiles = vaArray
  95.  
  96. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement