Ik heb in Visio 2007 een tekening gemaakt met een aantal (zelfgemaakte) shapes. Ik ben pas net begonnen om een beetje met Visual Basic te werken, dus zoveel kennis heb ik er nog niet van.
De tekening:
Heel simpel gezien, 4 ruimtes met in elke ruimte 2 personen en 2 computers. Ook is er een knop toegevoegd die een macro start.
Met Microsoft Visual Basic heb ik een script dat in Excel een aantal tabellen maakt,
Kamernummer + namen personen in die ruimte en de computers in die ruimte.
Het script werkt wel, alles staat mooi in Excel, maar Visual Basic komt met een foutmelding
"Fout 91 tijdens uitvoering: Objectvariabele of blokvariabele With is niet ingesteld"
Het gaat om het volgende script
Volgens foutopsporing zou de fout in deze regel moeten zitten..
"If shpObj.Master.Name = "RUIMTEmaster" Then"
De helpfunctie van Visual Basic heeft het over een fout met Set, dus ik dacht zelf aan iets met Set shpObj, alleen wat
Ik heb al redelijk wat zitten googelen, en een aantal dingen uitgeprobeert, maar verder kan ik ook niks meer bedenken..
Iemand een goed idee, ingeving, oplossing??
De tekening:
Heel simpel gezien, 4 ruimtes met in elke ruimte 2 personen en 2 computers. Ook is er een knop toegevoegd die een macro start.
Met Microsoft Visual Basic heb ik een script dat in Excel een aantal tabellen maakt,
Kamernummer + namen personen in die ruimte en de computers in die ruimte.
Het script werkt wel, alles staat mooi in Excel, maar Visual Basic komt met een foutmelding
"Fout 91 tijdens uitvoering: Objectvariabele of blokvariabele With is niet ingesteld"
Het gaat om het volgende script
code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| Public Sub exporttoexcel()
Dim xlsObj As Excel.Application
Dim shpObj As Visio.Shape
Dim selObj As Visio.Selection
Dim persObj As Visio.Shape
Dim i As Integer
Dim iRow As Integer
Set xlsObj = CreateObject("Excel.Application")
xlsObj.Visible = True
xlsObj.Workbooks.Open "c:\TEST.xls"
iRow = 1
For Each shpObj In ActivePage.Shapes
If shpObj.Master.Name = "RUIMTEmaster" Then
xlsObj.Worksheets(1).Cells(iRow, 1) = shpObj.Cells("Prop.Ruimte").ResultStr(visNoCast)
iRow = iRow + 1
Set selObj = shpObj.SpatialNeighbors(visSpatialContain, 0, 0)
For i = 1 To selObj.Count
If selObj(i).Master.Name = "PERSOONmaster" Then
xlsObj.Worksheets(1).Cells(iRow, 2) = selObj(i).Cells("Prop.Persoon").ResultStr(visNoCast)
iRow = iRow + 1
End If
Next i
Set selObj = shpObj.SpatialNeighbors(visSpatialContain, 0, 0)
For j = 1 To selObj.Count
If selObj(j).Master.Name = "COMPUTERmaster" Then
xlsObj.Worksheets(1).Cells(iRow, 3) = selObj(j).Cells("Prop.Computer").ResultStr(visNoCast)
iRow = iRow + 1
End If
Next j
End If
Next shpObj
End Sub
Public Sub CommandButton1_Click()
Call exporttoexcel
End Sub |
Volgens foutopsporing zou de fout in deze regel moeten zitten..
"If shpObj.Master.Name = "RUIMTEmaster" Then"
De helpfunctie van Visual Basic heeft het over een fout met Set, dus ik dacht zelf aan iets met Set shpObj, alleen wat
Ik heb al redelijk wat zitten googelen, en een aantal dingen uitgeprobeert, maar verder kan ik ook niks meer bedenken..
Iemand een goed idee, ingeving, oplossing??