kopieren in geschlossene datei

Bild

Betrifft: kopieren in geschlossene datei
von: th.heinrich
Geschrieben am: 25.09.2003 17:43:41

hallo beste helfer,

folgender CODE von Hans CD funzzt super in einer MAPPE. der zu kopierende BEREICH ist nicht zusammenhaengend.


Sub auslesen()
Dim rngAct As Range
Dim intRow As Integer, intCol As Integer
    'Workbooks.Open FileName:="C:\Lab_FE\VBA\Reisebericht\DB.xls"
'Worksheets("auslesen").Activate
   With Worksheets("Tabelle2")
      If IsEmpty(.Cells(1, 1)) Then
         intRow = 1
      Else
         intRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
      End If
      For Each rngAct In Range("A1,C2,C6,E5,A6").Cells
         intCol = intCol + 1
         rngAct.Copy .Cells(intRow, intCol)
      Next rngAct
   End With
   Application.CutCopyMode = False
End Sub


wie klappt das aber mit dem kopieren in eine andere DATEI die geschlossen ist, s. auskommentierten pfad.

also: aus der geoeffneten mappe AUSLESEN soll in die geschlossene mappe DB kopiert werden.

danke fuer hilfe

thomas
Bild


Betrifft: AW: kopieren in geschlossene datei
von: PeterW
Geschrieben am: 25.09.2003 17:45:56

Hallo Thomas,

in eine geschlosse MAppe kannst du nichts schreiben, auch nicht mit VBA.

Gruß
Peter


Bild


Betrifft: oeffnen-kopieren-schliessen
von: th.heinrich
Geschrieben am: 25.09.2003 17:53:34

sorry Peter,

evtl. falscher betreff.

hast Du Dir den CODE angeschaut ?

gruss thomas


Bild


Betrifft: AW: oeffnen-kopieren-schliessen
von: PeterW
Geschrieben am: 25.09.2003 18:01:30

Hallo Thomas,

klar hab ich mir den Code angeschaut und mich gewundert, dass Hans mit Activate arbeitet. ;-)
Erklär mal, was du von wo nach wo kopieren willst (Arbeitsmappe, Blatt, Zellen), dann kann man den Code vernünftig anpassen.

Gruß
Peter


Bild


Betrifft: AW: oeffnen-kopieren-schliessen
von: th.heinrich
Geschrieben am: 25.09.2003 18:12:08

hi Peter,

das ACTIVATE war natuerlich ein hilfloser versuch von mir.

also step bei step.

das sheet AUSLESEN ist offen, jetzt soll ein nicht zusammenhaengender BEREICH (deswegen CODE von Hans) in die 1. leere A:A des noch geschlossene sheets DB (siehe PFAD) kopiert werden.

gruss thomas

ps. erklaeren kann manchmal so schwer sein ;-))


Bild


Betrifft: AW: oeffnen-kopieren-schliessen
von: PeterW
Geschrieben am: 25.09.2003 18:32:44

Hallo Thomas,

probier das mal so, ist aber nicht getestet.


Sub auslesen()
   Dim rngAct As Range
   Dim lgRow As Long
   Dim wksZiel As Worksheet
   Dim wksQuell As Worksheet
   Set wksQuell = ThisWorkbook.Sheets("Quelltabelle")
   Workbooks.Open Filename:="C:\Lab_FE\VBA\Reisebericht\DB.xls"
   Set wksZiel = ActiveWorkbook.Sheets("Zieltabelle")
   With wksZiel
      If IsEmpty(.Cells(1, 1)) Then
         lgRow = 1
      Else
         lgRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
      End If
      For Each rngAct In wksQuell.Range("A1,C2,C6,E5,A6").Cells
         lgRow = lgRow + 1
         .Cells(lgRow, 1) = rngAct
      Next rngAct
   End With
   ActiveWorkbook.Close savechanges:=True
End Sub

Gruß
Peter


Bild


Betrifft: AW: oeffnen-kopieren-schliessen
von: th.heinrich
Geschrieben am: 26.09.2003 15:21:08

hallo Peter,

sorry, dass ich mich erst jetzt melde (strech im job).

Dein Code funzzt, mit einer kleinen ausnahme. die ausgelesenen ZELLEN stehen untereinander in SPALTE A. sollten aber nebeneinander in ZEILE 2 der ZIELTABELLE stehen.

beim CODE von Hans ist dies so. sicher kannst Du mir noch erklaeren was den unterschied bewirkt.

hier nochmal Dein CODE


Sub auslesen_1()
   Dim rngAct As Range
   Dim lgRow As Long
   Dim wksZiel As Worksheet
   Dim wksQuell As Worksheet
   Set wksQuell = ThisWorkbook.Sheets("tabelle1") 'Quelltabelle
   Workbooks.Open FileName:="C:\Lab_FE\VBA\Reisebericht\DB.xls"
   Set wksZiel = ActiveWorkbook.Sheets("tabelle1") 'Zieltabelle
   With wksZiel
      If IsEmpty(.Cells(1, 1)) Then
         lgRow = 1
      Else
         lgRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
      End If
      For Each rngAct In wksQuell.Range("A1,C2,C6,E5,A6").Cells
         lgRow = lgRow + 1
         .Cells(lgRow, 1) = rngAct
      Next rngAct
   End With
   ActiveWorkbook.Close savechanges:=True
End Sub


gruss thomas


Bild


Betrifft: AW: oeffnen-kopieren-schliessen
von: PeterW
Geschrieben am: 26.09.2003 18:48:55

Hallo Thomas,

wenn du dir den geänderten Code ansiehst müsste es deutlich werden. Im Code ist lgRow (Variable für die Zeile) durch iCol (Variable für die Spalte) ersetzt. Mit Cells(Zeile, Spalte) wird jetzt nicht mehr der Zeilenzähler erhöht sondern der Zähler für die Spalte. Im Gegensatz zur Anordnung untereinander würde ich hier noch eine Sicherheit einbauen, wenn die Gefahr besteht, dass mehr als 256 Werte in die Zieltabelle geschrieben werden.



Sub auslesen()
   Dim rngAct As Range
   Dim iCol As Integer
   Dim wksZiel As Worksheet
   Dim wksQuell As Worksheet
   Set wksQuell = ThisWorkbook.Sheets("Quelltabelle")
   Workbooks.Open Filename:="C:\Lab_FE\VBA\Reisebericht\DB.xls"
   Set wksZiel = ActiveWorkbook.Sheets("Zieltabelle")
   With wksZiel
      If IsEmpty(.Cells(2, 1)) Then
         iCol = 0
      Else
         iCol = .Cells(2, Columns.Count).End(xlToLeft).Column
      End If
      For Each rngAct In wksQuell.Range("A1,C2,C6,E5,A6").Cells
         iCol = iCol + 1
         .Cells(2, iCol) = rngAct
      Next rngAct
   End With
   ActiveWorkbook.Close savechanges:=True
End Sub


Gruß
Peter


Bild


Betrifft: AW: oeffnen-kopieren-schliessen
von: th.heinrich
Geschrieben am: 27.09.2003 00:15:18

hi Peter,

vielen dank. der unterschied ist jetzt sogar fuer mich ersichtlich.

werde es am montag auf arbeit gleich einbauen.

schoenes WE

von thomas


Bild


Betrifft: AW: oeffnen-kopieren-schliessen
von: th.heinrich
Geschrieben am: 27.09.2003 16:03:59

hallo Peter,

nun ist es jetzt doch samstag geworden. klappt leider noch nicht ganz.

das auslesen in eine zeile klappt bestens, aber beim AUSLESEN soll der ausgelesen RANGE in der 1. freien ZEILE der SPALTE A stehen.

mit Deinem CODE


Sub auslesen()
   Dim rngAct As Range
   Dim iCol As Integer
   Dim wksZiel As Worksheet
   Dim wksQuell As Worksheet
   Set wksQuell = ThisWorkbook.Sheets("Quelltabelle")
   Workbooks.Open Filename:="C:\Lab_FE\VBA\Reisebericht\DB.xls"
   Set wksZiel = ActiveWorkbook.Sheets("Zieltabelle")
   With wksZiel
      If IsEmpty(.Cells(2, 1)) Then
         iCol = 0
      Else
         iCol = .Cells(2, Columns.Count).End(xlToLeft).Column
      End If
      For Each rngAct In wksQuell.Range("A1,C2,C6,E5,A6").Cells
         iCol = iCol + 1
         .Cells(2, iCol) = rngAct
      Next rngAct
   End With
   ActiveWorkbook.Close savechanges:=True
End Sub


wird ALLES nebeneinander geschrieben.

ich habe schon versucht das prob zu loesen. natuerlich gescheitert.


Sub auslesen()
   Dim rngAct As Range
   Dim irow As Integer
   Dim iCol As Integer
   Dim wksZiel As Worksheet
   Dim wksQuell As Worksheet
   Set wksQuell = ThisWorkbook.Sheets("quelle")
   Workbooks.Open FileName:="C:\test\mappe1.xls"
   Set wksZiel = ActiveWorkbook.Sheets("ziel")
   With wksZiel
      If IsEmpty(.Cells(2, 1)) Then
         iCol = 0
      Else
         iCol = .Cells(2, Columns.Count).End(xlToLeft).Column
      End If
      For Each rngAct In wksQuell.Range("A1,C2,C6,E5,A6").Cells
         irow = .Cells(2, Row.Count).End(xlDown).Row + 1
         'irow = .Cells(2, Row.Count).End(xlDown).Row '= rngAct
      Next rngAct
   End With
   ActiveWorkbook.Close savechanges:=True
End Sub


vielen dank fuer Deine hilfe.

gruss thomas


Bild


Betrifft: AW: oeffnen-kopieren-schliessen
von: PeterW
Geschrieben am: 27.09.2003 17:54:55

Hallo Thomas,

aber jetzt:


Sub auslesen()
   Dim rngAct As Range
   Dim iCol As Integer
   Dim lgrow As Long
   Dim wksZiel As Worksheet
   Dim wksQuell As Worksheet
   Set wksQuell = ThisWorkbook.Sheets("Quelltabelle")
   Workbooks.Open Filename:="C:\Lab_FE\VBA\Reisebericht\DB.xls"
   Set wksZiel = ActiveWorkbook.Sheets("Zieltabelle")
   With wksZiel
      lgrow = .Range("A65536").End(xlUp).Row + 1
      iCol = 0
      For Each rngAct In wksQuell.Range("A1,C2,C6,E5,A6").Cells
         iCol = iCol + 1
         .Cells(lgrow, iCol) = rngAct
      Next rngAct
   End With
   ActiveWorkbook.Close savechanges:=True
End Sub


Einge genaue Aufgabenbeschreibung ist die halbe Lösung. :-)

Gruß
Peter


Bild


Betrifft: Einge genaue Aufgabenbeschreibung ist die halbe Lö
von: th.heinrich
Geschrieben am: 27.09.2003 21:47:21

hi Peter,

danke scheint jetzt zu funzzen.

sorry fuer die unklare problemstellung.

muss mich dabei an der eigenen nase fassen, weil ich dies auch von den fragestellern fordere.

gruss thomas


Bild


Betrifft: nur Sonne, Mond und Sterne scheinen..
von: PeterW
Geschrieben am: 27.09.2003 21:57:25

Hallo Thomas,

was meinst du mit "scheint zu funzzen". Gehts oder gehts nicht - oder hast du vielleicht noch eine Rahmenbedingung nicht erwähnt?

Immer diese präzisen Aussagen. ;-)

Gruß
Peter
PS: die Zeile iCol = 0 kannste rauswerfen weil überflüssig


Bild


Betrifft: AW: nur Sonne, "Mond" ? und Sterne scheinen..;-)
von: th.heinrich
Geschrieben am: 28.09.2003 15:33:15

hallo Peter,

Dein CODE klappt bestens.

vielen dank thomas.

ps. war gestern beim testen OKTOBERFEST geschaedigt.


 Bild

Beiträge aus den Excel-Beispielen zum Thema " kopieren in geschlossene datei"