Help! Excel VBA

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Deci dupa multe saptamani de lipsa de chef, am reusit weekendul trecut sa termin programul.
Proceseaza in 3 pasi: 1=importa coloanele interesante din CSV-ul ala oribil scos de analizor in doua foi temporare, 2=sorteaza, alege randurile interesante si face o sinteza cu datele posibil utilizabile, 3=sorteaza iar, alege datele finale si, pentru fiecare set de date, face copie a template-ului si il umple cu date.
E scris exclusiv in VBA. Are vreo 5 pagini de cod si cam o pagina si jumatate de explicatii (la inceput) si comentarii (printre randurile de cod) despre ce am vrut sa fac acolo, ca altfel dracu' il mai descifreaza cand va trebui modificat template-ul formularului final.
Oribil.
Da' merge...
... dupa vreo 15 minute de rumegat la un export de 5 MB.
:facepalm:
 

Fred

Membru Senior
Joined
Jan 4, 2019
Pune cate un checkpoint din loc in loc, vezi la ce timp ajunge acolo si ce dureaza atat de mult. Din ce spui nu exista justificare sa mearga atat de incet chiar si pe un RPi.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Stiu deja ce merge greu: importul. Importa cam 5-10 linii/s si nu am cum sa-l simplific mai mult la partea asta. Bine ca merge. Asa ramane!
 

Fred

Membru Senior
Joined
Jan 4, 2019
Si eu ma plangeam de performanta cand importam dintr-un CSV vreo 4,000,000 de linii in aproape 30 de secunde. HDD, nu SSD, in masina virtuala cu 2 procesoare pe la 2 GHz.
 

Pache

Administrator
Sugar daddy
Joined
Oct 12, 2003
Location
Bucuresti
Vin si eu cu o problema care ma seaca.

Am un VBA apelat dintr-un fisier. Unul din lucrurile pe care vreau sa le obtin este sa copieze un worksheet (copy range din worksheet initial, creare worksheet nou, redenumire, paste in worksheet nou) din fisierul din care ruleaza VBA intr-un fisier nou creat prin VBA (intr-un pas anterior).

Folosesc urmatoarea secventa:
Code:
Private Sub cmdNewFTS_Click()
Dim path As String
Dim newfilename As String
Dim ws_old, ws_new, ws_activities As Worksheet
Dim range1 As Range
Dim wbt, newbook As Workbook
Dim size, lRow, i, z As Integer

'generate new file name
newfilename = cboCustomers.Value & " - " & txtInvoiceDate.Value & " - " & _
txtInvoiceNo.Value & ".xlsx"
path = ThisWorkbook.path & "\" & newfilename
Set newbook = Workbooks(newfilename)
Set wbt = ThisWorkbook

With wbt
    'Populate Activity array & cbo
    Set ws_activities = wbt.Worksheets("contract")
    'define activities array
    size = ws_activities.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    size = size - 1
    ReDim FixActivities(size, 6)
    lRow = ws_activities.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    For i = 1 To (lRow - 2)
         For z = 1 To 6
         FixActivities(i - 1, z) = ws_activities.Cells(i + 1, z)
         Next z
         With cboFixDescription
         .AddItem ws_activities.Cells(i + 1, 3).Value
         End With
    Next i
'end init Activity array & cbo

    Set ws_old = wbt.Worksheets("TS_fixed")
    Set range1 = ws_old.Range("A:F")
    range1.Copy
End With
With newbook
    Set ws_new = Sheets.Add(After:=Sheets(Sheets.Count))
    ws_new.Name = "FT " & Customers(cboCustomers.ListIndex, 1) & " - " & txtInvoiceDate.Value
    ActiveCell.PasteSpecial Paste:=xlPasteAll
    Range("B6").Value = "APPENDIX TO INVOICE NO. " & txtInvoiceNo.Value & "/" & txtInvoiceDate.Value
    Range("B2").Value = "CLIENT: " & Customers(cboCustomers.ListIndex, 1) & "; PROJECT: " & txtProjectName.Text
    Range("C9").Value = Customers(cboCustomers.ListIndex, 5)
End With
   
 
End Sub
Problema este desi sunt in bucla de "with" worksheetul nou este creat in fisierul de unde rulez VBA, nu in fisierul nou creat. Ce fac gresit?
 

Pache

Administrator
Sugar daddy
Joined
Oct 12, 2003
Location
Bucuresti
Ciudat, dupa o inchidere & deschidere a proiectului lucrurile functioneaza conform dorintelor :goofy:
 
Top Bottom