🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych.msaccess
Article #137125

Re: Łączenie tekstu

#137125
From: Prot
Date: Sun, 20 Mar 2016 19:12
80 lines
3807 bytes
Użytkownik <karol77marchewka@gmail.com> napisał w wiadomości 
news:1c9c4fb5-867c-4006-a728-22ab10244b96@googlegroups.com...

Co znaczy zaimportować poprzez VBA ?

To znaczy stworzyć moduł (skrypt) VBA, który przeprowadzi całą operację 
importowania wszystkich danych z pliku tekstowego do założonej tabeli 
accessa.

Przykładowo do importu poprzez VBA danych do excela stosowany może być taki 
moduł:

Sub Importuj()
  Const wOd = 2              'numer wiersza początkowego
  Const wIle = 26              'liczba wierszy
  Const NumeryKolumn = "1,3,4"  'numery importowanych kolumn

  Dim rg       As Range
  Dim sciezka As String, plik As String, linia As String
  Dim kolumny  As String
  Dim T As Variant, U() As Variant
  Dim w As Long, i As Long, j As Long

  On Error GoTo Importuj_Error
                                        'tablica wpisywanego wiersza
  ReDim U(1 To UBound(Split(NumeryKolumn, ",")) + 1)

  kolumny = "," & NumeryKolumn & ","    'będzie wyszukiwanie liczb
                                        'między przecinkami np. ,3,
  sciezka = ThisWorkbook.path & "/"
                                        'miejsce wkopiowania
  Set rg = Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)

  plik = Dir(sciezka & "*.txt")      'czy jest plik tekstowy
  Do While plik <> ""                  'jeśli jest plik
    Open sciezka & plik For Input As #1 'otwórz plik tekstowy

    w = 1
    Do While w < wOd
      If EOF(1) Then Exit Do            'przerwij, bo nie ma co czytać

      Line Input #1, linia            'przeskocz początkowe linie
      w = w + 1
    Loop

    Do Until EOF(1)                  'powtarzaj aż napotkasz koniec pliku

      Line Input #1, linia            'czytaj linię
      T = Split(linia, ";")          'rozbij na elementy wg separatora

      j = 0
      For i = 0 To UBound(T) - 1        'wybierz tylko właściwe kolumny
        If InStr(kolumny, "," & i + 1 & ",") > 0 Then
          j = j + 1
          U(j) = T(i)
        End If
      Next

      rg.Resize(1, UBound(U)) = U      'zapisz do komórek

      Set rg = rg.Offset(1, 0)        'kolejny wiersz docelowy

      w = w + 1
      If w = wOd + wIle Then Exit Do    'przerwij, jeśli to wszystkie linie

    Loop

    Close #1                            'zamknij plik tekstowy
    plik = Dir()                        'szukaj kolejnego pliku
  Loop

Importuj_Exit:
   On Error GoTo 0
   Exit Sub


No niestety żeby spełnić Twoje indywidualne wymagania musisz zgłębić nieco 
podstawy tworzenia modułów VBA lub zlecić stworzenie takiego modułu jakiemuś 
programiście. 
Technical Details
Message-ID: <ncmsn4$46j$1@node1.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <759db8a3-fc8d-4841-a2c2-018e49b0cc41@googlegroups.com> <nckc1r$ino$1@node1.news.atman.pl> <1c9c4fb5-867c-4006-a728-22ab10244b96@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: "Prot" <protnospam@widzew.net>
Newsgroups: pl.comp.bazy-danych.msaccess
Subject: Re: Łączenie tekstu
Date: Sun, 20 Mar 2016 20:12:34 +0100
Organization: ATMAN - ATM S.A.
Lines: 81
Message-ID: <ncmsn4$46j$1@node1.news.atman.pl>
References: <759db8a3-fc8d-4841-a2c2-018e49b0cc41@googlegroups.com> <nckc1r$ino$1@node1.news.atman.pl> <1c9c4fb5-867c-4006-a728-22ab10244b96@googlegroups.com>
NNTP-Posting-Host: ip-176.105.131.220.tvsat364.lodz.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1458501156 4307 176.105.131.220 (20 Mar 2016 19:12:36 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Sun, 20 Mar 2016 19:12:36 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
X-Antivirus: avast! (VPS 160320-1, 2016-03-20), Outbound message
X-Antivirus-Status: Clean
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit