Frage von shikser, 77

Wie kann ich mit VBA eine Datei in der gleichen Arbeitsmappe öffnen?

Hallo zusammen,

ich würde gerne mit einem Button eine xml-Datei in der gleichen Arbeitsmappe in einem neuen Tabellenblatt öffnen. Leider wird diese aber in einer neuen Mappe geöffnet. Hat jemand einen Tipp für mich? Hier mein Code, der soweit auch läuft:

Sub Öffnen_Dialog_Datei_auswählen()

Dim wb As Workbook
Dim lngZ As Long
Dim strFileName
Dim strFilter As String
strFilter = "eBOP(*.xml*),*.xml*"
ChDrive "X"
ChDir "X:\***02_Bachelorarbeit"       '---der Pfad ist hier gekürzt, im Original nicht

strFileName = Application.GetOpenFilename(strFilter)
If strFileName = False Then Exit Sub
Set wb = Workbooks.OpenXML(strFileName, LoadOption:=xlXmlLoadImportToList)

MsgBox "Die Datei " & wb.Name & " wurde geöffnet.", vbInformation, "Hinweis"


End Sub

Viele Grüße

Jan

Expertenantwort
von Iamiam, Community-Experte für Excel, 48

kann mich jetzt nicht reinvertiefen, aber wenn die andere Datei weiterhin selbständig bleiben soll, kann ich mir nur vorstellen, das in einem neuen Arbeitsblatt per Formel Zelle für Zelle zu übernehmen.

Flexibel mit der Formel =indirekt(Adresse([Pfaddatei]Blatt!&Zeile();
[Pfaddatei]Blatt!&Spalte())), die reagiert auf eingefügte Zeilen/Spalten in der anderen Datei und bezieht sie mit ein.

über alle infrage kommenden Zellen kopieren. Sieht kompliziert aus, sollte aber gut gehen.

Dein Wunsch, das in Deiner Datei zu ÖFFNEN, geht m.W. nicht.

Oder Du fügst in die Vorlage ein Blatt ein (sofern dort nicht mehrere schon vorhanden:es muss mindestens EINES übrigbleiben) und migrierst das Blatt in Deine Datei, ich glaube, der VBA-Befehl heißt move.

Am Ende wieder zurück.

Kommentar von shikser ,

Vielen Dank für die Antwort.

Mein Ziel ist es, eine Excel-Datei anzulegen, über die ich halt mit einem Makro eine xml-Datei öffnen, bearbeiten und an einem anderen Ort wieder speichern kann. Und das alles möglichst so, dass ich nicht vorher über alle Zellen Formeln legen muss (da ich auch nicht weiß wie groß die Tabelle wird). 

Den move-Befehl muss ich mir nochmal genauer anschauen, falls sich da was ergibt gebe ich gerne Rückmeldung.

Vielleicht gibt es ja noch mehr Vorschläge :)

Gruß

Kommentar von Iamiam ,

mach doch einfach eine Aufzeichnung, damit Du die richtige Syntax bekommst. Kannst sie ja doppelt mit $ und relativ machen. Ich merk mir sowas auch nicht!

am besten mit geteilten Fenstern, damit beide Dateien durch je EINEN Klick aktivierbar/prozessierbar werden!

(das Öffnen miteinbeziehen, das Blatt einfügen reicht einmal - am besten schon vorher-, das Zurückschieben  samt Speichern und Schließen ebenfalls, aber natürlich hinterher zwei getrennte Makros.anlegen, auch wenn man das bedingt steuerbar machen könnte, muss ja nicht sein)

-aber vllt weiß ja wirklich noch jemand was Besseres!-

Kommentar von shikser ,

Ich mach das jetzt so:

Sub Öffnen_Dialog_Datei_auswählen()

Application.ScreenUpdating = False
Dim wb As Workbook
Dim lngZ As Long
Dim strFileName
Dim strFilter As String
strFilter = "eBOP(*.xml*),*.xml*"
ChDrive "X"
ChDir "X:\***" '--- *** sind im Original mein Pfad

strFileName = Application.GetOpenFilename(strFilter)
If strFileName = False Then Exit Sub
Set wb = Workbooks.OpenXML(strFileName, LoadOption:=xlXmlLoadImportToList)

'--- MsgBox "Die Datei " & wb.Name & " wurde geöffnet.", vbInformation, "Hinweis"

Dim TabName As String

Sheets("Tabelle1").Copy After:=Workbooks("Stand_20160510.xlsm").Sheets(1)
Worksheets("Start").Select

Application.ScreenUpdating = True
End Sub

Dann nur noch nen Befehl zum Schließen der anderen Mappe und dann passt das...

Kommentar von Iamiam ,

ok, aber mach auf aller Fälle noch einen ErrorHandler rein, damit Du nicht alles schließen musst, wenn vor screenupdating = true was passiert!

On Error goto Errorhandler

.....

Errorhandler:

Zeile vor den letzten beiden einfügen

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten