🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#136446
Author: jan.kociumbas
Date: Sat, 05 Jul 2014 17:13
19 lines
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
#136453
Author: Zbigniew Bratko
Date: Sun, 06 Jul 2014 10:10
38 lines
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
#136447
Author: jan.kociumbas
Date: Sun, 06 Jul 2014 13:09
5 lines
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
#136449
Author: jan.kociumbas
Date: Sun, 06 Jul 2014 13:25
3 lines
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
#136448
Author: Zbigniew Bratko
Date: Sun, 06 Jul 2014 14:56
83 lines
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
#136450
Author: Zbigniew Bratko
Date: Sun, 06 Jul 2014 15:12
24 lines
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
#136451
Author: jan.kociumbas
Date: Sun, 06 Jul 2014 15:26
17 lines
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
#136452
Author: IDKrzych
Date: Sun, 06 Jul 2014 19:19
32 lines
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
#136454
Author: jan.kociumbas
Date: Mon, 07 Jul 2014 17:06
9 lines
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
#136456
Author: jan.kociumbas
Date: Mon, 07 Jul 2014 18:07
2 lines
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
#136455
Author: IDKrzych
Date: Mon, 07 Jul 2014 18:33
33 lines
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
#136457
Author: jan.kociumbas
Date: Tue, 08 Jul 2014 05:36
10 lines
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
#136458
Author: Zbigniew Bratko
Date: Tue, 08 Jul 2014 08:22
48 lines
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
#136459
Author: jan.kociumbas
Date: Wed, 09 Jul 2014 13:23
7 lines
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
#136460
Author: Jan Koc
Date: Fri, 14 Aug 2015 07:44
42 lines
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