Pozdrav,
Imam jedan glupi problem unutar Visual Studia 2015 kojeg ne mogu riješiti. Imam Excel tablicu koja se sastoji od 16 redova i dvije kolumne ("tip" i "id").
Unutar Visual Studia 2015 sam generirao kod koji treba uzeti podatke iz tablice i generirati jednostavan XML file.
Ono što me muči jest kako da iskoristim unutar VS-a funkciju MATCH iz Excela ? Puca mi na njemu kod, a ne znam di je problem ?
Uzmite u obzir da ne znam programirati, ali je silom prilika bilo potrebno da sam napišem softver za povezivanje 2 CAD softvera u 2 dana, pa je google radio punom parom i ima svega u kodu (različitih stilova programiranja

).
Error koji dobijem:
Code:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim excelApp As Application
Dim wb As _Workbook
Dim ws As _Worksheet
' Postavljanje varijable na My Documents path.
Dim mydocpath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
' excel application referenca
excelApp = New Application
excelApp.Visible = True
excelApp.ScreenUpdating = True
' Otvaranja excela
wb = excelApp.Workbooks.Open(Path.Combine(mydocpath, "Book1.xlsx"))
' referenca na sheet broj 1
ws = wb.Worksheets(1)
'Traženje dimenzija tablice (koliko ima redova i kolumni)
Dim LastCol As Long
Dim LastRow As Long
Dim i As Integer
LastCol = ws.UsedRange.SpecialCells(XlCellType.xlCellTypeLastCell).Column
LastRow = ws.UsedRange.SpecialCells(XlCellType.xlCellTypeLastCell).Row
' Napiši pocetni tekst u test.XML
Dim startlines() As String = {"Ovo je početak XML-a",
"Dalje slijede podaci iz excel tablice",
""}
'Write the beginning fixed string array to a New file named "text.xml".
Using outputFile As New StreamWriter(mydocpath & Convert.ToString("\test.xml"))
For Each startline As String In startlines
outputFile.WriteLine(startline)
Next
End Using
'POČETAK DINAMIČKOG ZAPISIVANJA XML-a iz TABLICE!
For i = 2 To LastRow
Dim id As String
Dim type As String
'Povezivanje varijabli sa ćelijama u Excelu
type = ws.Range("A" & i).Value.ToString
id = ws.Range("B" & i).Value.ToString
'template sklopova u "test.XML"
If type = "sklop" Then
Dim sklops() As String = {
"<object>",
"<type=""Sklop"" id=""" & id & """>",
" <Name>Sklop" & id & "</Name>",
" </type>",
" </object>"}
'Zapisi sklopve u "test.xml".
Using fs As StreamWriter = File.AppendText(mydocpath & Convert.ToString("\test.xml"))
For Each sklop As String In sklops
fs.WriteLine(sklop)
Next
End Using
Dim jot As Integer
Dim TrenutniComponent As String
Dim TrenutniId As String
Dim brojpartova As Double
brojpartova = excelApp.WorksheetFunction.Match("sklop", "A3:A16", 0)
For jot = 1 To brojpartova
TrenutniComponent = excelApp.Cells(i + jot, 1).Value
TrenutniId = excelApp.Cells(i + jot, 2).Value
Dim parts() As String = {
"<object>",
"<type=""Part"" id=""" & id & """>",
" <Name>Part" & id & "</Name>",
" </type>",
" </object>"}
'Write additional info to "test.xml".
Using fs As StreamWriter = File.AppendText(mydocpath & Convert.ToString("\test.xml"))
For Each part As String In parts
fs.WriteLine(part)
Next
End Using
Next
End If
Next
excelApp.Quit()
End Sub
MATCH Funkcija mi je dobrodošla i koristim je da mi nađe relativnu poziciju (naprema trenutnoj) sljedećeg sklopa u tablici, a time zapravo dobivam broj partova unutar jednog sklopa. Tehnički nisam mogao naći funkciju koja će mi dati broj istih ćelija za redom osim nje.
Kod nije do kraja napisan (iz razloga što se uvijek traži od A3:A16 MATCH a trebalo bi od Ai pa koliko treba). No ako prođe tu, onda ću znati i za ubuduće.
P.S. Naravno da sam kao prava noobara napravio gumbek koji to sve radi jer onda izgleda kod profesionalno
Sve imate u attachmentu! Book1.xlsx treba biti u My Documents folderu.
Hvala na pomoći i pozdrav
EDIT:
Jesam li ja to krivo koristio input za Range A3:A16 ? Nešto sam sad načačkao i prošlo je, odnosno dobio sam vrijednost ?
Naravno morao sam staviti i excelApp.Match bez WorksheetFunction između.