pro Max2005
Pokud byste chtěl trasovat funkcionalitu a přitom spouštíte makro z jiného sešitu, je potřeba přímo adresovat zdrojový sešit a list a vyhnout se deklaraci ActiveSheet a ActiveBook. Například takto ( zkrátil a zrychlil jsem kod) :
Option VBASupport 1
Sub Main
Dim i, pocetradku
Dim txt, Soub, Soub2 As String
Dim fs, f As Object
Dim sesit as WorkBook
Dim list as String
set sesit = Workbooks.Open("C:\Documents and Settings\Max\Plocha\export\VF_1.xls")
list = "VF_1"
pocetradku = sesit.Sheets(list).cells(2).currentregion.rows.count
txt=""
radek = 2
For i = radek To pocetradku
co = sesit.Sheets(list).Cells(i, 10).Value
jmeno = sesit.Sheets(list).Cells(i, 2).Value
prijmeni = sesit.Sheets(list).Cells(i, 3).Value
firma = sesit.Sheets(list).Cells(i, 1).Value
email = sesit.Sheets(list).Cells(i, 11).Value
telefon = sesit.Sheets(list).Cells(i, 12).Value
dobirka = sesit.Sheets(list).Cells(i, 9).Value
hodnota_zasilky = sesit.Sheets(list).Cells(i, 4).Value
id_zasilkovny = sesit.Sheets(list).Cells(i, 6).Value
obchod = "Stěstíčko"
txt = txt & co & "," & jmeno & "," & prijmeni & "," & firma & "," & email & "," & telefon & "," & dobirka & "," & hodnota_zasilky & "," & id_zasilkovny & "," & obchod & vbCrLf
Next i
Soub = "C:\Documents and Settings\Max\Plocha\export\sesit1.csv"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.CreateTextFile(Soub, True, TristateFalse)
f.Write txt
f.Close
sesit.Close
End Sub
--------------------------
ještě jsem si na Vašich datech všiml, že adresy obsahují čárku jako oddělovač, např. "Argo, a. s.". Bylo by tedy vhodné použít jiný typ oddělovače pro csv nebo textové řetězce, které by mohly obsahovat čárku, uzavřít do uvozovek (podle toho, co zvládne ten import do zásilkovny).
Editoval kabi (5. 6. 2017 17:03:11)