< návrat zpět

MS Excel


Téma: Ulozeni podle formatu, pojmenovani podle bunky rss

Zaslal/a 6.10.2012 18:30

Dobrý den,
mám vytvořené toto:

Dim wb As Workbook, wbX As Workbook
Dim i As Integer, j As Integer
Set wb = ThisWorkbook

With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = ""
.AllowMultiSelect = True
.Filters.Add "Excel", "*.xls"
.Show

For i = 1 To .SelectedItems.Count

Workbooks.Open .SelectedItems(i)
Set wbX = ActiveWorkbook

(makro, ktere zmeni format tabulky - funkcni)


wbX.saveas(wbx.range("A1"),*xls)
Next i

End With

End Sub

jde mi o to, ze si vyberu nekolik souboru, na ktere se spusti makro, co prede format tabulky. Pote potrebuji, aby se automaticky kazdy sesit ulozil pod nazvem bunky A1 daneho listu ( zrejme bude promenna ) a ulozilo jako .xls. Pomuzete mi, nevim si rady 7

Zaslat odpověď >

#009752
avatar
Ten tlusty radek je spatne hned v nekolika ohledech.
Za prve se nevi kam ten sesit ukladat, za druhe to je textove spatne pospojovane.
Takze definuj si jeste nejakou textovou promennou, treba:
Dim strPath as String

a pod tento radek:
Set wbX=ActiveWorkbook
hod kod:
strPath = wbX.Path
pak do toho stringu pridas zpetne lomitko:
strPath = strPath & "\"a pak do toho pridas ten novy nazev:
strPath = strPath & Range("A1")a pak do toho pridas format:
strPath = strPath & ".xls"a pak ten tlusty radek bude takhle:
wbX.SaveAs Filename:= strPath
Pochopitelne se to textove vyskladani dalo udelat primo v tom radku SaveAs, ale chtel jsem Ti ukazat jak se spojuji textove retezcecitovat
#009753
avatar
Sub Makro1()
'
' Makro1 Makro
'
Dim wb As Workbook, wbX As Workbook
Dim i As Integer, j As Integer
Dim strPath As String

'zkratka pro tento ses
Set wb = ThisWorkbook

' Otevri dialog
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = ""
.AllowMultiSelect = True
.Filters.Add "Excel", "*.xls"
.Show

' pro kazdy soubor

For i = 1 To .SelectedItems.Count

Workbooks.Open .SelectedItems(i)
Set wbX = ActiveWorkbook
strPath = wbX.Path
strPath = strPath & "\"
strPath = strPath & Range("A1")
strPath = strPath & ".xls"

procedura

wbX.SaveAs Filename:=strPath

Next i

End With

End Sub

Dekuji moc za snahu, princip je mi o neco vice jasny, jsem rad. Ale hodi mi to chybu 1004, pristup k souboru nelze najit. Nebude neco spatne s tou cestou?citovat
#009756
avatar
kdyz definuji jednotlive casti retezce pod deklaraci promenny
Dim strPath As String

strPath = strPath & "\"
strPath = strPath & Range("A1")
strPath = strPath & ".xls"

tak pri vykonani procedury mi vypise, ze slozka je urcena pouze pro cteni, kdyz ve vlastnostech vyskrtnu, ze neni urcena jen pro cteni, tak to stejne nepomuze.citovat
#009758
avatar
Zkus ten csv ulozit do dane slozky rucne. Jestli to nepujde, problem nebude v makru. Jestli to ale rucne pujde, tak to rucne uloz jeste jednou, ale se zapnutym zaznamem makra. A porovnej strPath (text ktery je v teto promenne v okamziku SaveAs) s textem, ktery vygenerovalo zaznamenane makro (myslim text za SaveAs:= az po prvni carku)
Pokud bys nahodou nevedel, jak zjistit hodnotu strPath, tak bud dokrokujes v tom puvodnim makru pomoci F8 do prislusneho mista anebo hodis zarazku (F9) na prislusny radek kodu a spustis to pomoci F5 a procedura se zastavi na zarazce. A pak v Immediate Window (to prazdne okno vpravo dole) napis:
?strPath a odbouchni to enterem. Super vec pro hledani problemu 10citovat
#009760
avatar
Vyzkousel jsem, ale porad to stejny. Je to divny.citovat
#009761
avatar
Problém je v tomto řádku: wbX.SaveAs Filename:=strPath

Bez definice promenny strPath a vsech casti retezce, makro funguje. Akorat ukladat rucne nazev, zmenit typ souboru, to je pracne u takoveho mnozstvi souboru.citovat
#009762
avatar
Děkuji moc za pomoc, už to mám :-)citovat

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

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.

On-line nástroje