Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Tablle ans Ende kopieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Tablle ans Ende kopieren (861 mal gelesen)
AndreasBo
Mitglied
TZ & Konstruktion


Sehen Sie sich das Profil von AndreasBo an!   Senden Sie eine Private Message an AndreasBo  Schreiben Sie einen Gästebucheintrag für AndreasBo

Beiträge: 861
Registriert: 16.11.2006

********
Wenn am Anfang alles schief geht,
nenne es Version 1.0!

erstellt am: 04. Jun. 2008 11:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

brauche mal euren Rat bei folgendem Problem.

In Mappe 1 steht der Code.
Suche Mappe 2 und öffne diese.
Suche in Mappe 1 eine bestimmte Tabelle und lösche diese wenn vorhanden.
Kopiere aus Mappe 2 die Erste Tabelle ans Ende von Mappe 1.
Gib der Tabelle einen bestimmten Namen.

Soweit funktioniert das alles schon prima. Nur das mit dem ans [i][Ende/i] will nicht funktionieren.

Code:
Workbooks(2).Worksheets(1).Copy _
            After:=Workbooks(1).Worksheets(Worksheets.Count)
Code:
Dim i As Integer; i = Sheets.Count
    Workbooks(2).Worksheets(1).Copy _
            After:=Workbooks(1).Sheets(i)
Diese 2 Varianten habe ich getestet  und jedesmal wird die Tabelle an 3.te Stelle kopiert.

Ach ja. es sind in Mappe 1 insgesammt schon 13 Tabelle.

Ich hoffe mal mir kann geholfen werden.

Gruß
Andreas

------------------
  Ich nutze Boardsuche | Google | Netiquette

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 04. Jun. 2008 11:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreasBo 10 Unities + Antwort hilfreich

Moin, moin,
was hälst Du von einer Variablen?
Code:
Dim i As Long

i = Workbooks(1).Worksheets.Count
Workbooks(2).Worksheets(1).Copy After:=Workbooks(1).Sheets(i)


mit so etwas kann man schön feststellen, was denn wohl in die Klammer gehört, in diesem Falle sollte es also auch ein
Workbooks(2).Worksheets(1).Copy After:=Workbooks(1).Sheets(Workbooks(1).Worksheets.Count) tun.

Bei mehreren geöffneten Mappen empfiehlt es sich, diese immer so genau wie möglich anzusprechen also schwammige Formulierungen, wie Sheets(1) ohne Workbookangabe zu vermeiden, ein Grund, warum ich ActiveWorkbook ungern einsetze ;-)
------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info     Excel -Suche    RuA-Suche     FAQ-ACAD     Hilfe zu CAD.de 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AndreasBo
Mitglied
TZ & Konstruktion


Sehen Sie sich das Profil von AndreasBo an!   Senden Sie eine Private Message an AndreasBo  Schreiben Sie einen Gästebucheintrag für AndreasBo

Beiträge: 861
Registriert: 16.11.2006

********
Wenn am Anfang alles schief geht,
nenne es Version 1.0!

erstellt am: 04. Jun. 2008 12:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das ging ja schnell.
Werd es gleich mal nach dem "Mahlzeit" ausprobieren.

------------------
  Ich nutze Boardsuche | Google | Netiquette

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AndreasBo
Mitglied
TZ & Konstruktion


Sehen Sie sich das Profil von AndreasBo an!   Senden Sie eine Private Message an AndreasBo  Schreiben Sie einen Gästebucheintrag für AndreasBo

Beiträge: 861
Registriert: 16.11.2006

********
Wenn am Anfang alles schief geht,
nenne es Version 1.0!

erstellt am: 04. Jun. 2008 13:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von runkelruebe:
Moin, moin,
was hälst Du von einer Variablen?
Code:
Dim i As Long

i = Workbooks(1).Worksheets.Count
Workbooks(2).Worksheets(1).Copy After:=Workbooks(1).Sheets(i)



Das kann so doch gar nich funktionieren. es müsste eher so sein

Code:
Dim i As Long

i = Worksheets.Count
Workbooks(2).Worksheets(1).Copy After:=Workbooks(1).Sheets(i)



Soweit funktioniert das jetzt sehr gut bis auf ein nun neues problem, was vorher aber funktionierte.
Wenn die Tabelle bereits vorhanden ist sollte diese gelöscht werden und das tut er nun nicht und somit kann
keine neue Tabelle erstellt werden, da der Name ja schon vergeben ist.

Hier mal der gesammte Code:

Code:
Private Sub TabKopieren()

    Dim ThisMap
    Dim NewTabName As String
    Dim nme As Name
    Dim i As Long
   
    ThisMap = ThisWorkbook.Name
    NewTabName = "Artickel"
    i = Worksheets.Count
   
'Bildschirmaktaulisierung aus
    Application.ScreenUpdating = False
'Excel Fehlermeldungen aus.
    Application.DisplayAlerts = False
'Für jeden Tabellennamen
    For Each nme In ThisWorkbook.Names
        With WorksheetFunction
        'Wenn Tabellenname bereits vorhanden
            If InStr(nme.Name, NewTabName) Then
            'Tabelle löschen
                Workbooks(ThisMap).Sheets(NewTabName).Delete
            End If
      End With
    Next nme
   
'Tabelle aus externer Mappe ans Ende kopierem
        Workbooks(2).Worksheets(1).Copy _
                    After:=Workbooks(ThisMap).Sheets(i)

'Tabelle umbenennen
    ActiveSheet.Name = NewTabName
'1te Tabelle aktivieren
    Workbooks(ThisMap).Sheets(1).Activate
'Excel Fehlermeldungen an.
    Application.DisplayAlerts = True
End Sub



Sieht jemand den meinen Fehler? Ich find Ihn nicht.

Gruß
Andreas

------------------
  Ich nutze Boardsuche | Google | Netiquette

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 04. Jun. 2008 13:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreasBo 10 Unities + Antwort hilfreich

Also, zu "Das kann doch so gar nicht funktionieren":
kann es nicht? und warum nicht?
es funktioniert nämlich bei mir. Ich schreibe im Normalfall nichts, was ich nicht probiert habe.

Jetzt zum Rest:
Ich weise nochmal auf die Wichtigkeit genauer Ansprachen hin.
Außerdem möchten manche Funktionen (wie z.B. das Paste) immer im aktiven Workbook/sheet ausgeführt werden, aber das nur am Rande.

Im Einzelnen: das ThisWorkbook.Name gibt Dir den Namen der Mappe zurück, in der der VBA-code steht.
-> i = Worksheets.Count ist gleich der Anzahl der Sheets in dieser Mappe.

For Each nme In ThisWorkbook.Names -> die Zeile springt nicht an weil nme nirgendwo zugewiesen wird.

Nimm da mal ne andere Schleife (imho einfacher, und vor Allem: deklarierte Vars)

Wenn Du mit Deiner Aktion ein Sheet löschst, stimmt der Worksheets.count natürlich nicht mehr, also liest den neu aus (Du willst nämlich außerdem auch den von ThisMap undnicht mehr den von der anderen Tabelle.

Alles in allem: teste mal bitte:

Code:
Private Sub TabKopieren()
    Dim ThisMap As String
    Dim NewTabName As String
    Dim nme As Variant
    Dim i As Long, a%
   
    ThisMap = ThisWorkbook.Name
    NewTabName = "Tabelle10"
    i = Worksheets.Count
   
   
'Bildschirmaktaulisierung aus
    Application.ScreenUpdating = False
'Excel Fehlermeldungen aus.
    Application.DisplayAlerts = False
'Für jeden Tabellennamen
    For a = 1 To i
        With WorksheetFunction
        'Wenn Tabellenname bereits vorhanden
        Debug.Print Sheets(a).Name
            If InStr(Sheets(a).Name, NewTabName) Then
            'Tabelle löschen
                Workbooks(ThisMap).Sheets(NewTabName).Delete
            End If
      End With
    Next a 'nme
   
i = Workbooks(ThisMap).Worksheets.Count

'Tabelle aus externer Mappe ans Ende kopierem
        Workbooks(2).Worksheets(1).Copy _
                    After:=Workbooks(ThisMap).Sheets(i)

'Tabelle umbenennen
    ActiveSheet.Name = NewTabName
'1te Tabelle aktivieren
    Workbooks(ThisMap).Sheets(1).Activate
'Excel Fehlermeldungen an.
    Application.DisplayAlerts = True
End Sub


PS: Ich habe jetzt grob Deinen code beibehalten, komplett umstricken fehlen mir Zeit und Motivation ;-)

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info     Excel -Suche    RuA-Suche     FAQ-ACAD     Hilfe zu CAD.de 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AndreasBo
Mitglied
TZ & Konstruktion


Sehen Sie sich das Profil von AndreasBo an!   Senden Sie eine Private Message an AndreasBo  Schreiben Sie einen Gästebucheintrag für AndreasBo

Beiträge: 861
Registriert: 16.11.2006

********
Wenn am Anfang alles schief geht,
nenne es Version 1.0!

erstellt am: 04. Jun. 2008 14:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zum "Das geht dorch gar nicht" nochmal:
Code:
dein Code
i = Workbooks(1).Worksheets.Count
Workbooks(2).Worksheets(1).Copy After:=Workbooks(1).Sheets(i)

Da ist bei 2x Workbooks(1) vorhanden. Das Workbooks(1) bei
i= ist doch falsch, zumindes bei mir wird gemeckert.

Den Rest werd ich gleich mal testen.

Danke und Gruß
Andreas

------------------
  Ich nutze Boardsuche | Google | Netiquette

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 04. Jun. 2008 14:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreasBo 10 Unities + Antwort hilfreich

Das sind zwei Zeilen = zwei versch. Paar Schuhe.

die erste Zeile bestimmt die Variable i mit =Workbooks(1).Worksheets.Count

die zweite Zeile kopiert ein sheets aus Workbook(2) in Workbook(1) und zwar dort ans Ende, so, wie ich verstanden habe, dass Du es möchtest.

Meckern tut er immer dann, wenn er diese Mappe nicht findet, bei mir vorhin: ich hatte 3 Mappen auf, habe den code anlaufen lassen (nicht durch) habe eine Mappe geschlossen und im weiteren Verlauf, konnte er diese Mappe dann nicht mehr finden -> Mecker von Excel.

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info     Excel -Suche    RuA-Suche     FAQ-ACAD     Hilfe zu CAD.de 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz