Piotr Henke

Piotr Henke specjalista, Zakład
Opel Polska w
Gliwicach

Temat: Export tabeli do pliku CSV

Chciałbym za pomocą VBA eksportować wybraną tabele do pliku CSV lub ewentualnie TXT ale bez zbędnych formatowań. Dane na komendę miałyby się dopisywać w pliku jeden pod drugim a sama tabela czyściłaby się po eksporcie do pliku csv. W tej chwili udaje mi się eksportować tylko do pliku TXT ale niestety są tam zawarte formatowania co wygląda jak siatka prostokątów a mnie chodzi o plik rozdzielany przecinkami albo średnikami ewentualnie tab-em.
Czy istnieje metoda która taki eksport mogłaby zrobić?
http://lean-management.pl/Piotr Henke edytował(a) ten post dnia 25.11.10 o godzinie 21:32

konto usunięte

Temat: Export tabeli do pliku CSV

DoCmd.TransferText acExportDelim, "specyfikacja", "kwerenda", "plik.csv"

z czego najważniejsza jest specyfikacja która mówi jak ma być sformatowany plik txt/csv, można ją zrobić podczas importu danych
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: Export tabeli do pliku CSV

Do czyszczenia tabeli po eksporcie (i upewnieniu się, że wszystko jest OK):

DoCmd.RunSQL "DELETE FROM nazwa_tabeli".
Piotr Henke

Piotr Henke specjalista, Zakład
Opel Polska w
Gliwicach

Temat: Export tabeli do pliku CSV

Dziękuje, wszystko fajnie działa, pozostaje mi tylko problem z zapisem w pliku csv.Kod DoCmd.TransferText acExportDelim, "specyfikacja", "kwerenda", "plik.csv" nadpisuje dane w pliku csv a mnie zależy na tym aby nowe dane w pliku csv zapisywały się poniżej starych, jedno pod drugim nie kasując starych danych.
pozdrawiam
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Export tabeli do pliku CSV

Trzeba użyć zapisu do pliku TXT, w trybie dopisywania.
W pomocy VBA proszę sprawdzić frazę "Open" oraz tryby otwierania pliku i FileSystemObject - CreateTextFile.
Piotr Henke

Piotr Henke specjalista, Zakład
Opel Polska w
Gliwicach

Temat: Export tabeli do pliku CSV

jest coś takiego jak otwarcie pliku w trybie Appending . Sam tekst lub zmienna tekstową wiem jak zapisywać ale niestety nie wiem jak zapisać całą tabele korzystając np z tego kodu
DoCmd.TransferText acExportDelim, "specyfikacja", "kwerenda", "plik.csv"

konto usunięte

Temat: Export tabeli do pliku CSV

importuj stary plik do tabelki albo podlinkuj
zrób kwerendę typu union starych danych i nowych danych
wypluj dane do pliku tymczasowego
usuń stary plik
zmień nazwę nowego pliku do starej nazwy
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Export tabeli do pliku CSV

Myślałam o wykorzystaniu Open, a nie TransferText.

Przykładowe poniższe makro dopisuje losowe liczby (w przypadku Accessa trzeba oczywiście wpisywać odpowiednie wartości pól, w ustalonej kolejności):
Sub ZapisDoPlikuTekstowego()
Dim lngLiczba As Long
Dim strLosowanie As String
Dim i As Long
Const LowerBound As Long = 1
Const Upperbound As Long = 100

'Otwieranie/tworzenie pliku tekstowego w trybie DOPISYWANIA.
Open "C:\losowanie.txt" For Append As #1

For i = 1 To 10
'Losowanie 10. liczb całkowitych z zakresu od (Lowerbound) do (Upperbound).
lngLiczba = Int((Upperbound - LowerBound + 1) * Rnd + LowerBound)
'Dopisywanie kolejno wylosowanych liczb do zmiennej tekstowej.
strLosowanie = strLosowanie & lngLiczba & ";"
Next i

'Wpisanie zawartości zmiennej strLosowanie bezpośrednio do pliku tekstowego.
Write #1, strLosowanie

'Zamykanie dostępu do pliku.
Close #1

End Sub
Monika M. edytował(a) ten post dnia 17.11.10 o godzinie 22:56
Piotr Henke

Piotr Henke specjalista, Zakład
Opel Polska w
Gliwicach

Temat: Export tabeli do pliku CSV

Rozumiem ,że za kazdym razem do pliku jest dopisywane strLosowanie wczesniej deklarowane jako
Dim strLosowanie As String
I własnie w tym miejscu mam problem jak zapisać wszystkie wartości pól czy może nazwy pól?

może tak? Write #1, pole1 & ";" pole2 & ";" pole3
Chce aby dane były rozdzielane średnikiem

Nie bardzo wiem jak opisać w zmiennej całą tabele ewentualnie pole gdzie za każdym razem będzie inna liczba rekordów bo chyba nie jest konieczne zapisywanie każdego rekordu z osobna?

Przemysław R.:
importuj stary plik do tabelki albo podlinkuj
zrób kwerendę typu union starych danych i nowych danych
wypluj dane do pliku tymczasowego
usuń stary plik
zmień nazwę nowego pliku do starej nazwy

dosyć skomplikowana metoda...
mam nadzieje że nie jedynaPiotr Henke edytował(a) ten post dnia 17.11.10 o godzinie 23:42

konto usunięte

Temat: Export tabeli do pliku CSV

Piotr Henke:
dosyć skomplikowana metoda...
mam nadzieje że nie jedynaPiotr Henke edytował(a) ten post dnia 17.11.10 o godzinie 23:42

5 instrukcji, każdy krok to słownie 1 linijka kodu VBA
Piotr Henke

Piotr Henke specjalista, Zakład
Opel Polska w
Gliwicach

Temat: Export tabeli do pliku CSV

w krótkim okresie czasu rekordów moze byc kiladziesiat tysiecy,moze powyzej 100000, nie bedzie działo się to tylko lokalnie bo dane będą apisywane na serwerze i użytkowników tez będzie kiladziesiąt (kilkadziesiat formularzy).
Czy sposób Moniki nie byłby mniej narażony na utratę danych i mniej awaryjny?
pozdrawiamPiotr Henke edytował(a) ten post dnia 18.11.10 o godzinie 00:17
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Export tabeli do pliku CSV

Piotr Henke:
I własnie w tym miejscu mam problem jak zapisać wszystkie wartości pól czy może nazwy pól?
może tak? Write #1, pole1 & ";" pole2 & ";" pole3
Chce aby dane były rozdzielane średnikiem

Generalnie, tak, jak Pan napisał, ale to było założenie, że wartości pobieramy z pól formularza, a tymczasem doczytałam, że chodzi o tabelę.
Nie bardzo wiem jak opisać w zmiennej całą tabele ewentualnie pole gdzie za każdym razem będzie inna liczba rekordów bo chyba nie jest konieczne zapisywanie każdego rekordu z osobna?

Hm, założyłam, że próbuje Pan zrobić zapis pojedynczego rekordu z jakiegoś formularza, a nie z tabeli. Z tabeli też da się, ale trzeba by czytać każde pole albo użyć recordsetu dla większej liczby rekordów jednorazowo dopisywanych.

W takim wypadku pomysł Pana Przemysława wydaje się rozsądniejszy, choćby ze względu na mniej klepania kodu.
Oczywiście można pobawić się czytaniem recordsetu i zapisywaniem danych do pliku, ale ja spróbowałabym jednak najpierw sposobu Pana Przemysława - po to, aby sprawdzić szybkość działania takiego rozwiązania, zwłaszcza na dużej liczbie rekordów.
Piotr Henke

Piotr Henke specjalista, Zakład
Opel Polska w
Gliwicach

Temat: Export tabeli do pliku CSV

generalnie mógłbym wysyłać pojedyńcze rekordy prosto z formularza do pliku na serwerze sposobem Moniki. Idea zapisywania danych najpierw w tabeli lokalnie była tylko po to aby móc kontynuować prace nawet jeśli sieć byłaby niedostepna (dane lokalnie byłyby do mometu aż transfer na serwer byłby możliwy). Jeżeli ilość danych to nie byłby problem to może nie kasować tabeli lokalnej za kazdym razem jak zrobie transfer do csv tylko dopisywać do niej i robić transfer całości do csv po każdej sesji?
może tak błoby najbezpieczniej?
pozdrawiamPiotr Henke edytował(a) ten post dnia 18.11.10 o godzinie 01:05
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Export tabeli do pliku CSV

No chyba dałoby się jeszcze tak, że wyeksportować do csv plik z nowymi danymi.
Potem otworzyć stary plik csv i nowy (osobne #1 i #2) i dopisać całość pliku z #2 do pliku #1.
Można spróbować, jeśli to będzie dla Pana lepsze.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Export tabeli do pliku CSV

Wojciech Gardziński:
Przemysław R.:
Piotr Henke:
dosyć skomplikowana metoda...
mam nadzieje że nie jedynaPiotr Henke edytował(a) ten post dnia 17.11.10 o godzinie 23:42
5 instrukcji, każdy krok to słownie 1 linijka kodu VBA
Malutenieńka popraweczka:
2 instrukcje, 0 kodu VBA
http://www.goldenline.pl/forum/2064304/proste-zadania-...

Ale to o ACCESSA chodzi, a nie o Excela.
No, ale cóż - reklama leci ;>

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Export tabeli do pliku CSV

Wojciech Gardziński:
Zmiany na Accessa:
Zamiast:
FROM [Faktura$] IN 'c:\kursexcela\dane\sprzedaz'[excel 5.0;]
Ma być:
FROM [Faktura] IN 'c:\kursexcela\dane\sprzedaz.mdb'

Jak dojdziemy do tego, że to, co Pan Wojtek oferuje jest dostępne z poziomu Accessa (bez przechodzenia do Excela i pisania dodatkowych makr wywołujących), to uznam, że Pana post jest we właściwym wątku ;>
A tak, to... ;)

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Export tabeli do pliku CSV

Wojciech Gardziński:
Po 1. W Excelu (AFINIE lub ADO4Excel.xls) nie trzeba żadnych makr wywołujących. Ino kliknąć "Start".

No to odbiegamy od tematu, więc odnośnie tego, co Pan Wojtek przedstawił - moja wypowiedź we właściwym wątku: http://www.goldenline.pl/forum/2064304/proste-zadania-...



Wyślij zaproszenie do