Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
420to424
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
420to424
420to424
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zugriff auf externe Datei

Zugriff auf externe Datei
Uwe
Hallo,
wie baue ich folgendes Makro um, das es nicht mehr auf Tabelle 11 dieser Datei sondern auf Tabelle 1 einer externen Datei (z.B. c:\test.xls) zugreift?
Vielen Dank und noch einen schönen 1.Mai.
Uwe

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws1 As Worksheet
Dim zeile As Long
Set ws1 = ThisWorkbook.Worksheets(11)
zeile = 2
If Target.Cells.Count > 1 Then Exit Sub
If Target.Column = 16 Then
Do Until IsEmpty(ws1.Cells(zeile, "P"))
If Target = ws1.Cells(zeile, "P") Then
' Werte aus Tabelle 1 übernehmen
ws1.Range(ws1.Cells(zeile, 5), ws1.Cells(zeile, 16)).Copy
Me.Range(Me.Cells(Target.Row, 5), Me.Cells(Target.Row, 16)). _
PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = xlCut
Target.Select
Exit Do
End If
zeile = zeile + 1
Loop
End If
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zugriff auf externe Datei
01.05.2004 13:23:14
Georg
Hallo Uwe
die Datei muß auf sein
Set ws1 = Workbooks("test.xls").Worksheets("Tabelle1")
Gruß
AW: Zugriff auf externe Datei
01.05.2004 13:35:08
Nepumuk
Hallo Uwe,
VBA gut?
folgende Variante funktioniert, wenn die Datei test.xls geöffnet ist:


Private Sub Worksheet_Change(ByVal Target As Range)
  Dim ws1 As Worksheet
  Dim zeile As Long
  Set ws1 = Workbooks("test.xls").Worksheets("Tabelle1")
  zeile = 2
  If Target.Cells.Count > 1 Then Exit Sub
  If Target.Column = 16 Then
    Do Until IsEmpty(ws1.Cells(zeile, "P"))
      If Target = ws1.Cells(zeile, "P") Then
        ' Werte aus Tabelle 1 übernehmen
        ws1.Range(ws1.Cells(zeile, 5), ws1.Cells(zeile, 16)).Copy
        Me.Range(Me.Cells(Target.Row, 5), Me.Cells(Target.Row, 16)). _
                  PasteSpecial Paste:=xlPasteAll
        Application.CutCopyMode = xlCut
        Target.Select
        Exit Do
      End If
      zeile = zeile + 1
    Loop
  End If
End Sub


ist sie nicht geöffnet, dann so:


Private Sub Worksheet_Change(ByVal Target As Range)
  Dim ws1 As Worksheet
  Dim zeile As Long
  zeile = 2
  If Target.Cells.Count > 1 Then Exit Sub
  If Target.Column = 16 Then
    GetObject ("c:\test.xls")
    Set ws1 = Workbooks("test.xls").Worksheets("Tabelle1")
    Do Until IsEmpty(ws1.Cells(zeile, "P"))
      If Target = ws1.Cells(zeile, "P") Then
        ' Werte aus Tabelle 1 übernehmen
        ws1.Range(ws1.Cells(zeile, 5), ws1.Cells(zeile, 16)).Copy
        Me.Range(Me.Cells(Target.Row, 5), Me.Cells(Target.Row, 16)). _
                  PasteSpecial Paste:=xlPasteAll
        Application.CutCopyMode = xlCut
        Target.Select
        Exit Do
      End If
      zeile = zeile + 1
    Loop
    Workbooks("test.xls").Close SaveChanges:=False
  End If
End Sub


wenn sie mal geöffnet ist und mal nicht, dann so:


Private Sub Worksheet_Change(ByVal Target As Range)
  Dim ws1 As Worksheet, wkb As Workbook
  Dim zeile As Long, boloffen As Boolean
  zeile = 2
  If Target.Cells.Count > 1 Then Exit Sub
  If Target.Column = 16 Then
    For Each wkb In Workbooks
        If wkb.Name = "test.xls" Then boloffen = TrueExit For
    Next
    If Not boloffen Then GetObject ("c:\test.xls")
    Set ws1 = Workbooks("test.xls").Worksheets("Tabelle1")
    Do Until IsEmpty(ws1.Cells(zeile, "P"))
      If Target = ws1.Cells(zeile, "P") Then
        ' Werte aus Tabelle 1 übernehmen
        ws1.Range(ws1.Cells(zeile, 5), ws1.Cells(zeile, 16)).Copy
        Me.Range(Me.Cells(Target.Row, 5), Me.Cells(Target.Row, 16)). _
                  PasteSpecial Paste:=xlPasteAll
        Application.CutCopyMode = xlCut
        Target.Select
        Exit Do
      End If
      zeile = zeile + 1
    Loop
    If Not boloffen Then Workbooks("test.xls").Close SaveChanges:=False
  End If
End Sub


Gruß
Nepumuk
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige