Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

geöffnete(nicht gespeicherte) xml-datei auslesen

Betrifft: geöffnete(nicht gespeicherte) xml-datei auslesen von: Marcel
Geschrieben am: 07.08.2014 13:38:27

Hallo zusammen,

ich habe eine xml-Datei, welche in Excel2010 geöffnet, aber nicht gespeichert ist.
Auf diese möchte ich nun zugreifen und die Daten in einem ExcelWorkbook per VBA verwenden.

Leider bekomme ich keinen Zugriff darauf.

Habe nun ca. 2 Stunden recherchiert und nichts brauchbares gefunden.
Am nächsten dran war eine Lösung aus diesem Forum:
https://www.herber.de/forum/archiv/172to176/173968_Alle_geoeffneten_Dateien_via_VBAcode_auslesen.html#173968

Damit bekomme ich den Dateinamen, durch den geöffneten Task, aber nicht einen Namen, auf den ich dann mit VBA darauf zugreifen kann.

Bitte helft mir. Danke im Voraus!

  

Betrifft: AW: geöffnete(nicht gespeicherte) xml-datei auslesen von: fcs
Geschrieben am: 11.08.2014 15:19:13

Hallo Marcel,

es funktioniert nur reibungslos, wenn beide Dateien innerhalb der gleichen Excelsession geöffnet sind.

Dann kann man es etwa wie folgt lösen.
Bei Start des Makros muss die Datei aktiv sein, in der die XML-Dateidaten verwendet werden sollen.

Andere Wege sind auch möglich, dann muss man das Makro entsprechend anpassen.

Gruß
Franz

Sub Test()
  Dim wkbAktiv As Workbook, wksAktiv As Worksheet, Zeile_A As Long
  Dim wkbXML As Workbook, wksXML As Worksheet
  Set wkbAktiv = ActiveWorkbook
  Set wksAktiv = wkbAktiv.Worksheets(2)
  
  Set wkbXML = fncGetOtherWorkbook
  
  With wksAktiv
    Zeile_A = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
  End With
  If wkbXML Is Nothing Then
    MsgBox "Es ist keine weitere Datei vorhanden oder es wurde keine Datei gewählt!"
  Else
    MsgBox "Datei """ & wkbXML.Name & """ wurde gewählt!"
    
    Set wksXML = wkbXML.Worksheets(1)
    With wksXML
      .Range("R2:R44").Copy
      wksAktiv.Cells(Zeile_A, 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True
      .Range("Q2:Q44").Copy
      wksAktiv.Cells(Zeile_A + 1, 1).PasteSpecial Paste:=xlPasteAll, Transpose:=True
      wksAktiv.Rows(Zeile_A + 1).Borders.LineStyle = xlLineStyleNone
      wksAktiv.Rows(Zeile_A + 1).Interior.ColorIndex = xlColorIndexNone
    End With
    
  End If
End Sub

Function fncGetOtherWorkbook() As Workbook
  Dim wkb As Workbook, wkbAktiv As Workbook
  Set wkbAktiv = ActiveWorkbook
  For Each wkb In Application.Workbooks
    Select Case LCase(wkb.Name)
      Case LCase(wkbAktiv.Name)
      Case "personl.xls", "personal.xlsb"
      Case Else
        wkb.Activate
        Select Case MsgBox("Diese Datei verwenden?" & vbLf & wkb.Name, _
            vbQuestion + vbYesNoCancel, "Workbook auswählen")
          Case vbYes
            Set fncGetOtherWorkbook = wkb
            Exit For
          Case vbNo
          
          Case vbCancel
            
        End Select
    End Select
  Next
  wkbAktiv.Activate
End Function



 

Beiträge aus den Excel-Beispielen zum Thema "geöffnete(nicht gespeicherte) xml-datei auslesen"