Ik heb een sheetje met wat data (1000 rijen x 100 kolommen) en wil deze graag via VBA wegschrijven naar een binair bestand (dit ivm latere bewerking door een programma dat dit binaire formaat nodig heeft). Het wegschrijven an sich is geen probleem, maar de snelheid is onwerkbaar. Voor bovenstaande afmetingen is ~2 mins nodig (op een behoorlijk recente computer). Ik gebruik nu de voor de hand liggende methode 'Put':
Ik zit al een tijdje op internet te zoeken naar een mogelijk om de snelheid te verbeteren, maar ik heb nog niets gevonden. Heeft iemand hier een suggestie?
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| Dim vals As Variant vals = Range(Cells(offsetRow, offsetKol), Cells(offsetRow + maxScen - 1, offsetKol + maxJaar)).Value intFileNum = FreeFile: b = 1 ReDim waardes(1 To 4) waardes(1) = maxScen: waardes(2) = 0: waardes(3) = maxJaar + 1: waardes(4) = 0 'Bestand met yield curves, op te slaan als binair bestand met extensie ecorts. On Error GoTo Wegschrijffout Open Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - 4) & ".ecorts" For Binary Access Write As intFileNum 'Schrijf beginwaarden weg: Put intFileNum, , b For i = LBound(waardes) To UBound(waardes) Put intFileNum, , waardes(i) Next i 'Schrijf rentedata weg: For scen = 1 To maxScen For jaar = 0 To maxJaar If vals(scen, jaar + 1) = "" Then Close intFileNum Call finalize(False, "Cel (" & Str(offsetRow - 1 + scen) & "," & Str(offsetKol + jaar) & ") is leeg terwijl het de yield bij jaar" & Str(jaar) & " en scenario" & Str(scen) & " zou moeten bevatten.") Exit Sub End If On Error GoTo Conversiefout dd = vals(scen, jaar + 1) On Error GoTo 0 Put intFileNum, , dd Next jaar Next scen Close intFileNum On Error GoTo 0 |
Ik zit al een tijdje op internet te zoeken naar een mogelijk om de snelheid te verbeteren, maar ik heb nog niets gevonden. Heeft iemand hier een suggestie?