Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: LBO am November 24, 2015, 11:59:45 Vormittag
-
Hallo Experten,
ich bin leider ein absoluter Neuling in VBA, ich hoffe ihr könnt mir hier helfen. Ich versuche eine Makro zu erstellen und zwar soll über das CommandButton ein Import einer externen Datei stattfinden. Ich bin in der Datei „Test_Import“ (C:\Users\bia5le\Desktop\Test_Import.xlsx) dort habe ich ein Button erstellt:
Private Sub CommandButton1_Click()
Call datei_import
End Sub
Nun will ich im Module „datei_import“ definieren, das wenn man den Button klickt die externe Datei „Umsatz 2014“ (C:\Users\bia5le\Desktop\Umsatz 2014.xlsx) in „Test_Import“ (C:\Users\bia5le\Desktop\Test_Import.xlsx) in der Tabelle1 ab der Zeile A14 den Inhalt einfügt.
Kann mir hier jemand helfen? :(
Vielen lieben Dank für jegliche Antwort.
-
Moin,
fange doch einmal so an, wie die meisten von uns (Helfern) auch eingestiegen sind: Zeichne mit dem Makrorecorder genau das auf, was später geschehen soll. Diesen Code stellst du uns dann (idealerweise mit dem WorkBook) zur Verfügung und wir schubsen dich dann in die richtige Richtung :)
-
Hi,
probieren wir es doch mal. Hoffe meine Logik ist verständlich (es tut mir leid bin absoluter neueinsteiger) :)
Private Sub CommandButton1_Click()
Workbooks.Open Filename:=" C:\Users\bia5le\Desktop\Umsatz 2014.xlsx" /*der Pfad der Datei welche ich Kopieren will in Test_Import.xlsm
Sheets("Tabelle2").Copy After:=Workbooks("Test_Import.xlsm"). /*Tabelle 2 ist das zu kopierende Datenblatt welches ich in Test_Import.xlsm einfügen will
Windows("Umsatz 2014.xlsx ").Activate /*der Namen der zu kopierenden Datei
ActiveWindow.Close
End Sub
das habe ich mal aus einem anderen Forum und das an mein Beispiel angepasst, in /* ist meine erklärung was ich damit bezwecken will. Und kurz und knapp erklärt= Button soll geklickt werden, Datei "Umsatz 2014" soll in der Datei "Test_Import". Nur weiß ich nicht ob der code überhaupt brauchbar ist. Bin ich nah dran? und wie bekomme ich es hin das es die Ausgabe ab A14 beginnt.
Vielen dank, ich hoffe ich stell mich nicht zu doof an.
-
Vielen dank, ich hoffe ich stell mich nicht zu doof an.
Hmmm,
warum machst du denn nicht genau das, was ich vorgeschlagen habe? Wenn du da Fragen hast gerne ...
Glaube mir, der Lerneffekt ist dann größer!
-
Ich hab es jetzt durch Hilfe hinbekommen.
Falls jemand sowas ähnliches mal braucht:
Sub Button()
Dim wksZiel As Worksheet
Dim wkbQuelle As Workbook, strQuelle As String
Dim wksQuelle As Worksheet
Dim Zeile_Q As Long
Dim Zeile_Z As Long
Dim Zeile_Z1 As Long
Dim shpBild As Shape
Dim ch As Object
strQuelle = "C:Dateipfad" 'Quellenpfad eintragen
If Dir(Pathname:=strQuelle) = "" Then
MsgBox "Datei nicht gefunden!" & vbLf & strQuelle, vbOKOnly, "Import Daten"
Else
Set wksZiel = ActiveWorkbook.Worksheets(1) 'Register 1 wird als Ziel zum einfügen gewählt
Application.ScreenUpdating = False
With wksZiel
Zeile_Z1 = 14
Zeile_Z = .UsedRange.Row + .UsedRange.Rows.Count - 1
If Zeile_Z >= Zeile_Z1 Then 'Bedingung das es ab Zeile 14 der Import ausgegeben wird
For Each shpBild In ActiveSheet.Shapes 'Zuerst wird der Inhalt nach Bildern abgesucht und gelöscht
If shpBild.Type = msoPicture Then
shpBild.Delete
End If
Next
Application.DisplayAlerts = False
For Each ch In ActiveSheet.ChartObjects 'Alte Charts und Diagramme werden nach den Bildern gelöscht
ch.Delete
Next
.Range(.Rows(Zeile_Z1), .Rows(Zeile_Z)).Clear
End If 'Altinhalte werden zum Schluss gelöscht
End With
'Quelldatei soll auch schreibgeschützt öffnen
Set wkbQuelle = Application.Workbooks.Open(Filename:=strQuelle, ReadOnly:=True)
Set wksQuelle = wkbQuelle.Sheets(3) 'ggf. anpassen jeh nachdem welcher Register gezogen werden soll
With wksQuelle
Zeile_Q = .UsedRange.Row + .UsedRange.Rows.Count - 1
.Range(.Rows(1), .Rows(Zeile_Q)).Copy wksZiel.Cells(Zeile_Z1, 1)
End With
Application.CutCopyMode = False
wkbQuelle.Close savechanges:=False
Application.ScreenUpdating = True
End If
End Sub
Hier wird ein Button erstellt das eine Datei importiert, es werden die vorherigen Daten erst mal gelöscht (Inhalt, Bilder, Charts) und dann die Datei importiert. Ist bei mir jetzt Sinnvoll da ich knapp 30 verschiedene ExcelDateien brauch und somit eine Master Excel habe und die welche ich brauche einfach schnell importiere anstatt die immer wieder zu suchen. :) hoffe das hilft jemanden.