Article View: pl.comp.bazy-danych.msaccess
Article #137125Re: Łączenie tekstu
From: Prot
Date: Sun, 20 Mar 2016 19:12
Date: Sun, 20 Mar 2016 19:12
80 lines
3807 bytes
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-mailReferences:
<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