czwartek, 6 września 2018

VBA – Pliki tekstowe


VBA – Pliki tekstowe

Możesz także odczytać plik Excela i zapisać zawartość komórki w pliku tekstowym za pomocą VBA. VBA pozwala użytkownikom pracować z plikami tekstowymi za pomocą dwóch metod -
  • File System Object (Obiekt systemu plików)
  • używając polecenia Write

File System Object (FSO)
Jak sama nazwa wskazuje, FSO pomagają programistom pracować z dyskami, folderami i plikami. W tej sekcji omówimy sposób korzystania z FSO.
Lp.
Typ obiektu i opis
1
Drive
Obiekt Drive. Zawiera metody i właściwości, które umożliwiają zbieranie informacji o napędzie podłączonym do systemu.
2
Drives
Drives jest kolekcją. Zawiera listę dysków dołączonych do systemu, zarówno fizycznie, jak i logicznie.
3
File
Obiekt File. Zawiera metody i właściwości, które umożliwiają programistom tworzenie, usuwanie lub przenoszenie plików.
4
Files
Files jest kolekcją. Zawiera listę wszystkich plików zawartych w folderze.
5
Folder
Obiekt Folder. Dostarcza metod i właściwości, które pozwalają programistom tworzyć, usuwać lub przenosić foldery.
6
Folders
Folders jest kolekcją. Zawiera listę wszystkich folderów w folderze.
7
TextStream
Umożliwia programistom odczytywanie i zapisywanie plików tekstowych.

Drive
Drive jest obiektem, który zapewnia dostęp do właściwości konkretnego dysku twardego lub udziału sieciowego. Poniższe właściwości są obsługiwane przez obiekt Drive
  • AvailableSpace
  • DriveLetter
  • DriveType
  • FileSystem
  • FreeSpace
  • IsReady
  • Path
  • RootFolder
  • SerialNumber
  • ShareName
  • TotalSize
  • VolumeName

Przykład
Step 1 − Zanim przejdziemy do tworzenia skryptów za pomocą FSO, powinniśmy włączyć Microsoft Scripting Runtime. Aby to zrobić, przejdź do opcji Tools Referencje, jak pokazano na poniższym zrzucie ekranu.



Krok 2 − Dodaj "Microsoft Scripting RunTime" i kliknji OK.


Step 3 − Dodaj dane, które chcesz zapisać w pliku tekstowym i dodaj przycisk polecenia.


Krok 4 - Teraz czas na skrypt.
Private Sub cmdZapisz_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
   Dim i As Integer
   Dim j As Integer  
 
   Dim fso As FileSystemObject
   Set fso = New FileSystemObject
   Dim stream As TextStream
 
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count  
   
   'Stworzenie strumienia tekstu.
   Set stream = fso.OpenTextFile("D:\Support.log", ForWriting, True) 
   CellData = "" 
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = Trim(ActiveCell(i, j).Value)
         stream.WriteLine "Wartość z lokalizacji (" & i & "," & j & ")" & CellData
      Next j
   Next i 
   stream.Close
   MsgBox ("Zadanie wykonane")
End Sub

Wyjście
Podczas wykonywania skryptu upewnij się, że umieściłeś kursor w pierwszej komórce arkusza. Plik Support.log został utworzony w sposób pokazany na poniższym zrzucie ekranu w lokalizacji "D:\Try".
Zawartość pliku jest pokazana poniżej.
Wartość z lokalizacji (1,1)Województwo
Wartość z lokalizacji (1,2)Wiek
Wartość z lokalizacji (1,3)% populacji
Wartość z lokalizacji (2,1)Mazowieckie
Wartość z lokalizacji (2,2)10-20
Wartość z lokalizacji (2,3)5
Wartość z lokalizacji (3,1)Wielkopolskie
Wartość z lokalizacji (3,2)10-20
Wartość z lokalizacji (3,3)6
Wartość z lokalizacji (4,1)Śląskie
Wartość z lokalizacji (4,2)10-20
Wartość z lokalizacji (4,3)8
Wartość z lokalizacji (5,1)Opolskie
Wartość z lokalizacji (5,2)10-20
Wartość z lokalizacji (5,3)4
Wartość z lokalizacji (6,1)Dolnośląskie
Wartość z lokalizacji (6,2)10-20
Wartość z lokalizacji (6,3)3
Wartość z lokalizacji (7,1)Małopolskie
Wartość z lokalizacji (7,2)10-20
Wartość z lokalizacji (7,3)6
Wartość z lokalizacji (8,1)Pomorskie
Wartość z lokalizacji (8,2)10-20
Wartość z lokalizacji (8,3)5
Wartość z lokalizacji (9,1)Kujawskie
Wartość z lokalizacji (9,2)10-20
Wartość z lokalizacji (9,3)4

Polecenie Write
W przeciwieństwie do FSO, NIE musimy dodawać żadnych referencji, jednak NIE będziemy w stanie pracować z napędami, plikami i folderami. Będziemy mogli po prostu dodać strumień do pliku tekstowego.
Przykład

Private Sub cmdZapisz_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
   Dim i As Integer
   Dim j As Integer  
 
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
   
   FilePath = "D:\plik.txt"
   Open FilePath For Output As #2
 
   CellData = ""
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = "The Value at location (" & i & "," & j & ")" & _                  Trim(ActiveCell(i, j).Value)
         Write #2, CellData
      Next j
   Next i
 
   Close #2
   MsgBox ("Zadanie wykonane")


End Sub

Wyjście
Po uruchomieniu skryptu plik "plik.txt" jest tworzony w lokalizacji "D:\", jak pokazano na poniższym zrzucie ekranu.

Zawartość pliku jest pokazana poniżej.
"Wartość w lokalizacji (1,1)Województwo"
"Wartość w lokalizacji (1,2)Wiek"
"Wartość w lokalizacji (1,3)% populacji"
"Wartość w lokalizacji (2,1)Mazowieckie"
"Wartość w lokalizacji (2,2)10-20"
"Wartość w lokalizacji (2,3)5"
"Wartość w lokalizacji (3,1)Wielkopolskie"
"Wartość w lokalizacji (3,2)10-20"
"Wartość w lokalizacji (3,3)6"
"Wartość w lokalizacji (4,1)Śląskie"
"Wartość w lokalizacji (4,2)10-20"
"Wartość w lokalizacji (4,3)8"
"Wartość w lokalizacji (5,1)Opolskie"
"Wartość w lokalizacji (5,2)10-20"
"Wartość w lokalizacji (5,3)4"
"Wartość w lokalizacji (6,1)Dolnośląskie"
"Wartość w lokalizacji (6,2)10-20"
"Wartość w lokalizacji (6,3)3"
"Wartość w lokalizacji (7,1)Małopolskie"
"Wartość w lokalizacji (7,2)10-20"
"Wartość w lokalizacji (7,3)6"
"Wartość w lokalizacji (8,1)Pomorskie"
"Wartość w lokalizacji (8,2)10-20"
"Wartość w lokalizacji (8,3)5"
"Wartość w lokalizacji (9,1)Kujawskie"
"Wartość w lokalizacji (9,2)10-20"
"Wartość w lokalizacji (9,3)4"



Brak komentarzy:

Prześlij komentarz