staženo, nainstalováno a vyzkoušeno s providerem ACE pro win7 a chová se to úplně stejně jako JET - ignoruje extended properties - vše načte do jednoho pole.
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\VYSTUPY\;Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"";"
Asi mi fakt nezbyde nic jiného než načítat to jako text do proměnné array řádek po řádku a vyhodnocovat si jeden po druhém :-/.
Ale i tak Ti děkuju za čas tomu věnovaný.
M@
office mám na všech 3 testovaných pc 2003.
první pc s WinXP funguje.
druhý pc s Win7 32bit nefunguje.
třetí pc s Win7 64bit nefunguje.
vzhledem k tomu že office 2003 je 32bit tak by v použitém provideru neměl být problém, ale je, z nějakého důvodu si pod Win7 nepřevezme z připojovacího řetězce Extended Properties.
M@
googlím půl dne :-)
Kdyby nebyl nainstalovaný, tak mi ho to nedovolí použít, ale ono mi ho to dovolí použít, dokonce se k souboru připojí, ale jednotlívé záznamy načte jako jedno pole místo několika polí dle oddělovače.
Mezi instalovanými providery oprvadu je - prověřeno viz. obrázek.
M@
Ahoj,
poradí mi někdo? :-)
Pod WinXP jsem vytvořil v excelu makro pro načítání dat z textového souboru, tak aby načetlo jen záznamy splňující jisté podmínky a jisté hodnoty mi nahradilo.
Pro toto načítání jsem použil Microsoft.Jet.OLEDB.4.0 providera a data načítám pomocí SQL příkazu "Select pole from soubor where ....".
Pod WinXP vše běží jak má, ale na počítači s Win7 to skočí do zdi. Při testu "Select * from soubor" to data načetlo (tzn. provider funguje), ale načetl všechna pole textového souboru odděleného středníkem jen jako jedno pole s obsahem "A;B;C;X..." místo aby načetl co středník to pole, takže s tím nelze pracovat.
Zkusil jsem si po předání připojovacího řetězce ho zpětně načíst a
u WinXP obsahoval klauzuli: Extended Properties="text;HDR=Yes;FMT=Delimited(;)
u Win7 tuto klauzili neobsahoval, přestože jsem mu ji předal.
Mimochodem u WinXP funguje i bez definice oddělovače.
Tak si říkám u Win7 není tato klauzule z nějakého důvodu převzata, ale netuším proč, když úplně to samé u WinXP funguje.
Pro jistotu jsem kontroloval i místní obecné nastavení WINDOWS a v obou případech mám nastaven oddělovač položek listu ; takže tím to nebude.
Nemá někdo nějaký tip kam se podívat, či jak upravit připojovací řetězec aby byla ve Win7 převzata klauzule ohledně rozšířených vlastností?
Připojovací řetězec strConn zadávám:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\VYSTUPY\;Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"""
V příloze posílám vzorek.
Tlačítko GO spouští makro QueryTextFile
Vím že bych to mohl načítat jako prostý text řádek po řádku a ověřovat konkrétní pole, ale takhle mi to přišlo snažší, do doby než přišel Win7 :-/
Jen dodám, že oba pc obsahují Office 2003.
Díky
M@
Podle mě nedají a pokud jo, tak nevím jak :-)
Jen tak vzorcem to nepůjde.
- Buď makrem
- Nebo manuální úkon + vzorec
Makro zatím vynechám a popíšu ten druhý způsob:
- Označit sloupce A a B.
- V menu zvolit Data -> Filtr -> Rozšířený
- Ve volbě Akce vybrat Kopírovat jinam
- V poli kopírovat do vybrat kam se má vložit jedinečný seznam.
- Zaškrtnout pole Bez duplicitních záznamů
- OK
- Vedle jedinečného seznamu pak vložit funkci SUMIF
- oblast A:A
- kritérium = odkaz na buňku s kódem na řádku toho jedinečného výběru (stejný řádek jako vkládaná funkce)
- součet bude C:C
- U buňky s vloženým vzorcem pak 2x kliknou na pravý dolní roh, čímž se doplní na všechny řádky jedinečného výběru.
M@
Momentálně je to nastaveno že:
začátek = <br/>
konec = </br>
v těch co zůstaly je začátek i konec stejný
začátek = <br/>
konec = <br/>
tudíž to s tím nepracuje.
Já teda s mými omezenými znalostmi html měl za to, že <br> je nepárový tag, tak mě tam to lomítko mate, ale na goolu vidím že správný tag pro xhtml je <br/> a pro html <br>, tak v podstatě v tvém souboru je ta syntaxe občas správně pro xhtml <br/> a občas špatně </br>. Tak si říkám jestli by nestálo za to nejprve hromadně nahradit stávající </br> za správné <br/>, tak aby to bylo všude stejné a pak v makru dosadit jako koncový parametr <br/>.
to nahrazení by mohlo jít i makrem:
nahradit stávající:
ttext = Cells(rd, sloupec).Value
za
ttext = replace(Cells(rd, sloupec).Value,"</br>","<br/>")
M@
Ahoj, zkus vložit jakýkoliv text do buňky A1 na listu vlož data ;-)
M@
Když nejde SQL, tak co Access? :-)
Záznam se pomocí excelového zadávacího formuláře zapíše do databáze. A data z databáze pak budou propojena do dané oblasti pro náhled - není třeba sešit sdílet (z čehož vedou jistá omezení a starosti) a není třeba dělat odkazy na skryté buňky, jelikož data jsou v databázi a excel je jen zobrazuje.
Otázkou je, je-li access součástí vašeho kancelářského office balíčku.
M@
nejsem si moc jistej tou identifikací, třeba na řádku 5 nemáš označeno červeně nic byť je tam odkaz :-/.
Public Sub nahradit2()
Dim zacatek, delka, sloupec As Single
Dim tstart, tkonec, ttext, tkriterium As String
Dim ind1, ind2 As Boolean
tstart = InputBox("počáteční text", "Hledání", "<br/>")
tkonec = InputBox("koncový text", "Hledání", "</br>")
tkriterium = InputBox("hledaný text", "Hledání", "www")
sloupec = 5
For rd = 90 To ActiveSheet.UsedRange.Rows.Count + 1
ttext = Cells(rd, sloupec).Value
If InStr(1, ttext, tkriterium) > 0 Then
zacatek = 0
konec = 0
ind1 = False
ind2 = False
For p = 1 To Len(ttext)
If Mid(ttext, p, Len(tstart)) = tstart And ind2 = False Then
zacatek = p
ind1 = True
End If
If Mid(ttext, p, Len(tkriterium)) = tkriterium Then
ind2 = True
End If
If Mid(ttext, p, Len(tkonec)) = tkonec Then
konec = p + Len(tkonec)
If ind1 = True And ind2 = True Then
delka = konec - zacatek
MsgBox "Mažu na řádku " & rd & " text: " & vbNewLine & Mid(ttext, zacatek, delka)
ttext = Replace(ttext, Mid(ttext, zacatek, delka), "")
p = zacatek
ind1 = False
ind2 = False
End If
End If
Next
End If
Cells(rd, sloupec) = ttext
Next
End Sub
No zkus to a uvidíš.
Ten msgbox si pak kdyžtak smaž,
M@
Jeden takový pokus :-)
Public Sub nahradit()
Dim zacatek, delka, sloupec As Single
Dim tstart, tkonec, ttext As String
Dim ind As Boolean
tstart = InputBox("počáteční text", "Hledání", "<br/><img src=")
tkonec = InputBox("koncový text", "Hledání", "<br/>")
sloupec = 1
ind = False
For rd = 2 To ActiveSheet.UsedRange.Rows.Count + 1
ttext = Cells(rd, sloupec).Value
For i = 1 To Len(ttext)
If Mid(ttext, i, Len(tstart)) = tstart Then
zacatek = i
ind = True
i = i + 1
End If
If Mid(ttext, i, Len(tkonec)) = tkonec And ind = True Then
delka = i + Len(tkonec) - zacatek
ttext = Replace(ttext, Mid(ttext, zacatek, delka), "")
i = zacatek
ind = False
End If
Next
Cells(rd, sloupec) = ttext
Next
End Sub
M@
Děkuji :-) ... hned druhá možnost v nabídce :-)
M@
Ahoj,
jen rychlý dotaz, jakým způsobem přistupovat a editvat makrem souhrnné informace souboru (Název, Předmět, Autor, Společnost atd.)
Tipoval bych Activeworkbook...., ale nic se mi tam nezdá.
Předem děkuji za tipy.
M@
Nebo pomocí obyčejného rozdílu 2 jednopodmínkových funkcí SUMIF.
Když tak koukám k Pokimu, tam jsem se zas dozvěděl něco nového - já se tam snažím ošetřit datum podmínkou, když měsíc bude 12, tak slož datum rok=aktuální+1, měsíc=1 a den=10, no a když ne, tak rok=aktuální, měsíc=aktuální+1, den =10.
A ono to očividně funguje i bez té podmínky, byť by měsíc vycházel na 13 :-) ... další úspora času :-)
M@
Tu jsem chtěl přiložit už dříve :-)
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.