18 Aufrufe
Gefragt in Tabellenkalkulation von drmojo Einsteiger_in (86 Punkte)

Hallo zusammen,

ich habe eine Arbeitsmappe, in der mit VBA momentan im 3. Tabellenblatt das Ergebnis einer Hyperlinkabfrage angezeigt wird, Ich möchte das Ergebnis stattdessen in einem ganz bestimmten Tabellenballt mit dem Namen Profidaten anzeigen lassen.  Der VBA-Code steht unten.
Ich kann zwar die Nummer des Zieltabellenblatts ändern, aber das ist m..E. deshalb nicht unproblematisch, weil damit die Gefahr besteht, dass die Anordnung der Tabellenblätter verändert wird und das Makro dann nicht mehr in der richtigen Tabelle ausgeführt wird.

Vielen Dank vorab für jegliche Hilfe.

Klaus aka drmojo

 

Sub DatenLaden()

Sub DatenLaden()

' Hier wird das Steuerbezirksverzeichnis automatisch aus ISYS geladen
  Sheets("Profidaten").Select
  Range("A1").Select
  Lade_ZustAuto  3   (ANMERKUNG: mit der Zahl 3 wird die Ausgabe in das 3. Tabellenblatt gesteuert)


'
' ggf. weitere Schritte in diesem Hauptteil eintragen
'
'
End Sub
Private Sub Lade_ZustAuto(ByVal ziel_ws As Integer)
   
    Dim xlApp As Object
    Dim xlwb As Object
    Dim Excel As Object
    Dim index As Integer
    Dim FA_NummerManuell As Integer
   
    Application.ScreenUpdating = False
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False
  
        If Sheets("Eingabe").Range("A1").Value = "" Then
           Set xlwb = xlApp.Workbooks.Open("http://isys/cgi-bin/persinfo/auswertung.pl?art=stbezeinzel&dienststelle=" & FA_Nummer & "&format=xls&dateiname=stbez")
          Else
           FA_NummerManuell = Sheets("Eingabe").Range("A2").Value
           Set xlwb = xlApp.Workbooks.Open("http://isys/cgi-bin/persinfo/auswertung.pl?art=stbezeinzel&dienststelle=" & FA_NummerManuell & "&format=xls&dateiname=stbez")
        End If
       
    Set Excel = xlwb.Worksheets(1)
    index = 2
   
    Worksheets(3).Range("I1:I2") = ""
    For x = 5 To Excel.UsedRange.Rows.Count
      If IsNumeric(Excel.Cells(x, 1)) Then
       ' Worksheets(ziel_ws).Range("A" & index & ":G" & index) = Excel.Range("A" & x & ":G" & x).Value
        Worksheets(ziel_ws).Range("J" & index & ":Q" & index) = Excel.Range("A" & x & ":H" & x).Value
        If Excel.Cells(x, 1) = 5000 Then
          Worksheets(ziel_ws).Cells(1, 9) = index
        ElseIf Left(Excel.Cells(x, 1), 2) = 57 And Worksheets(ziel_ws).Cells(2, 9) = "" Then
          Worksheets(ziel_ws).Cells(2, 9) = index
        End If
        index = index + 1
      End If
    Next
   
    Worksheets(3).Range("I1:I2") = ""
    xlwb.Close savechanges:=False
    xlApp.Quit
   
    Set Excel = Nothing
    Set xlwb = Nothing
    Set xlApp = Nothing
   
    Application.ScreenUpdating = True
   
End Sub

4 Antworten

+1 Punkt
Beantwortet von m-o Profi (17.7k Punkte)

Hallo Klaus,

ersetze überall im Makro Lade_ZustAuto die Variable ziel_ws durch "Profidaten" (mit Anführungszeichen).

Die Überschrift des Makros kannst du dann auch ändern, da die Ausgabe in ein festes Arbeitsblatt erfolgt.

Private Sub Lade_ZustAuto()

Beim Aufruf aus dem 1. Makro reicht dann die Zeile

Lade_ZustAuto

Gruß

M.O.

+1 Punkt
Beantwortet von m-o Profi (17.7k Punkte)

Hallo,

noch mal ich wink.

Einfachere Lösung:

Ändere

Private Sub Lade_ZustAuto(ByVal ziel_ws As Integer) 

in

Private Sub Lade_ZustAuto(ByVal ziel_ws As String)

und den Aufruf in

Lade_ZustAuto "Profidaten"

Gruß

M.O.

0 Punkte
Beantwortet von drmojo Einsteiger_in (86 Punkte)
Hallo,
vielen lieben Dank für die schnelle und perfekte Lösung!
Es klappt jetzt genau so wie ich es haben wollte.

LG
klaus
0 Punkte
Beantwortet von drmojo Einsteiger_in (86 Punkte)
Sorry,
ich bin lange nicht hier gewesen und habe vor lauter Begeisterung vergessen, Pluspunkte zu geben ;-)

LG

Klaus
ganz früher mal want2cu
...