Thread View: pl.comp.bazy-danych.msaccess
15 messages
15 total messages
Started by jan.kociumbas
Sat, 05 Jul 2014 17:13
nie czytany przez A2013 podkreślnik w nazwie pliku
Author: jan.kociumbas
Date: Sat, 05 Jul 2014 17:13
Date: Sat, 05 Jul 2014 17:13
19 lines
2245 bytes
2245 bytes
jestem amatorem i entuzjastą accessa i od Accessa 2 do teraz w kilku pracach zawsze tworzyłem sobie bazy pomocne do pracy.
Teraz chciałem zaimportować dane z pliku Excela
1. Jak czytać wersje Excela ? i dostosować parametry importu ?
2. Jak przeskoczyć problem z podkreślnikiem ?
w oryginale plik ma adres i nazwę :
D:\Baza_Jan\raport-xls-rtv-agd-foto_.......tu aktualna data...
dwa dni szukałem błędu i doszedłem do tego, że tak jak w Accessie 2 wklepanie w kodzie "ą" wywalało kod to tu ten podkreślnik wywala czytanie nazwy pliku.
Dotychczas ręcznie otwierałem otrzymany pocztą plik, zmieniałem mu nazwę pozbywając się podkreślnika w nazwie i zapisywałem w wersji Excel 2013.
Wtedy Access czytał poprawnie i importował dane
DoCmd.TransferSpreadsheet acImport, , _
"tab1", "D:\Baza_Jan\raport-xls-rtv-agd-foto-....tu aktualna data.. , True, "A10:AE500"
Jak pokonać podkreślnik i zrobić tak aby Access sam sprawdzał wersję Excela i dostosowywał parametry importu.
Jan 1957
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: Zbigniew Bratko
Date: Sun, 06 Jul 2014 10:10
Date: Sun, 06 Jul 2014 10:10
38 lines
2721 bytes
2721 bytes
W dniu 05-07-2014 19:13, jan.kociumbas@gmail.com pisze: > jestem amatorem i entuzjastą accessa i od Accessa 2 do teraz w kilku pracach zawsze tworzyłem sobie bazy pomocne do pracy. > Teraz chciałem zaimportować dane z pliku Excela > 1. Jak czytać wersje Excela ? i dostosować parametry importu ? > 2. Jak przeskoczyć problem z podkreślnikiem ? > > w oryginale plik ma adres i nazwę : > D:\Baza_Jan\raport-xls-rtv-agd-foto_.......tu aktualna data... > > dwa dni szukałem błędu i doszedłem do tego, że tak jak w Accessie 2 wklepanie w kodzie "ą" wywalało kod to tu ten podkreślnik wywala czytanie nazwy pliku. Podobnie w Access 97. Próba wpisania litery "ą" Accesskasował cały kod modułu,by wpisać literę "ą". Obejściem była kombinacja "Shift+tylda" i następnie litera "a". > > Dotychczas ręcznie otwierałem otrzymany pocztą plik, zmieniałem mu nazwę pozbywając się podkreślnika w nazwie i zapisywałem w wersji Excel 2013. > Wtedy Access czytał poprawnie i importował dane > > DoCmd.TransferSpreadsheet acImport, , _ > "tab1", "D:\Baza_Jan\raport-xls-rtv-agd-foto-....tu aktualna data.. , True, "A10:AE500" > > Jak pokonać podkreślnik i zrobić tak aby Access sam sprawdzał wersję Excela i dostosowywał parametry importu. Dla pliku Excela 2010 i Access 2010 (64bit) nie miałem kłopotu z pobieraniem danych z pliku o nazwie z podkreślinikiem. Tak samo w Access 2007 (32 bit). Nie testowałem w Office 2013, bo go nie posiadam. A nie możesz zapisać pliku z nową nazwą (bez podkreślenia) w dowolnym folderze np. TEMP. Potem pobrać dane z tego pliku do tabeli i usunąć z dysku tymczasowy plik ? -- Pozdrowienia BraZby www.faq.accdb.pl/ www.acc97.accdb.pl/
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: jan.kociumbas
Date: Sun, 06 Jul 2014 13:09
Date: Sun, 06 Jul 2014 13:09
5 lines
1910 bytes
1910 bytes
Dziękuję za zainteresowanie. Niestety popełniłem błąd i posiadam A2013 i już nie mogę się cofnąć. Plik z danymi z podkreślnikiem w nazwie otrzymuję z zewnętrznej firmy i tego nie zmienię bo tak to mają oprogramowane a jestem malutkim kliencikiem. Nie jestem w tym dobry, ale może przy pomocy VBA zmienić nazwę pliku i zbadać jego rozszerzenie a potem dostosować parametry importu ? Jan
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: jan.kociumbas
Date: Sun, 06 Jul 2014 13:25
Date: Sun, 06 Jul 2014 13:25
3 lines
1723 bytes
1723 bytes
A przy okazji to chyba z Pana pomocą i Pana programem do tworzenia i drukowania kodów kreskowych wprowadziłem z sukcesem "EAN13" do stolarni, którą wtedy prowadziłem. Jeszcze raz dziękuję. (z 6 - 7 lat temu) I proszę o podpowiedź jak otworzyć w A2013 te bazy kodów, znowu bardzo by mi się przydały. Przy próbie otwarcia, wysyła komunikat, że nie może bazy w tak starej wersji Acessa otworzyć. Jan
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: Zbigniew Bratko
Date: Sun, 06 Jul 2014 14:56
Date: Sun, 06 Jul 2014 14:56
83 lines
3815 bytes
3815 bytes
W dniu 06-07-2014 15:09, jan.kociumbas@gmail.com pisze:
> Dziękuję za zainteresowanie.
> Niestety popełniłem błąd i posiadam A2013 i już nie mogę się cofnąć.
> Plik z danymi z podkreślnikiem w nazwie otrzymuję z zewnętrznej firmy i tego nie zmienię bo tak to mają oprogramowane a jestem malutkim kliencikiem.
> Nie jestem w tym dobry, ale może przy pomocy VBA zmienić nazwę pliku i zbadać jego rozszerzenie a potem dostosować parametry importu ?
> Jan
Możesz spróbować poniższego rozwiązania:
Private Sub Polecenie0_Click()
Call fImportXls("D:\Baza_Jan\Zeszyt_1.xls", "Tabela2", "A1:E4")
End Sub
'1. Kopiuje plik o ścieżce sFilePath, do folderu conMyDirTmp w
systemowym folderze TEPM,
' pod nazwą nie zawierającą znaku podkreślnika "_".
'2. Pobiera dane zkopii pliku to tabeli sTableName z zakresu sRange
'3. Usuwa plik i folder tymczasowy conMyDirTmp
'_____________________________________________________________
Private Function fImportXls(sFilePath As String, sTableName, sRange As
String) As Boolean
Dim sNewFilePath As String
Dim sFileName As String
Dim lInStr As Long
Dim sTempDir As String
Const conMyDirTmp As String = "MyDirXls"
' pobierz ścieżkę do folderu TEMP
sTempDir = Environ$("TEMP")
sTempDir = sTempDir & "\" & conMyDirTmp
lInStr = InStrRev(sFilePath, "\")
If lInStr = 0 Then
MsgBox "Nieprawidłowa nazwa pliku"
Exit Function
End If
'Jeżeli nie istnieje, to utwórz własny tymczasowy folder
If Len(Dir(sTempDir, vbDirectory)) = 0 Then
MkDir (sTempDir)
DoEvents
End If
'sprawdź, czy folder istnieje
If (GetAttr(sTempDir) And vbDirectory) <> vbDirectory Then
MsgBox "Błąd tworzenia katalogu " & sTempDir
Exit Function
End If
'pobierz nazwę pliku
sFileName = Right$(sFilePath, Len(sFilePath) - lInStr)
' usuń z nazwy pliku podkreślnik
sFileName = Replace(sFileName, "_", "")
'Kopiuj plik *.xls (z nazwą bez podkreśleń) do folderu tymczasowego
sNewFilePath = sTempDir & "\" & sFileName
FileCopy sFilePath, sNewFilePath
'pobierz dane
DoCmd.TransferSpreadsheet acImport, , sTableName, sNewFilePath,
True, sRange
'Pozamiataj
Kill sNewFilePath
RmDir sTempDir
fImportXls = True
End Function
Kod można uprościć, nie tworząc folderu w folderze TEMP,
ale w ten sposób łatwiej można tworzyć folder do kopiowania w innej
lokalizacji.
Ale mimo wszystko dziwne, że Access 2013 jest wrażliwy na podkreślnik w
nazwie pliku.
Przecież jest to dosyć typowy sposób tworzenia nazw plików. Być może
problem tkwi gdzie indziej.
--
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: Zbigniew Bratko
Date: Sun, 06 Jul 2014 15:12
Date: Sun, 06 Jul 2014 15:12
24 lines
1982 bytes
1982 bytes
W dniu 06-07-2014 15:25, jan.kociumbas@gmail.com pisze: > A przy okazji to chyba z Pana pomocą i Pana programem do tworzenia i drukowania kodów kreskowych wprowadziłem z sukcesem "EAN13" do stolarni, którą wtedy prowadziłem. Jeszcze raz dziękuję. (z 6 - 7 lat temu) > I proszę o podpowiedź jak otworzyć w A2013 te bazy kodów, znowu bardzo by mi się przydały. Przy próbie otwarcia, wysyła komunikat, że nie może bazy w tak starej wersji Acessa otworzyć. > Jan [...] Baza ta bez problemu konwertuje się do Access 2007 (32 bit). Nie da się wprost przekonwertować bazy 32a_01_Ean.mdb w Access'ie 64bit, ze względu na odwołania do 32-bitowych funkcji API. Konieczne jest grzebanie w kodzie w deklaracjach funkcji API i funkcji korzystających a API. Tutaj masz przekonwertowaną bazę do formatu 2007" http://www.faq.accdb.pl/tmp/32a_01_Ean1_2007.zip -- Pozdrowienia BraZby www.faq.accdb.pl/ www.acc97.accdb.pl/
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: jan.kociumbas
Date: Sun, 06 Jul 2014 15:26
Date: Sun, 06 Jul 2014 15:26
17 lines
2279 bytes
2279 bytes
jak to przeczytałem
>Ale mimo wszystko dziwne, �e Access 2013 jest wra�liwy na podkre�lnik w
>nazwie pliku.
to mnie tknęło i jeszcze raz sprawdziłem.
CZYTA !!!!!!!!!!!
to ja przez dwa dni jakiś idiotyczny błąd robiłem. Przepraszam za zamieszanie. Ale nadal nie umiem Accessem 2013 odczytać *.xls . jak przerobię plik na *.xlsx to ok.
przy zastosowaniu kodu
DoCmd.TransferSpreadsheet acImport,................, _
"tab1", "D:\Baza_Jan\raport-xls-rtv-agd-foto-....tu aktualna data.. , True, "A10:AE500"
jeśli w miejscu kropek pozostawiam puste (domyślną wartość) to poprawnie kopiuje xlsx-a. Próbowałem wstawiania wszystkich podpowiadanych przez Accessa stałych ale nie idzie, jakiś oporny.
Jan
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: IDKrzych
Date: Sun, 06 Jul 2014 19:19
Date: Sun, 06 Jul 2014 19:19
32 lines
2884 bytes
2884 bytes
> to mnie tknęło i jeszcze raz sprawdziłem. > > CZYTA !!!!!!!!!!! > > to ja przez dwa dni jakiś idiotyczny błąd robiłem. Przepraszam za zamieszanie. Ale nadal nie umiem Accessem 2013 odczytać *.xls . jak przerobię plik na *.xlsx to ok. > > przy zastosowaniu kodu > DoCmd.TransferSpreadsheet acImport,................, _ > "tab1", "D:\Baza_Jan\raport-xls-rtv-agd-foto-....tu aktualna data.. , True, "A10:AE500" > > jeśli w miejscu kropek pozostawiam puste (domyślną wartość) to poprawnie kopiuje xlsx-a. Próbowałem wstawiania wszystkich podpowiadanych przez Accessa stałych ale nie idzie, jakiś oporny. Wg. dokumentacji prawidłowa stała to "acSpreadsheetTypeExcel8" dla Excela 97/2000. czyli jakoś tak: DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ "tab1", "D:\Baza_Jan\raport-xls-rtv-agd-foto-....tu aktualna data.. , True, "A10:AE500" to nie działa? więcej na: http://msdn.microsoft.com/en-us/library/office/ff844793(v=office.15).aspx Pozdrawiam -- IDKrzych "Jakkolwiek będzie - będzie inaczej, aniżeli sobie wyobrażamy - ponieważ między Dobrem a Złem znajdujemy się w życiu i w świecie wielowymiarowym, w którym dokumentnie pomieszane jest Przypadkowe z Nieuchronnym." (S. Lem 1999)
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: jan.kociumbas
Date: Mon, 07 Jul 2014 17:06
Date: Mon, 07 Jul 2014 17:06
9 lines
1708 bytes
1708 bytes
DO IDKrzych Napisał Pan Wg. dokumentacji prawidłowa stała to "acSpreadsheetTypeExcel8" dla Excela 97/2000. czyli jakoś tak: niestety nie działa. Żadna wstawiana wartość od 1 do 12 nie działa. Krzyczy że plik ma zły format. Z podkreślnikiem to był mój błąd, który już przeskoczyłem, ale tego jakoś nie mogę. Jak otworzę plik i zapiszę jako E2013 to idzie ale inaczej stawia czynny opór. Jan
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: jan.kociumbas
Date: Mon, 07 Jul 2014 18:07
Date: Mon, 07 Jul 2014 18:07
2 lines
1551 bytes
1551 bytes
dopiszę, że aby być pewnym co usiłuje odczytać funkcja DoCmd.TransferSpreadsheet acImport sprawdziłem Dir-m jaki to jest plik . Niestety XLS, a to znaczy że coś jest nie halo. Jan
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: IDKrzych
Date: Mon, 07 Jul 2014 18:33
Date: Mon, 07 Jul 2014 18:33
33 lines
2736 bytes
2736 bytes
W dniu 2014-07-07 19:06, jan.kociumbas@gmail.com pisze: > DO IDKrzych > Napisał Pan > Wg. dokumentacji prawidłowa stała to "acSpreadsheetTypeExcel8" dla > Excela 97/2000. czyli jakoś tak: > > niestety nie działa. Żadna wstawiana wartość od 1 do 12 nie działa. Krzyczy że plik ma zły format. Z podkreślnikiem to był mój błąd, który już przeskoczyłem, ale tego jakoś nie mogę. > Jak otworzę plik i zapiszę jako E2013 to idzie ale inaczej stawia czynny opór. Gdzieś jeszcze masz błąd. U mnie importuje bez żadnego problemu - przed chwilą sprawdziłem - mój przykład: DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ "wgraneXLS", "C:\test\inne_48510.xls", True, "A1:D25" Sprawdź dokładnie czy pierwotny plik (ten "niby" Excel 97) jest dokładnie Excelem. Ja np. często dostaję pliki od jednego z kontrahentów z rozszerzeniem ".xls", ale w "środku" jest zwykły tekstowy .csv. Mo to ikonkę Excela i bez problemu się otwiera domyślnie w Excelu -> jednak Excelem nie jest i przy próbie niewłaściwego importu daje błędy. Musisz znaleźć konkretną przyczynę. napisz jeszcze precyzyjnie jak wygląda błąd, czy co tam wyskakuje, bo nie napisałeś dokładnie. Pozdrawiam -- IDKrzych "Jakkolwiek będzie - będzie inaczej, aniżeli sobie wyobrażamy - ponieważ między Dobrem a Złem znajdujemy się w życiu i w świecie wielowymiarowym, w którym dokumentnie pomieszane jest Przypadkowe z Nieuchronnym." (S. Lem 1999)
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: jan.kociumbas
Date: Tue, 08 Jul 2014 05:36
Date: Tue, 08 Jul 2014 05:36
10 lines
2133 bytes
2133 bytes
Dziękuję za zainteresowanie. Przy acSpreadsheetTypeExcel7, 8 i 9 wyrzuca: Error 3274 i w opisie "Zewnętrzna tabela nie ma oczekiwanego formatu acSpreadsheetTypeExcel10, 11: Error 3170 i " nie można znaleść instalowalnego pliku ISAM" acSpreadsheetTypeExcel12 i 12Xml: Error 3011 i " Access nie może odnaleść wskazanego elementu" i tu pełna ścieżka dostępu I tak jak pisałem wcześniej Dir odczytuje rozszerzenia plików i na ten wskazuje że jest to XLS Ale jeśli jest tak jak pisałeś to muszę w VB otworzyć ten plik i zapisać jako XLSX zamknąć i dopiero wtedy zaimportować dane (czyli tak jak robiłem wcześniej "ręcznie"). Tylko nie mam pojęcia jak taką procedurę napisać. Jan
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: Zbigniew Bratko
Date: Tue, 08 Jul 2014 08:22
Date: Tue, 08 Jul 2014 08:22
48 lines
2786 bytes
2786 bytes
W dniu 08-07-2014 07:36, jan.kociumbas@gmail.com pisze:
> Dziękuję za zainteresowanie.
>
> Przy acSpreadsheetTypeExcel7, 8 i 9 wyrzuca: Error 3274 i w opisie "Zewnętrzna tabela nie ma oczekiwanego formatu
> acSpreadsheetTypeExcel10, 11: Error 3170 i " nie można znaleść instalowalnego pliku ISAM"
> acSpreadsheetTypeExcel12 i 12Xml: Error 3011 i " Access nie może odnaleść wskazanego elementu" i tu pełna ścieżka dostępu
>
> I tak jak pisałem wcześniej Dir odczytuje rozszerzenia plików i na ten wskazuje że jest to XLS
[...]
Tak z ciekawości pytam, dlaczego rozszerzenie pliku odczytujesz Dir'em ?
Mój komputer/Narzędzia/Opcje Folderów/Widok/Ukryj rozszerzenie znanych
typów plików - należy odznaczyć (ODptaszkować).
> Ale jeśli jest tak jak pisałeś to muszę w VB otworzyć ten plik i zapisać jako XLSX zamknąć i dopiero wtedy zaimportować dane (czyli tak jak robiłem wcześniej "ręcznie").
> Tylko nie mam pojęcia jak taką procedurę napisać.
[...]
może coś takiego:
fSaveAsXlsx "D:\Baza_Jan\Zeszyt_1.xls", "D:\Baza_Jan\Zeszyt_1.xlsx"
'__________________________________________________________________
Private Sub fSaveAsXlsx(sSrcFilePath As String, sDstFilePath As String)
Dim oExcel As Object
Dim oWorkbook As Object
Const xlOpenXMLWorkbook = 51 '(&H33)
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
Set oWorkbook = oExcel.Workbooks.Open(sSrcFilePath)
oWorkbook.SaveAs sDstFilePath, xlOpenXMLWorkbook
oWorkbook.Close
oExcel.Quit
Set oWorkbook = Nothing
Set oExcel = Nothing
End Sub
--
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: jan.kociumbas
Date: Wed, 09 Jul 2014 13:23
Date: Wed, 09 Jul 2014 13:23
7 lines
1537 bytes
1537 bytes
Panie Zbigniewie pięknie dziękuję Działa, o to chodziło. Jeszcze raz dziękuję Jan
Re: nie czytany przez A2013 podkreślnik w nazwie pliku
Author: Jan Koc
Date: Fri, 14 Aug 2015 07:44
Date: Fri, 14 Aug 2015 07:44
42 lines
3019 bytes
3019 bytes
Witam
Niestety po migracji do Windowsa 10 znowu zacząłem mieć problem z plikiem Excela.
W poprzednich korespondencjach opisałem problem, więc w skrócie. Dostaję z zewnętrznej firmy plik z rozszerzeniem NazwaPliku.xls Chciałem z niego metodą
TransferSpreadsheet acImport pobrać trochę danych ale nie było to możliwe. Po kilku radach i próbach udało się wybrnąć z sytuacji tak, że plik był z poziomu VB zamieniany na plik z rozszerzeniem NazwaPliku.xlsx
Dim A As String
Dim AB As String
A = "C:\Baz\" & NazwaPliku & ""
AB = "C:\Baz\" & NazwaPliku & "x"
fSaveAsXlsx A, AB
Public Sub fSaveAsXlsx(sSrcFilePath As String, sDstFilePath As String)
Dim oExcel As Object
Dim oWorkbook As Object
Const xlOpenXMLWorkbook = 51
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
Set oWorkbook = oExcel.Workbooks.Open(sSrcFilePath)
oWorkbook.SaveAs sDstFilePath
oWorkbook.Close
oExcel.Quit
Set oWorkbook = Nothing
Set oExcel = Nothing
End Sub
i wtedy udawało się odczytacz i zaimportować do tabeli Accessowej.
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
"import3", "C:\Baz", True, "A10:AE500"
To była proteza ale działała.
Niestety przestała.
Oczywiście jeśli otworzę plik .xls i potem zapiszę go jako .xlsx to metoda działa poprawnie
Może zacząć od początku i ktoś przyjrzy się temu plikowi .xls bo chyba w tym tkwi problem.
Jeśli ktoś będzie zainteresowany to wyślę przykładowy plik NazwaPliku.xls
mój adres (bez x-ów) to: xkociumbasx@wp.pl
Dziękuję Jan
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads