Stránka 2 z 2

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 28.10.2015, 16:28
od Milan25
Nie, zlyhalo to na tom riadku activeworksheet hned, aj som sa nastavil na hárok, kde sú importované dáta, ale nepomohlo.

To som uviedol pre príklad, takže stačí mi len názov servera vymeniť?
Áno, súbor CSV je dostupný na novom serveri, aj cesta je k nemu správna, len ju nejak dostať do Excelu :)

Ja si myslím, že Váš kód je správny, len zatiaľ ho blokuje VB na začiatku, neviete prečo?

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 28.10.2015, 16:32
od Palo-admin
A nie sú tam nejaké skryté hárky ?

Potom sa to dá ošetriť takto:

Kód: Vybrať všetko
Sub ZmenCestuPreCSV_2()
    Dim i, j
         For i = 1 To ActiveWorkbook.Worksheets.Count
            If ActiveWorkbook.Worksheets(i).Visible = True Then
                ActiveWorkbook.Worksheets(i).Select
                For j = 1 To ActiveSheet.QueryTables.Count
   
                    With ActiveSheet.QueryTables(j) 'xQT
                   
                        If InStr(1, .Connection, "C:\tmp\xx\") <= 0 Then ' ak este nebola zmena
                            .Connection = Replace(.Connection, "C:\tmp\", "C:\tmp\xx\", 1, -1, 1)
                        End If
   
                        .Refresh
                    End With
                Next j
            End If
         Next i
End Sub

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 29.10.2015, 09:29
od Milan25
Vyskúšal som aj túto úpravu, teraz makro prebehlo v poriadku, ale stále zostáva v externých údajoch v nastaveniach táto pôvodná cesta: \\scvtabas01\pcdaten\P_AUO_EXPORT.CSV

Je možné, že to nereaguje na makro?

Použil som tento kód:

If InStr(1, .Connection, "\\scvtabas01\pcdaten\P_AUO_EXPORT.CSV") <= 0 Then ' ak este nebola zmena
.Connection = Replace(.Connection, "\\scvtabas01\pcdaten\P_AUO_EXPORT.CSV", "\\scvterpsk01\pcdaten\P_AUO_EXPORT.CSV", 1, -1, 1)
End If

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 29.10.2015, 11:08
od Palo-admin
No lebo je prehodené čo, začo

Kus kódu má byť takto:
Kód: Vybrať všetko
If InStr(1, .Connection, "\\scvterpsk01\pcdaten\P_AUO_EXPORT.CSV") <= 0 Then ' ak este nebola zmena
.Connection = Replace(.Connection, "\\scvtabas01\pcdaten\P_AUO_EXPORT.CSV", "\\scvterpsk01\pcdaten\P_AUO_EXPORT.CSV", 1, -1, 1)
End If

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 29.10.2015, 11:26
od Milan25
výborne, to je ono, prepojenie na nový server to vykonalo, ale import prebehol akoby len načítanie obyčajného textu, pozrite sem ako vypadá excel:

tterm;tkuliname;art^nummer;art;remge;total;kstelle;art^ytprodgrp;art^abtlg^name;kopf;tzeich;
31.12.2015;getrag;10631;HSS4667046410 ; 1 ; 9.10; 21110;Getrag;Department DRIVETRAIN; 200023;CAMAJ;
31.12.2015;getrag;19201;HSS4817083200 ; 1 ; 0.00; 21110;Getrag;Department DRIVETRAIN; 202803;rv;
31.01.2016;getrag;16182;HSS4817068400 ; 2 ; 56.84; 21110;Getrag;Department DRIVETRAIN; 203234;rv;

Po importe nezachoval pôvodné nastavenia importu, ale CSV pridal ako obyčajný text s oddeľovačmi.
Dá sa s tým niečo spraviť, aby si zachoval pôvodné nastavenia importu?

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 29.10.2015, 11:55
od Palo-admin
A bol použitý ten posledne upravený kód s With ActiveSheet.QueryTables(j) ?

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 29.10.2015, 12:10
od Milan25
Áno, presne tento Váš kód som použil, makro prebehlo v poriadku, celý príkaz, len zlyhal na tom nastavení pôvodného importu.
Skúste si pozrieť, či som niečo zle nezadal:

Sub ZmenCestuPreCSV_2()
Dim i, j
For i = 1 To ActiveWorkbook.Worksheets.Count
If ActiveWorkbook.Worksheets(i).Visible = True Then
ActiveWorkbook.Worksheets(i).Select
For j = 1 To ActiveSheet.QueryTables.Count

With ActiveSheet.QueryTables(j) 'xQT

If InStr(1, .Connection, "\\scvterpsk01\pcdaten\P_AUO_EXPORT.CSV") <= 0 Then ' ak este nebola zmena
.Connection = Replace(.Connection, "\\scvtabas01\pcdaten\P_AUO_EXPORT.CSV", "\\scvterpsk01\pcdaten\P_AUO_EXPORT.CSV", 1, -1, 1)
End If

.Refresh
End With
Next j
End If
Next i
End Sub

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 29.10.2015, 13:15
od Palo-admin
Žiaľ je to tak, že pri zmene Connection stringu rozhasí Excel definíciu aktuálneho pripojenia na CSV
a pri refresh dá štruktúru dát, akoby nebolo nič nastavené.

Hľadal som v iných zdrojoch, ale žiadne jednoduché riešenie nie je.

Jediná možnosť je, odchytiť si aktuálne nastavenia spracúvaného pripojenia
napr xx = .TextFileSemicolonDelimiter
a tie potom nastaviť pred menou Connection a spustením Refresh

P.

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 29.10.2015, 14:00
od Milan25
Ďakujem pekne za Váš čas a ochotu, ale myslel som si, že to nebude jednoduché, keď v okne nastavení sa cesta nedá ručne zmeniť.
Takisto som prechádzal aj zahraničné weby a nenašiel som riešenie, jedine pri staršom exceli bolo youtube video, kde sa spomínali registre vo windowse a tam zmenu, môže byť ešte takáto cesta?

Re: MS Excel - externé údaje z *.CSV

PoslaťNapísal: 29.10.2015, 15:15
od Milan25
Práve sme našli jedno riešenie "medzi tým", pri nastaveniach externých údajov, keď zakliknete možnosť "Zobraziť výzvu na zadanie názvu súboru pri obnovení" sa Excel spýta, kde sa nachádza pôvodný súbor.
Vtedy som vybral nový server, presnú cestu a import údajov zostal zapamätaný, teda všetky externé údaje sa načítali bez zmeny.
Je to najrýchlejšie riešenie aké som našiel, tak snáď pomôže aj iným ľuďom :)