Thema Datum  Von Nutzer Rating
Antwort
13.07.2017 13:29:33 Rudi
NotSolved
13.07.2017 17:50:03 Ben
NotSolved
14.07.2017 09:25:46 Rudi
NotSolved
Blau VBA Daten aus Datei einlesen und in neue datei kopieren
15.07.2017 13:05:53 Gast70117
NotSolved
17.07.2017 08:13:27 Rudi
NotSolved

Ansicht des Beitrags:
Von:
Gast70117
Datum:
15.07.2017 13:05:53
Views:
603
Rating: Antwort:
  Ja
Thema:
VBA Daten aus Datei einlesen und in neue datei kopieren

Hallo Rudi,

wozu nach einem Begriff suchen, der ggf. nicht vorhanden?

Du hast doch schon eine Fehlersteuerung in deinem Code, dann benutze es auch.

LG

Sub Import_mit_Dialog()
Dim Mappe As Excel.Workbook
Dim Quelle As Excel.Worksheet, Ziel As Excel.Worksheet
Dim Datei As String, Tabelle As String
 
'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("Excel-Dateien(*.xlsx),*xlsx")
         
'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then
   MsgBox "Keine Datei ausgewählt!", , "Abbruch"
   Exit Sub
End If
 
Set Ziel = ThisWorkbook.Worksheets(2)  '<-- konstant und hoffentlich vorhanden

'Name der Quelltabelle aus Zelle
Tabelle = ThisWorkbook.Sheets("Tabelle1").Range("B2").Value   '<-- anpassen

'Ausgewählte Datei öffnen
Application.ScreenUpdating = False  '<-- kein Flackern
Set Mappe = Workbooks.Open(Filename:=Datei)       '<-- ist ja ausgewählt

'ab hier kann ein Fehler auftreten
On Error GoTo Fehler

Set Quelle = Mappe.Sheets(Tabelle) '<-- gewähltes Blatt wird definiert als Quelle
 
'kopieren und einfügen
Quelle.UsedRange.Copy
Ziel.Cells(1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'Fehler auswerten
On Error GoTo 0

Fehler:
Select Case Err.Number
Case 0
   'erfolgreich
Case 9
   MsgBox Tabelle & " = ungültig/ nicht gefunden"
Case Else
    MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
    & "Beschreibung: " & Err.Description _
    , vbCritical, "allgemeiner Fehler"
End Select
Mappe.Close False
'Speicher freigeben
Set Mappe = Nothing
Set Quelle = Nothing
Set Ziel = Nothing
Application.ScreenUpdating = True

End Sub

Eleganter mit Excel 2013 und höher:

Sub Version2013()
Dim oDlg As FileDialog

Application.ScreenUpdating = False
Set oDlg = Application.FileDialog(msoFileDialogOpen)
   With oDlg
      .AllowMultiSelect = False
      .Filters.Clear
      .Filters.Add "Excel", "*.xlsx", 1
      If .Show = -1 Then
         .Execute
      Else
         Exit Sub
      End If
   End With

On Error GoTo errorhandler
   With ActiveWorkbook
      .Sheets(ThisWorkbook.Sheets("Tabelle1").Range("B10").Value).UsedRange.Copy
      ThisWorkbook.Worksheets(2).Cells(1, 1).PasteSpecial _
         Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
         Application.CutCopyMode = False
   End With
On Error GoTo 0
errorhandler:
Select Case Err.Number
   Case 0
      '
   Case 9
      MsgBox "Wert in B10 = ungültig/ nicht gefunden"
   Case Else
      MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
      & "Beschreibung: " & Err.Description _
      , vbCritical, "allgemeiner Fehler"
End Select
ActiveWorkbook.Close False
Application.ScreenUpdating = True
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
13.07.2017 13:29:33 Rudi
NotSolved
13.07.2017 17:50:03 Ben
NotSolved
14.07.2017 09:25:46 Rudi
NotSolved
Blau VBA Daten aus Datei einlesen und in neue datei kopieren
15.07.2017 13:05:53 Gast70117
NotSolved
17.07.2017 08:13:27 Rudi
NotSolved