Prikazi cijelu temu 05.08.2015 11:11
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Lokacija:zagreb


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):
  1. ' Save
  2. Open "fajl.dat" For Binary Access Write Lock Write As #1
  3.         Put #1, , velicinaMatrice
  4.         Put #1, , matrica()
  5. Close #1
  6.  
  7. 'Read
  8. Open "fajl.dat" For Binary Access Read Shared As #1
  9.         Get #1, , velicinaMatrice
  10.         ReDim matrica(1 To velicinaMatrice)
  11.         Get #1, , matrica()
  12. 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):
  1. private sub test()
  2.         Dim imeFile As String
  3.         Dim FF As Integer
  4.         Dim folderPath As String
  5.         Dim x as Integer
  6.         Dim y as Integer
  7.         Dim z as Integer
  8.         Dim matrica() as String
  9.        
  10.         ' napunimo matricu nekim podacima
  11.         'x=4:y=3:z=10
  12.         'Redim matrica(1 to x,1 to y,1 to z)
  13.         'matrica(1,1,1)="nesto"
  14.         'matrica(1,1,2)="nesto drugo"
  15.         'itd do
  16.         'matrica(4,3,10)="zadnji podataka"
  17.  
  18.         'snimanje matrice
  19.        folderPath = Application.ActiveWorkbook.Path
  20.         FF = FreeFile()
  21.         imeFile = folderPath & "/matrica.bin"
  22.        
  23.         Open imeFile For Binary Access Write As #FF
  24.             Put #FF, , x'velicina prvog polja
  25.            Put #FF, , y'velicina drugog polja
  26.             Put #FF, , z'velicina treceg polja
  27.            Put #FF, , matrica()
  28.         Close #FF
  29. end sub

sada napisemo VB6 kod za ucitati tu matricu

PreuzmiIzvorni kôd (Visual Basic):
  1. Public Sub Command1_Click()
  2.    
  3.     Dim imeFile As String
  4.     imeFile = App.Path & "\matrica.bin"
  5.        
  6.     Dim x As Integer
  7.     Dim y As Integer
  8.     Dim z as Integer
  9.     Dim matrica() As String
  10.  
  11.     Dim junkInt As Integer'ovo je broj i vjerojatno pokazuje velicinu sljedeceg podatka
  12.                           'moramo ga ucitati ali nam nije bitan
  13.    
  14.     Open file For Binary Access Read Shared As #1
  15.         Get #1, , junkInt
  16.         Get #1, , x
  17.         Get #1, , junkInt
  18.         Get #1, , y
  19.         Get #1, ,junkInt
  20.         Get #1, ,z
  21.         ReDim matrica(1 To x, 1 To y, 1 To z)
  22.         Get #1, , matrica()
  23.     Close #1
  24.  
  25.     ' mozemo provjeriti velicinu matrice    
  26.    MsgBox UBound(matrica, 1) & vbNewLine & UBound(matrica, 2) & vbNewLine & UBound(matrica, 3)
  27.  
  28.     'ispis matrice
  29.    Dim f as integer
  30.     Dim e as Integer
  31.     Dim g as Integer
  32.  
  33.     For f = 1 To x
  34.         For e = 1 To y
  35.                 for g=1 to z
  36.                         debug.print matrica(f,e,g)
  37.                 next g
  38.         next e
  39.     next f
  40.    
  41. End Sub

eto resolved
zakljucano
fertig
osim ako nema komentara ili neko da zna na jednostavniji nacin
zivot je moja domovina.