< návrat zpět

MS Excel


Téma: Pomoc s chybou v kódu rss

Zaslal/a 10.5.2012 21:55

Snažil jsem se dát dohromady níže uvedený kód, ale je tam nějaká chyba. Můžete se mě na to prosím někdo juknout kde je chyba/chyby?
Kód by měl Vytvořit kopie stránek do samostatného sešitu, a ten pojmenovat dle Buňky a zobrazit možnost uložit jako. Před uložením ještě podmínka zkontroluje zda již sešit s tímto číslem existuje.
Už jsem bezradný. Prosím o pomoc.

Sub Export_listu()
Application.DisplayAlerts = False
Application.ScreenUpdating = False

zdroj = ActiveWorkbook.Name
ChDir Application.ThisWorkbook.Path

novy_subor = Worksheets("Nabídka").Cells(13, 18).Value '
Listy = Array("Faktura", "Nabídka")

Workbooks.Add
ActiveWorkbook.SaveAs filename:= _
novy_subor, FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

For llist = 0 To UBound(Listy)
Windows(zdroj).Activate
Sheets(Listy(llist)).Select

Sheets(Listy(llist)).Copy before:=Workbooks(novy_subor).Sheets(1)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Worksheets("List1").Delete
Worksheets("List2").Delete
Worksheets("List3").Delete
Worksheets("Nabídka").Activate
Range("A1").Select

' následuje přejmenování

nove_jmeno = "" & novy_subor ' buňka I1 - číslo faktury
' nastavení cesty pro uložení
Dim filename As Variant
filename = Application.GetSaveAsFilename(nove_jmeno, "Excel (*.xls),*.*,Excel 07 (*.xls),*.*,", 1, "Uložit jako")
If filename = False Then Exit Sub
cele_jmeno = filename

'=existuje uz soubor faktury?
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(cele_jmeno) Then
sZprava = MsgBox("Ve vámi zvoleném adresáři již tento soubor existuje, chcete tento soubor přepsat?" & vbCrLf & "...zápis v databazi bude nezměněn...", vbYesNo, "Přepsat soubor?")
Select Case sZprava
Case vbNo
Workbooks(Workbooks.Count).Close (False)
Application.CutCopyMode = False
Exit Sub
Case vbYes
End Select
End If
Next llist

Application.DisplayAlerts = True
Application.ScreenUpdating = True
ActiveWorkbook.Close

End Sub

stop Uzamčeno - nelze přidávat nové příspěvky.

#008459
avatar
Radšej prilož tvoj zošit. Takto sa to ťažko hľadá.citovat
#008460
avatar
Zde je testovací sešit. Kód je pod tlačítkem "vytvoř kopii".
Příloha: rar8460_export-faktura.rar (25kB, staženo 26x)
citovat
#008462
avatar
Neviem presne čo chceš. Možno takto
Příloha: zip8462_export-faktura.zip (24kB, staženo 26x)
citovat
#008463
avatar
Díky, ještě maličkost. Podmínka, která má zjistit zda v daném adresáři již tento soubor existuje se spouští až po té, co je vytvořena kopie sešitu, takže hlásí, že už soubor s tímto jménem existuje (hlásí právě nově vytvořenou kopii). Šlo by to nějak udělat aby se nejprve zjistilo, zda soubor v adresáři existuje a pak aby se vytvořila kopie? Nevím zda jsem to vysvětlit správně.citovat
icon #008465
Poki
Jestli potřebujete zjistit, jestli existuje nejaky soubor s presne zadanou cestou (tedy cesta k adresari a presny nazev souboru, napr. "C:\TEST\test.xlsx"), lze pouzit tuto funkci, kde parametrem bude prave cela cesta k souboru
Public Function ExistSoubor(FullName As String)
Set FSO = CreateObject("Scripting.FileSystemObject")
ExistSoubor = FSO.fileexists(FullName)
End Function

- funkce vraci bud 'True' nebo 'False'
...nebo lze pouzit objekt FileSystemObject sam o sobe v kodu...citovat
#008467
Jeza.m
Osobně pro ověření existence používám DIR:
If Dir("C:\TEST\test.xlsx") <> "" Then MsgBox "EXISTUJE" Else MsgBox "NEEXISTUJE"


M@citovat
#008469
avatar
Diky. Nazev souboru se bude menit podle cisla faktury nebo nabidky.Zkousel jsem vlozit do kodu ale nejak me to nefunguje.Uz jsem z toho jelen. Poki kam umistit tvuj kod? Muzu te poprosit o vlozeni do meho sesitu?citovat
icon #008470
Poki
Nechce se mi studovat tvuj kod, ale funkci, kterou jsem vlozil vyse (celou), vlozis jako novou proceduru do nejakeho modulu v tvem sesitu a pak ji muzes pouzivat:

v tvem kodu bude neco takoveho:
Cesta = "C:\.....\" 'samozrejme to nebude stanoveno natvrdo - to zvladnes sam
Nazev = "nazev.xls" 'samozrejme to nebude stanoveno natvrdo - to zvladnes sam

If ExistSoubor(Cesta & Nazev) = True then
MsgBox "Soubor uz existuje"
Else
MsgBox "Soubor jeste neexistuje"
End If
citovat
#008474
avatar
Díky za pomoc. FUnguje přesně:-)citovat

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

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21