AW: Namensmanager
29.10.2015 18:42:02
Reaper
Hi,
Danke erst mal für die schnellen Antworten.
@ Hansueli ja WebQueries arbeiten meiner Meinung nach immer mit "Add". Das löschen der jeweiligen Queries ist mit im Code eingebaut.
z.b.
.
.
.Refresh BackgroundQuery:=False
.Delete
oder:
For i = wksZiel.QueryTables.Count To 1 Step -1
wksZiel.QueryTables(i).Delete
was den Code angeht hier der Beispielcode
Option Explicit
Dim strLink, strCon, strName As String
Dim lngS, a, i, iCount As Integer
Dim lngZ As Long, z As Long
Dim wsZiel, wksListeLinks, wksZiel, ws(4) As Worksheet
Dim rng As Range
Dim pt As PivotTable
Private Sub Query_Click()
Set ws(0) = Sheets(1)
Set ws(1) = Sheets(2)
Set ws(2) = Sheets(3)
Set ws(3) = Sheets(4)
Set ws(4) = Sheets(5)
Application.ScreenUpdating = False
Application.EnableEvents = False
ws(2).Columns("A:S").Clear
ws(3).Columns("A:S").Clear
ws(4).Columns("A:S").Clear
Set rng = Union(ws(1).Range("A1").CurrentRegion, _
ws(1).Range("AO1").CurrentRegion, _
ws(1).Range("BY1").CurrentRegion)
rng.Clear
Set wksListeLinks = ws(0)
With wksListeLinks
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
For lngZ = 1 To lngZ
iCount = iCount + 1
If ws(2).Cells(1, 1) = "" Then
Set wsZiel = ws(2)
Set wksZiel = wsZiel
Else
If ws(2).Cells(1, 1).Value 0 Then
Set wsZiel = ws(3)
Set wksZiel = wsZiel
If ws(3).Cells(1, 1).Value 0 Then
Set wsZiel = ws(4)
Set wksZiel = wsZiel
End If
End If
End If
For i = wksZiel.QueryTables.Count To 1 Step -1 ' optional löschen der Anfrage
wksZiel.QueryTables(i).Delete
Next
strLink = wksListeLinks.Cells(lngZ, 1)
strCon = "URL;" & strLink
strName = strLink
With wksZiel.QueryTables.Add(Connection:=strCon, _
Destination:=wksZiel.Range("$A$1"))
.Name = strName
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlAllTables
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
.Delete ' optional löschen der Anfrage
End With
lngS = 1
' folgender Code muss sein, da der Datensatz Leerzeilen enthält
For a = wsZiel.Cells(Rows.Count, lngS).End(xlUp).Row To 1 Step -1
If wsZiel.Cells(a, 1).Value = "" Then
wsZiel.Rows(a).Delete shift:=xlUp
End If
Next a
If iCount = 10 Then
iCount = 0
Set wsZiel = Nothing
End If
Next lngZ
' hier erfolgen weitere Sequenzen wie z.b folgende, sind aber derzeit inaktiv
'For Each pt In ws(4).PivotTables
'pt.RefreshTable
'Next pt
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
Wie gesagt die gleichen Queries laufen einzeln in den Modulen der anderen Mappe ohne Einträge.
Das löschen der Namen ist ne gute Alternative, aber mich würde interresieren warum keine Einträge erfolgen aber in einer Schleife schon.
Gruß
Reaper