Thema Datum  Von Nutzer Rating
Antwort
28.01.2016 16:09:41 Wolfgang
NotSolved
28.01.2016 20:05:51 Gast87344
NotSolved
Rot Excel : Range Namen ermitteln
29.01.2016 09:45:03 Gast24033
NotSolved
29.01.2016 09:48:30 Wolfgang
NotSolved
29.01.2016 18:19:18 Gast60949
NotSolved
01.02.2016 16:42:58 Wolfgang
Solved

Ansicht des Beitrags:
Von:
Gast24033
Datum:
29.01.2016 09:45:03
Views:
771
Rating: Antwort:
  Ja
Thema:
Excel : Range Namen ermitteln

Vielen Dank für Deine Antwort !

Leider funktioniert das wahrscheinlich nur, wenn die Bereiche in der selben Arbeitsmappe liegen, aus der auch das Makro ausgeführt wird.
In meinem Fall öffne ich aus einem Excel Dokument eine zweite Datei, aus der ich dann die Daten in ein Tabellenblatt des ersten Dokumentes kopieren will.

Ich habe Dir mal den Source hier hineinkopiert. Ich habe ihn etwas abgespeckt und die Pfadangaben von Quell und Zieldatei verallgemeinert.

Die Stelle, an die ich die Bereiche = ActiveWorkbook.Names.Count Anweisung geschrieben habe, wäre die Stelle, an der ich die Range-Namen ermitteln würde. Allerdings greife ich mit ActiveWorkbook in die Ziel-Arbeitsmappe und der Zugriff über oSourceWorkbook liefert nichts zurück.

Gruß,
Wolfgang

 

Sub Schaltfläche2_Klicken()

Dim z, i, Anzahl As Integer
Dim zeilen As Integer
Dim spalten As Integer
Dim Dateiname As String
Dim Ausgabedatei As String
Dim Pfad As String
Dim Datei As String
Dim Adresse As Variant

Dim Pos As Long
Dim Count As Integer
Dim SelectedFiles As Integer
Dim OLZelle As String
Dim OLSpalte As String
Dim OLZeile As String
Dim startzeile As Integer
Dim Kostenstelle As String
Dim Tabellenblatt As String
Dim Detailbereich As String
Dim Detail As Integer
Dim oTargetBook As Object
Dim oSourceBook As Object

Dim Bereiche As Integer

Dim dat
Dim bolOeffnen As Boolean

Set dat = Application.FileDialog(msoFileDialogFilePicker)
With dat
  .Title = "Statistikdaten"
  .InitialFileName = "\\ServerQuelldaten\reports"
  .AllowMultiSelect = False ' Nicht mit gedrückter Strg-Taste mehrere Dateien auswählen
  bolOeffnen = .Show
  If bolOeffnen = True Then
    SelectedFiles = .SelectedItems.Count
    Dateiname = .SelectedItems(1)
  Else:
    MsgBox "Abbruch durch Benutzer.", vbInformation
  End If
End With
    
If SelectedFiles > 0 Then
  Application.DisplayAlerts = False
  Application.ScreenUpdating = False

  ' Zieldatei festlegen
  Set oTargetBook = ActiveWorkbook
  ' Quelldatei lesend öffnen
  Set oSourceBook = Workbooks.Open(Dateiname, False, True)

  ' Inhalt des Tabellenblatts "Export" in der Zieldatei löschen
  oTargetBook.Sheets("Export").Cells.Clear

  startzeile = 1

  Bereiche = ActiveWorkbook.Names.Count  ' liefert 0

  Bereiche = oSourceBook.Names.Count  ' liefert auch 0
  
  For Linie = 1 To 4

    Select Case Linie
    Case 1
      Tabellenblatt = "Linie1a"
      Detailbereich = "DetailsTable2"
      Kostenstelle = "005"
    Case 2
      Tabellenblatt = "Linie2"
      Detailbereich = "DetailsTable3"
      Kostenstelle = "006"
    Case 3
      Tabellenblatt = "Linie3"
      Detailbereich = "DetailsTable4"
      Kostenstelle = "007"
    Case 4
      Tabellenblatt = "Linie4"
      Detailbereich = "DetailsTable5"
      Kostenstelle = "011"
    End Select
  
    Sheets(Tabellenblatt).Select
    Range(Detailbereich).Select
    zeilen = Range(Detailbereich).Rows.Count
    If zeilen > 0 Then
      spalten = Range(Detailbereich).Columns.Count
      Adresse = Range(Detailbereich).Address
      Pos = InStr(1, Adresse, ":")
      OLSpalte = WorksheetFunction.Substitute(Left(Adresse, InStr(2, Adresse, "$") - 1), "$", "")
      OLZeile = WorksheetFunction.Substitute(Mid(Adresse, InStr(2, Adresse, "$") + 1, Pos - InStr(2, Adresse, "$") - 1), "$", "")
    
      For i = 1 To zeilen
        oTargetBook.Sheets("Export").Cells(startzeile + i - 1, 1).Value = oSourceBook.Sheets(Tabellenblatt).Cells(OLZeile + i - 1, Columns(OLSpalte).Column + 6).Value
        oTargetBook.Sheets("Export").Cells(startzeile + i - 1, 2).Value = oSourceBook.Sheets(Tabellenblatt).Cells(OLZeile + i - 1, Columns(OLSpalte).Column + 8).Value
        oTargetBook.Sheets("Export").Cells(startzeile + i - 1, 3).Value = oSourceBook.Sheets(Tabellenblatt).Cells(OLZeile + i - 1, Columns(OLSpalte).Column + 11).Value
        oTargetBook.Sheets("Export").Cells(startzeile + i - 1, 4).Value = Kostenstelle
      Next
    End If
    startzeile = startzeile + zeilen
  Next

  oSourceBook.Close savechanges:=False

  ' Ausgabedateiname zusammenbauen.
  Ausgabedatei = "\\ServerZieldaten\Ablage\Statistik_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".txt"
  Open Ausgabedatei For Output As #1

  For i = 1 To oTargetBook.Sheets("Export").UsedRange.Rows.Count
      Print #1, oTargetBook.Sheets("Export").Cells(i, 1).Value & vbTab & oTargetBook.Sheets("Export").Cells(i, 2).Value & vbTab & _
                oTargetBook.Sheets("Export").Cells(i, 3).Value & vbTab & oTargetBook.Sheets("Export").Cells(i, 4).Value
  Next
  Close #1

  MsgBox (Ausgabedatei & " wurde erstellt")
  
  ' Excel Meldungen wieder aktivieren
  Application.DisplayAlerts = True
  Application.ScreenUpdating = True
End If


End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
28.01.2016 16:09:41 Wolfgang
NotSolved
28.01.2016 20:05:51 Gast87344
NotSolved
Rot Excel : Range Namen ermitteln
29.01.2016 09:45:03 Gast24033
NotSolved
29.01.2016 09:48:30 Wolfgang
NotSolved
29.01.2016 18:19:18 Gast60949
NotSolved
01.02.2016 16:42:58 Wolfgang
Solved