Przemysław M.

Przemysław M. Database Developer -
LPP SA

Temat: Import danych z Excel do Access

Witam.

Chciałbym z poziomu Accessa zaimportować dane z Excela ale jakoś automatycznie za pomocą makra lub innego stworzenia.

Mianowicie mam różne pliki .xls w każdym po 2 arkusze ('stare', 'nowe') występujące w każdym pliku z tą samą nazwą.

Chcę w bazie danych za pomocą jakiegoś przycisku na formularzu zaimportować te arkusze do 2 tabel (arkusz 'stare' do tabeli 'TEMP_stare', arkusz 'nowe' do tabeli 'TEMP_nowe').

Dodatkowo chciałbym przy importowaniu pominąć jedną konkretną kolumnę.

Jak coś takiego zrobić?

konto usunięte

Temat: Import danych z Excel do Access

tworzysz tabele podlinkowaną z poziomu kodu VBA w accessie, następnie tworzysz kwerendę na takich danych

jak chcesz zmienić plik to wystarczy usunąć link i stworzyć na nowo

wszystko można załatwić za pomocą docmd

konto usunięte

Temat: Import danych z Excel do Access

A co powiecie na coś takiego:
Private Sub ImportXLSheets()

Dim WrksheetName As String
Dim xl As Object
Set xl = CreateObject("Excel.Application")

xl.Workbooks.Open "c:\temp\filename.xls"
DoCmd.TransferSpreadsheet (acImport), acSpreadsheetTypeExcel97, WrksheetName, "c:\temp\filename.xls"

Set xl = Nothing
End Sub
To tak na szybko. Kod kopiuje dane z arkusza i tworzy tabelę. Postaram się potem jeszcze uzupełnić powyższe o pętlę po plikach w katalogu i kwerendę dodającą.Marcin S. edytował(a) ten post dnia 16.11.10 o godzinie 15:07

konto usunięte

Temat: Import danych z Excel do Access

Marcin S.:
A co powiecie na coś takiego:
Private Sub ImportXLSheets()

Dim WrksheetName As String
Dim xl As Object
Set xl = CreateObject("Excel.Application")

xl.Workbooks.Open "c:\temp\filename.xls"
DoCmd.TransferSpreadsheet (acImport), acSpreadsheetTypeExcel97, WrksheetName, "c:\temp\filename.xls"

Set xl = Nothing
End Sub
To tak na szybko. Kod kopiuje dane z arkusza i tworzy tabelę. Postaram się potem jeszcze uzupełnić powyższe o pętlę po plikach w katalogu i kwerendę dodającą.Marcin S. edytował(a) ten post dnia 16.11.10 o godzinie 15:07

po co twożysz obiekt Excela i otwierasz plik który chcesz importować?

konto usunięte

Temat: Import danych z Excel do Access

Sorki - wycinałem kod z szerszego makra i opacznie zostawiłem tworzenie obiektu :/
Przemysław M.

Przemysław M. Database Developer -
LPP SA

Temat: Import danych z Excel do Access

A dałoby radę, żeby po wciśnięciu buttona pojawiało się okno w którym wskazywałbym plik który ma zostać zaimportowany?

Coś w stulu excelowskiego VBA
Application.GetOpenFilename(, , "Wskaż plik")

W Accessie zdaje się metoda .GetOpenFilename nie działa...
Monika M.

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

Temat: Import danych z Excel do Access

Przemysław Mączkowski:
A dałoby radę, żeby po wciśnięciu buttona pojawiało się okno w którym wskazywałbym plik który ma zostać zaimportowany?

A Google zawiesiło działalność?! ;>

Rozwiązanie tutaj.
Dariusz Kolasa

Dariusz Kolasa Akademia VBA

Temat: Import danych z Excel do Access

Przemysław Mączkowski:
A dałoby radę, żeby po wciśnięciu buttona pojawiało się okno w którym wskazywałbym plik który ma zostać zaimportowany?

Coś w stulu excelowskiego VBA
Application.GetOpenFilename(, , "Wskaż plik")

W Accessie zdaje się metoda .GetOpenFilename nie działa...

albo tu ;)
http://akademia-vba.pl/office-vba/jak-z-vba-wywolac-ok...
Jean Maury

Jean Maury Menedzer projektu
SAP, Bricoman Polska
Sp. z o.o.

Temat: Import danych z Excel do Access

Witam.

Nowa tabela Access gdzie pisac wszystkie nazwy plikow Excel. Powiedzmy ze tabela sie nazywa (lista plikow). nazwa polu gdzie sa nazwy plikow : "nazwa pliku"

Program w VBA :

Deklarowac references "Microsoft ActiveX Data Objects 2.1 Library"

W module VBA

1) deklaracja

Dim oConn As ADODB.Connection, oRS As ADODB.Recordset, oRS1 As ADODB.Recordset, oRS2 As ADODB.Recordset
Dim nazwapliku as string

2) program

sub importowanie ()

Set oConn = New ADODB.Connection
Set oConn = CurrentProject.Connection

Set oRS = New ADODB.Recordset
oRS.CursorLocation = adUseClient

'Otworzyc tabela
oRS.Open "select * from [lista plikow]", oConn, adOpenDynamic, adLockOptimistic, adCmdText
if ors.eof=true then
else
ors.movefirst
do while ors.eof=false
nazwapliku=ors("nazwa pliku")
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "TEMP_stare", "C:\....\" & nazwapliku,,"'stare!'"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "TEMP_nowe", "C:\....\" & nazwapliku,,"'nowe!'"
ors.movenext
loop
end if

ors.close
oconn.close

end sub


'Uwaga. trzeba sprawdzic czy import do Accessa (docmd....) dodaje nowe dany czy usunie dane ktore byly do tej porze. Jezeli, po drugiej importu, dany z pierwszego importu nie ma, trzeba importowac dany do chwilowa tabele (na przyklad "Temp") a, po importowaniu, dodac w tabeli "Temp_stare" czy "Temp_nowe" :


docmd.importquery "nazwa kwerenda ktora dodaje dany do tabeli "Temp_stare" z tabeli "Temp""


Zeby pominac jedna kolumne, trzeba importowac dany z Excela najpierw w tabeli gdzie sa wszystkie kolumny a potem, z kwerenda ktora dodaje dany do tabeli "Temp_stare" czy "Temp_nowe", dodajemy tylko kolumny ktore nam interesuja.

Pozdrawiam.Jean Maury edytował(a) ten post dnia 06.04.12 o godzinie 19:26

konto usunięte

Temat: Import danych z Excel do Access

Polecam artykuł na temat:
https://akademiq.pl/blog/post/155/ms-access-latwiejszy-...

Następna dyskusja:

Transfer danych: Access -> ...




Wyślij zaproszenie do