Predmet:Re: VBA Excel snimi matricu - VB6 ucitaj matricu
problem od 29.6.2015
danas 5.8.2015
eto koliko mi je trebalo.
snimanje 3D matrice iz Excela i citanje iz VB6
"open 3D array - read 3D array"
osnovni koncept:
PreuzmiIzvorni kôd (Visual Basic):' Save
Open "fajl.dat" For Binary Access Write Lock Write As #1
Put #1, , velicinaMatrice
Put #1, , matrica()
Close #1
'Read
Open "fajl.dat" For Binary Access Read Shared As #1
Get #1, , velicinaMatrice
ReDim matrica(1 To velicinaMatrice)
Get #1, , matrica()
Close #1
imamo 3D matricu, tipa matrica(x,y,z) u Excelu. Koristimo VBA kod:
bitno je napomenuti da se matrice mijenjaju po velicini i nisu uvijek iste
PreuzmiIzvorni kôd (Visual Basic):private sub test()
Dim imeFile As String
Dim FF As Integer
Dim folderPath As String
Dim x as Integer
Dim y as Integer
Dim z as Integer
Dim matrica() as String
' napunimo matricu nekim podacima
'x=4:y=3:z=10
'Redim matrica(1 to x,1 to y,1 to z)
'matrica(1,1,1)="nesto"
'matrica(1,1,2)="nesto drugo"
'itd do
'matrica(4,3,10)="zadnji podataka"
'snimanje matrice
folderPath = Application.ActiveWorkbook.Path
FF = FreeFile()
imeFile = folderPath & "/matrica.bin"
Open imeFile For Binary Access Write As #FF
Put #FF, , x'velicina prvog polja
Put #FF, , y'velicina drugog polja
Put #FF, , z'velicina treceg polja
Put #FF, , matrica()
Close #FF
end sub
sada napisemo VB6 kod za ucitati tu matricu
PreuzmiIzvorni kôd (Visual Basic):Public Sub Command1_Click()
Dim imeFile As String
imeFile = App.Path & "\matrica.bin"
Dim x As Integer
Dim y As Integer
Dim z as Integer
Dim matrica() As String
Dim junkInt As Integer'ovo je broj i vjerojatno pokazuje velicinu sljedeceg podatka
'moramo ga ucitati ali nam nije bitan
Open file For Binary Access Read Shared As #1
Get #1, , junkInt
Get #1, , x
Get #1, , junkInt
Get #1, , y
Get #1, ,junkInt
Get #1, ,z
ReDim matrica(1 To x, 1 To y, 1 To z)
Get #1, , matrica()
Close #1
' mozemo provjeriti velicinu matrice
MsgBox UBound(matrica, 1) & vbNewLine & UBound(matrica, 2) & vbNewLine & UBound(matrica, 3)
'ispis matrice
Dim f as integer
Dim e as Integer
Dim g as Integer
For f = 1 To x
For e = 1 To y
for g=1 to z
debug.print matrica(f,e,g)
next g
next e
next f
End Sub
eto resolved
zakljucano
fertig
osim ako nema komentara ili neko da zna na jednostavniji nacin
zivot je moja domovina.