AW: geöffnete(nicht gespeicherte) xml-datei auslesen
11.08.2014 15:19:13
fcs
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