Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Datenübername aus anderer Datei
11.05.2018 15:44:15
Patrick
Hallo zusammen,
meine VBA-Kenntnisse werden zwar größer, reichen aber leider hierfür noch nicht.
Ich möchte aus einer Datei die Möglichkeit einer Datenübernahme aus einer anderen Datei ermöglichen.
Konkret:
Ich klicke auf Button X, hierdurch wird Datei xxx geöffnet. Ich markiere z.b. Zeile 8 und es werden aus dieser Zeile die Werte aus A8, B8, D8, E8, I8, K8, L8 jeweils kopiert und in die eigentliche Datei in (fest, nicht per Markierung) Zelle F11, K11, T7, K7, F13, F9, K9 übernommen.
Wichtig, die Datei, aus welcher die Daten übernommen werden sollen, ist mit Passwort geschützt.
Ist dieses möglich und verständlich?
Wenn ja, wie kann ich dieses schaffen?
Gruß und schon ein schönes Wochenende
Patrick

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenübername aus anderer Datei
11.05.2018 17:14:15
mmat
Hallo Patrick,
Zu deiner ersten Frage:
ja, das ist möglich und verstanden habe ich die Aufgabe auch.
Die 2. Frage möchte ich wie folgt beantworten:
Der erste sinnvolle Schritt wäre sicherlich, den ganzen Vorgang mit dem Makrorekorder aufzuzeichnen und danach den aufgezeichneten Code zu optimieren. Gerade dieses Vorgehen scheint mir den Lernprozess optimal zu beschleunigen.
Schönes Wochenende!
AW: Datenübername aus anderer Datei
11.05.2018 17:34:51
Hajo_Zi
zu 2 hätte ich eine Inputbox benutzt.
Option Explicit
Sub Bereich()
Dim RaBereich As Range
Set RaBereich = Application.InputBox("Bitte Bereich wählen", "Bereich", "", Type:=8)
MsgBox RaBereich.Address
End Sub

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: Datenübername aus anderer Datei
11.05.2018 18:00:14
Sepp
Hallo Patrick,
probier mal.
Modul Modul1
Option Explicit 
 
Sub getData() 
  Dim objWB As Workbook, objRange As Object, bolAlreadyOpen As Boolean 
 
  Const cstrFilePath    As String = "D:\Forum\test.xlsx"    'Datei aus der die Daten geholt werden - ANPASSEN! 
   
  Const cstrTargetTabel As String = "Tabelle1"              'Tabellenname in der Zieldatei - ANPASSEN! 
 
  On Error GoTo ErrorHandler 
 
  With Application 
    .ScreenUpdating = False 
    .EnableEvents = False 
    .AskToUpdateLinks = False 
    .DisplayAlerts = False 
    .Calculation = xlCalculationManual 
  End With 
 
  For Each objWB In Application.Workbooks 
    If objWB.FullName = cstrFilePath Then bolAlreadyOpen = True: Exit For 
  Next 
 
  If objWB Is Nothing Then Set objWB = Workbooks.Open(cstrFilePath) 
 
  With ThisWorkbook.Sheets(cstrTargetTabel) 
    On Error Resume Next 
    Set objRange = Application.InputBox("Bitte Zeile auswählen!", "Daten kopieren", ActiveCell.Address, Type:=8) 
    Err.Clear: On Error GoTo ErrorHandler 
    If Not objRange Is Nothing Then 
      Set objRange = objRange.Cells(1, 1).EntireRow 
      .Range("F11") = objRange.Cells(1, 1).Value 
      .Range("K11") = objRange.Cells(1, 2).Value 
      .Range("T7") = objRange.Cells(1, 4).Value 
      .Range("K7") = objRange.Cells(1, 5).Value 
      .Range("F13") = objRange.Cells(1, 9).Value 
      .Range("F9") = objRange.Cells(1, 11).Value 
      .Range("K9") = objRange.Cells(1, 12).Value 
    End If 
  End With 
 
  If bolAlreadyOpen Then objWB.Close False 
 
ErrorHandler: 
 
  If Err.Number <> 0 Then 
    MsgBox "Fehler in Modul1" & vbLf & vbLf & "Prozedur:" & vbTab & "getData" & vbLf & _
      "Nummer:" & vbTab & Err.Number & vbLf & "Meldung:" & vbTab & Err.Description & vbLf & _
      IIf(Erl, "Zeile:" & vbTab & Erl, ""), vbExclamation, "Fehler!" 
    Err.Clear 
  End If 
 
  With Application 
    .ScreenUpdating = True 
    .EnableEvents = True 
    .AskToUpdateLinks = True 
    .DisplayAlerts = True 
    .Calculation = xlCalculationAutomatic 
  End With 
 
  Set objRange = Nothing 
  Set objWB = Nothing 
End Sub 
 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Datenübername aus anderer Datei
11.05.2018 18:06:29
Sepp
Hallo nochmal,
die Zeile muss natürlich so lauten!
  If Not bolAlreadyOpen Then objWB.Close False

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
Nochmal der komplette Code
11.05.2018 18:09:40
Sepp
Modul Modul1
Option Explicit 
 
Sub getData() 
  Dim objWB As Workbook, objRange As Object, bolAlreadyOpen As Boolean 
 
  Const cstrFilePath    As String = "D:\Forum\test.xlsx"    'Datei aus der die Daten geholt werden - ANPASSEN! 
   
  Const cstrTargetTabel As String = "Tabelle1"              'Tabellenname in der Zieldatei - ANPASSEN! 
 
  On Error GoTo ErrorHandler 
 
  With Application 
    .EnableEvents = False 
    .AskToUpdateLinks = False 
    .DisplayAlerts = False 
    .Calculation = xlCalculationManual 
  End With 
 
  For Each objWB In Application.Workbooks 
    If objWB.FullName = cstrFilePath Then bolAlreadyOpen = True: Exit For 
  Next 
 
  If objWB Is Nothing Then Set objWB = Workbooks.Open(cstrFilePath) 
  DoEvents 
  With ThisWorkbook.Sheets(cstrTargetTabel) 
    On Error Resume Next 
    Set objRange = Application.InputBox("Bitte Zeile auswählen!", "Daten kopieren", ActiveCell.Address, Type:=8) 
    Err.Clear: On Error GoTo ErrorHandler 
    If Not objRange Is Nothing Then 
      Set objRange = objRange.Cells(1, 1).EntireRow 
      .Range("F11") = objRange.Cells(1, 1).Value 
      .Range("K11") = objRange.Cells(1, 2).Value 
      .Range("T7") = objRange.Cells(1, 4).Value 
      .Range("K7") = objRange.Cells(1, 5).Value 
      .Range("F13") = objRange.Cells(1, 9).Value 
      .Range("F9") = objRange.Cells(1, 11).Value 
      .Range("K9") = objRange.Cells(1, 12).Value 
    End If 
  End With 
 
  If Not bolAlreadyOpen Then objWB.Close False 
 
ErrorHandler: 
 
  If Err.Number <> 0 Then 
    MsgBox "Fehler in Modul1" & vbLf & vbLf & "Prozedur:" & vbTab & "getData" & vbLf & _
      "Nummer:" & vbTab & Err.Number & vbLf & "Meldung:" & vbTab & Err.Description & vbLf & _
      IIf(Erl, "Zeile:" & vbTab & Erl, ""), vbExclamation, "Fehler!" 
    Err.Clear 
  End If 
 
  With Application 
    .EnableEvents = True 
    .AskToUpdateLinks = True 
    .DisplayAlerts = True 
    .Calculation = xlCalculationAutomatic 
  End With 
 
  Set objRange = Nothing 
  Set objWB = Nothing 
End Sub 
 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Nochmal der komplette Code
16.05.2018 14:33:16
Patrick
Vielen Dank für die Hilfe, ich konnte mich leider nicht früher melden.
Ich gehe davon aus, dass
Const cstrTargetTabel As String = "Tabelle1"              'Tabellenname in der Zieldatei - ANPASSEN!

der Tabellenname der Datei ist, aus der ich die Daten hole. Den Tabellennamen kann ich leider nicht angeben, da es ein Excel-Kalender mit monatlichen Tabellenblättern ist. Geht der Code auch ohne diese Angabe?
Gruß und Danke,
Patrick
AW: Nochmal der komplette Code
16.05.2018 14:59:36
mmat
Nein. Sowohl als auch.
Es handelt sich um den Tabellennamen, wo die Daten hinsollen.
Ohne diese Angabe geht dieser Code nicht.
;-)
Anzeige
AW: Nochmal der komplette Code
16.05.2018 19:18:40
Sepp
Hallo Patrick,
was genau an
"'Tabellenname in der Zieldatei - ANPASSEN!"
verstehst du nicht?
 ABCDEF
1Gruß Sepp
2
3

Anzeige

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige