method 'Open' of object 'Workbooks' failed

R

RonnieB

Hallo,

in Excel werkt mijn macro goed maar als ik via een Link in Internet Explorer
hetzelfde wil doen, dan krijg ik bovenstaande foutmelding.
Kan iemand mij helpen?
Code is hieronder bijgevoegd:
Sub Macro1()

Dim gezochtevariabele(1 To 5) ' variabele die in grafiek moet komen

Dim tekstvariabele
Dim naamvariabele(1 To 5)
Dim teller
Dim aantalvariabelen
Dim aantaldagen, begindag, einddag
Dim formulemetverwijzingnaarcel ' formule met verwijzing naar de cel in het
bestand waar de gegevens moeten
' opgehaald worden
Dim formulemetverwijzingnaarceltijd, tijd, tijdplaats
Dim bestand ' bestand is de bestandsnaam waar de
verschillende gegevens moeten gehaald worden
Dim aantalgegevensperdag ' aantal gegevens per dag die in grafiek
moeten komen
Dim bestandsprefix, bestandsplaats
Dim rijenvoordata ' aantal rijen in bestand vooraleer de data
te vinden zijn
Dim titel1, tekst1, invoer1, keuze1
Dim titel2, tekst2, invoer2, keuze2
Dim titel3, tekst3, invoer3, keuze3
Dim titel4, tekst4, invoer4, keuze4
Dim jaar, maand, dag

Worksheets("Blad2").Range("A1:H5000").ClearContents 'blad leegmaken
waarin de gegevens in curve verzameld worden

teller = Worksheets("Invulblad").Range("A1:Z100").Find("VARIABELE1").Row
gezochtevariabele(1) = Cells(teller, 2) 'Range("Blad1!B14")
gezochtevariabele(2) = Cells(teller + 1, 2) 'Range("Blad1!B15")
gezochtevariabele(3) = Cells(teller + 2, 2) 'Range("Blad1!B16")
gezochtevariabele(4) = Cells(teller + 3, 2) 'Range("Blad1!B17")
gezochtevariabele(5) = Cells(teller + 4, 2) 'Range("Blad1!B18")
aantalvariabelen = Cells(teller + 6, 2) 'Range("Blad1!B20")

aantalgegevensperdag = 96
bestandsprefix = "DB"
keuze1 = "DAGRAPPORTEN"
bestandsplaats =
"\\win.corp.com\dfsroot02\Bug234\Bd\bedrijf\cimview\dagrapport\"
rijenvoordata = 1

start2:
titel2 = "Grafiek gebaseerd op " & keuze1
tekst2 = "kies het bereik van de grafiek" & (Chr(13)) & "(voer het nummer
in)" & _
(Chr(13)) & (Chr(13)) & "1 : van de lopende maand" & (Chr(13)) & _
"2 : van de vorige maand" & (Chr(13)) & "3 : van de afgelopen 7 dagen"
& (Chr(13)) & _
"4 : van de afgelopen X dagen" & (Chr(13)) & "5 : van dag X tot
dag Y" & Chr(13) & Chr(13)
invoer2 = InputBox(tekst2, titel2, "1")

start3:
If invoer2 = 1 Then
keuze2 = "LOPENDE MAAND"
begindag = DateSerial(Year(Date), Month(Date), 1)
einddag = DateAdd("d", -1, Date)
aantaldagen = Day(Date) - 1
GoSub uitvoeren
ElseIf invoer2 = 2 Then
keuze2 = "VORIGE MAAND"
If Month(Date) = 1 Then
begindag = DateSerial(Year(Date) - 1, 12, 1)
Else
begindag = DateSerial(Year(Date), Month(Date) - 1, 1)
End If
einddag = DateAdd("d", -1, DateSerial(Year(Date), Month(Date), 1))
aantaldagen = Day(einddag)
GoSub uitvoeren
ElseIf invoer2 = 3 Then
keuze2 = "AFGELOPEN 7 DAGEN"
begindag = DateAdd("d", -7, Date)
einddag = DateAdd("d", -1, Date)
aantaldagen = 7
GoSub uitvoeren
ElseIf invoer2 = 4 Then
keuze2 = "AFGELOPEN X DAGEN"
titel3 = "Grafiek voor " & keuze2
tekst3 = "Bepaal X :" & Chr(13) & "Geef het aantal dagen waarvoor u een
grafiek wenst" & Chr(13) & Chr(13)
invoer3 = InputBox(tekst3, titel3)
If invoer3 = "" Then
result = MsgBox("u heeft gekozen de toepassing te beëindigen",
vbOKOnly)
Exit Sub
ElseIf IsNumeric(invoer3) = False Then
result = MsgBox("verkeerde invoer, probeer opnieuw", vbOKCancel)
If result = 1 Then
GoTo start3
Else
Exit Sub
End If
Else
result = MsgBox("U heeft een grafiek gevraagd voor de afgelopen " &
invoer3 & " dagen", vbOKOnly)
End If
begindag = DateAdd("d", invoer3 * (-1), Date)
einddag = DateAdd("d", -1, Date)
aantaldagen = invoer3
GoSub uitvoeren
ElseIf invoer2 = 5 Then
keuze2 = "VAN DAG X TOT DAG Y"
titel3 = "Grafiek " & keuze2
tekst3 = "Bepaal DAG X : " & Chr(13) & "Deze dag is het beginpunt van
de grafiek." & Chr(13) & _
Chr(13) & "Geef een datum volgens volgende datumnotatie :" & Chr(13) _
& Chr(13) & " dd/mm/yy " & Chr(13) & Chr(13)
invoer3 = InputBox(tekst3, titel3, Date)
If invoer3 = "" Then
result = MsgBox("u heeft gekozen de toepassing te beëindigen",
vbOKOnly)
Exit Sub
ElseIf IsDate(invoer3) = False Then
result = MsgBox("verkeerde datumnotatie, probeer opnieuw", vbOKCancel)
If result = 1 Then
GoTo start3
Else
Exit Sub
End If
ElseIf IsDate(invoer3) = True Then
begindag = invoer3
titel4 = "Grafiek van " & begindag & " tot DAG Y"
tekst4 = "Bepaal DAG Y : " & Chr(13) & "Deze dag is het eindpunt
van de grafiek." & Chr(13) & _
Chr(13) & "Geef een datum volgens volgende datumnotatie :" &
Chr(13) _
& Chr(13) & " dd/mm/yy " & Chr(13) & Chr(13)
invoer4 = InputBox(tekst4, titel4, Date)
If invoer4 = "" Then
result = MsgBox("u heeft gekozen de toepassing te beëindigen",
vbOKOnly)
Exit Sub
ElseIf IsDate(invoer4) = False Then
result = MsgBox("verkeerde datumnotatie, probeer opnieuw",
vbOKCancel)
If result = 1 Then
GoTo start3
Else
result = MsgBox("u heeft gekozen de toepassing te
beëindigen", vbOKOnly)
Exit Sub
End If
ElseIf DateDiff("d", begindag, invoer4) < 0 Then
result = MsgBox("dag X (=" & begindag & ") moet voor dag Y (=" &
invoer4 & _
") komen, probeer opnieuw", vbOKCancel)
If result = 1 Then
GoTo start3
Else
result = MsgBox("u heeft gekozen de toepassing te
beëindigen", vbOKOnly)
Exit Sub
End If
ElseIf IsDate(invoer4) = True Then
einddag = invoer4
result = MsgBox("U heeft een grafiek gekozen van " & begindag &
" tot en met " & einddag, vbOKOnly)
End If
End If
aantaldagen = DateDiff("d", begindag, einddag) + 1
Worksheets("Invulblad").Range("L10") = aantaldagen
GoSub uitvoeren
ElseIf invoer2 = "" Then
result = MsgBox("u heeft gekozen de toepassing te beëindigen", vbOKOnly)
Exit Sub
Else
result = MsgBox("verkeerde invoer, probeer opnieuw", vbOKCancel)
If result = 1 Then
GoTo start2
Else
result = MsgBox("u heeft gekozen de toepassing te beëindigen",
vbOKOnly)
Exit Sub
End If
End If



tekstvariabele = ""
For z = 1 To aantalvariabelen
tekstvariabele = tekstvariabele & gezochtevariabele(z) & "( " &
naamvariabele(z) & " ) , "
Next


' op het einde van de macro de gevraagde grafiek tonen
Sheets("Grafiek2").Activate
ActiveChart.SetSourceData
Source:=Worksheets("Blad2").Range(Worksheets("Blad2").Cells(1, 1), _
Worksheets("Blad2").Cells((aantalgegevensperdag * aantaldagen) + 1,
aantalvariabelen + 1)), PlotBy:=xlColumns
For y = 1 To aantalvariabelen
ActiveChart.SeriesCollection(y).Name = UCase(naamvariabele(y))
ActiveChart.Legend.Position = xlLegendPositionBottom

Next
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Grafiek van " & begindag & " tot en
met " & einddag

.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "tijd"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "t"
End With
Exit Sub

'de subroutine lopendemaand (deze bepaalt in welke en hoeveel bestanden naar
gegevens moet gezocht worden)
uitvoeren:

For m = 1 To aantalvariabelen
Worksheets("Blad2").Cells(1, m + 1) = gezochtevariabele(m)
Next

Dim naamblad(1 To 5) ' naam van werkblad met gezochte
variabele
Dim kolomplaats(1 To 5) ' nr van de kolom in werkblad van de
gezochte variabele


For i = 0 To aantaldagen - 1 'voor elke dag tot dag van vandaag

' jaar bepalen
If (Year(DateAdd("d", i, begindag)) Mod 100) <= 9 Then
jaar = "0" & (Year(DateAdd("d", i, begindag)) Mod 100)
Else
jaar = Year(DateAdd("d", i, begindag)) Mod 100
End If

' maand bepalen
If Month(DateAdd("d", i, begindag)) <= 9 Then
maand = "0" & Month(DateAdd("d", i, begindag))
Else
maand = Month(DateAdd("d", i, begindag))
End If

' dag bepalen
If Day(DateAdd("d", i, begindag)) <= 9 Then
dag = "0" & Day(DateAdd("d", i, begindag))
Else
dag = Day(DateAdd("d", i, begindag))
End If



bestand = bestandsprefix & jaar & maand & dag & ".xls"

bestand1 = bestandsplaats & bestand

' zoeken naar juiste kolom
If i = 0 Then
Workbook.OpenLinks (bestand1) ' bestand van een bepaalde
dag openen
' het werkblad zoeken waarin de gevraagde variabele zich bevindt
For Var = 1 To aantalvariabelen

For Each werkblad In Workbooks(bestand).Worksheets
If Not
Workbooks(bestand).Worksheets(werkblad.Name).Range("A1:DV1").Find(gezochtevariabele(Var)) _
Is Nothing Then
kolomplaats(Var) = _

Workbooks(bestand).Worksheets(werkblad.Name).Range("A1:DV1").Find(gezochtevariabele(Var)).Column
naamblad(Var) = werkblad.Name
tijd = "Tijd"
tijdplaats =
Workbooks(bestand).Worksheets(werkblad.Name).Range("A1:DV1").Find(tijd).Column
Exit For
End If
Next werkblad
naamvariabele(Var) = _

Workbooks(bestand).Worksheets("Samenvatting").Cells(Workbooks(bestand).Worksheets("Samenvatting").Range("A1:A400").Find(gezochtevariabele(Var)).Row, 3)
Next

Workbooks(bestand).Close (False) ' bestand van de dag in kwestie
terug sluiten
End If

For var2 = 1 To aantalvariabelen
For k = 2 To aantalgegevensperdag + 1 ' de lengte bepalen van
de kolom die moet worden
'ingelezen, voor
dagrapport is dit steeds getal 2 tot getal 97

' de formule samenstellen die ervoor zorgt dat in het oorspronkelijke
bestand de gevraagde gegevens verzameld worden
formulemetverwijzingnaarcel = "='" & bestandsplaats & "[" & bestand
& "]" & _
naamblad(var2) & "'!R" & k & "C" & kolomplaats(var2)

Worksheets("Blad2").Cells(k + aantalgegevensperdag * i, var2 +
1).FormulaR1C1 = _
formulemetverwijzingnaarcel
formulemetverwijzingnaarceltijd = "='" & bestandsplaats & "[" &
bestand & "]" & _
naamblad(var2) & "'!R" & k & "C" & tijdplaats
Worksheets("Blad2").Cells(k + aantalgegevensperdag * i,
1).FormulaR1C1 = _
formulemetverwijzingnaarceltijd

Next
Next
Next

Return
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top