< návrat zpět

MS Excel


Téma: MkDir – office 2019 rss

Zaslal/a 18.2.2020 13:01

Dobrý den, v office 2016 mě funguje MkDir rFolder kde rFolder = FolderPath & "\" & aFolder a aFolder = Sheets("Definice poptávky").Cells(a, 1).Value
v office 2019 mě toto nefunguje a vypíše chybu path was not found, pravděpodobně souvisí s tím, že v cestě je mezera, nemáte někdo radu, prosím?

Jméno
Kontrola
Text
  b i u s img code url hr   1 2 3 4 5 6 7 8 9 10

#045930
elninoslov
Ukážte presne čo obsahuje
FolderPath
aFolder
Sheets("Definice poptávky").Cells(a, 1).Value

v momente chybycitovat
#045932
avatar
Jasně, můžete mít chybu v oné buňce.
Jinak MkDir funguje i v Office365, klidně si to zkuste:
Sub TestMkDir()
Dim strPath As String, aFolder As String
strPath = ThisWorkbook.Path
aFolder = "TestFolder"

If Dir(strPath & "\" & aFolder, vbDirectory) = "" Then 'pokud adresář neexistuje, tak ho vytvoř
MkDir strPath & "\" & aFolder
End If

End Sub
citovat
#045937
avatar
Dobrý den,

zasílám odkaz na soubor: https://www.uschovna.cz/zasilka/VE9UP66LKXJJ2INN-RJ8/

Narazil jsem na to právě až při spuštění na off2019, na 2016 to funguje. Marko spouští z definice poptávky, hodnota ano např. v buňce F2citovat
#045938
avatar
Chybu jsem si právě spojil s mezerou v cestě a názvu složky, jen mi není jasný rozdíl té verze officecitovat
#045939
avatar
Chyba s mezerou to nesouvisí.

* Nastav si stopku na příkazu MkDir.
* Mrkni, co máš v proměnné rFolder
* Pokud rFolder je o jeden podadresář hlouběji, než existující, tak ho vytvoří. Ale nevytvoří současně dva.

Takže ve stávající cestě vytvoří adresář \01 Materiál
ale nevytvoří dvě úrovně čili \01 Materiál\Tecam. To už vede k chybě kterou popisuješ.

Ta procedura má problém, s verzí excelu to nesouvisí

Tady máš ladicí procedurku (upravený extrakt ze stávajícího makra)
Sub TestMD()
Dim i As Integer, a As Integer
a = 2
i = 4
FolderPath = ThisWorkbook.Path
bFolder = Sheets("Definice poptávky").Cells(a, i).Value 'NázevDodavatele
aFolder = Sheets("Definice poptávky").Cells(a, 1).Value
rFolder = FolderPath & "\" & aFolder
sFolder = FolderPath & "\" & aFolder & "\" & bFolder 'CestaSložkyDodavatele
MkDir rFolder
If Len(Dir(sFolder, vbDirectory)) = 0 Then
ChDir FolderPath
MkDir aFolder 'Založení složky dodavatele
MkDir rFolder 'Založení složky dodavatele
End If
End Sub
citovat
#045940
elninoslov
Presne tak. Snažíte sa vytvoriť podadresár v neexistujúcom adresári. Použite nejakú parametrizovanú procedúru na vytvorenie celej adresárovej štruktúry. Napr. narýchlo takéto niečo:
Sub VytvorAdresar(Cesta As String)
Dim sC() As String, dC() As String, i As Byte
If Right$(Cesta, 1) <> "\" Then Cesta = Cesta & "\"
dC = Split(Cesta, ":\")
sC = Split(dC(1), "\")
Cesta = dC(0) & ":"
For i = 0 To UBound(sC)
If sC(i) <> "" Then
Cesta = Cesta & "\" & sC(i)
If Len(Dir(Cesta, vbDirectory)) = 0 Then MkDir Cesta
End If
Next i
End Sub
citovat
#045942
avatar
Dobrý den, děkuji za info. Koukám na to, bohužel nyní u sebe nemám Office 2019 na kterém mě to nefunguje ale na O2016 mě vychází, že když to přepíšu takto:
Sub TestMD()

Dim i As Integer, a As Integer

a = 2

i = 4

FolderPath = ThisWorkbook.Path

bFolder = Sheets("Definice poptávky").Cells(a, i).Value 'NázevDodavatele

aFolder = Sheets("Definice poptávky").Cells(a, 1).Value

rFolder = FolderPath & "\" & aFolder

sFolder = FolderPath & "\" & aFolder & "\" & bFolder 'CestaSložkyDodavatele

If Len(Dir(rFolder, vbDirectory)) = 0 Then

ChDir FolderPath

MkDir rFolder 'Založení složky dodavatele
End If

If Len(Dir(sFolder, vbDirectory)) = 0 Then

MkDir sFolder

End If

End Sub

mělo by to být v pořádku, testuji zda existuje složka na první úrovni (rFolder) když ne, založim.
Pak testuji, zda existuje složka dodavatele, když ne, založim. Dvojí ověřování mám z důvodu opakovaného spuštění procedury. Uvažuji prosím správně? Děkuji TPcitovat
#045944
avatar
tak vyřešeno, děkuji za pomoc.
Jen se ještě zeptám, mám problém s tím, když v proměnných mám písmeno č, poté mě založí složku pouze s "c" a opět končím na chyběcitovat
#045945
avatar
tak i toto je vyřešeno, změna nastavení v ovládací panely/ oblasti pro aplikace nepodporující unicode. Děkuji za pomoc TPcitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Čas od do

lubo • 19.4. 16:30

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32