Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  VBA hilfe copy paste

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:  VBA hilfe copy paste (4587 mal gelesen)
Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 30. Jun. 2011 13:15    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

Folgendes ich habe eine Excel Datei die die Arbeitsblätter von Jänner bis Dezember enthält. Über einen Knopf im Arbeitsblatt Jänner kann ich mit dem Hinterlegten Makro eine Datei öffnen, dann soll er aus der XLS Datei aus dem Arbeitsblatt Jänner den Bereich AD90:AG399 rauskopieren und in die zuvor ausgewählte Datei in die Registerkarte Eingabe in den Bereich A7: D90 reinkopieren. Klappt alles bis aufs reinkopieren kommt eine Bereichsverlezung. Jemand eine Idee?
"Kann die Quelle des Makros nicht mehr nachvollziehen also keine Credits angeben"

Code:
Sub Jänner_Klicken()
    '24.05.2007, NoNet, modifiziert am 18.06.2008 und 21.07.2008
    Dim strdateiname, strAlleNamen As String, n As Integer
    strdateiname = Dateiauswahl()

    If IsArray(strdateiname) Then 'Mehrere Dateien ausgewählt
        'Alle Namen in Eine Variable mit Zeilenumbruch zusammenfügen
        strAlleNamen = Join(strdateiname, vbLf)
        'Anzeige der ausgewählten Dateinamen
        If MsgBox(strAlleNamen, vbYesNo, "Diese Dateein bearbeiten ?") = vbYes Then
            'Alternativ : Zugriff auf einzelne Namen per Schleife :
            For n = 1 To UBound(strdateiname)
                'MsgBox strDateiname(n), vbOKOnly, "Datei Nr. " & n
                DateiBearbeiten strdateiname(n)
            Next
        End If
    Else
        If strdateiname <> "" Then DateiBearbeiten strdateiname
    End If
End Sub

Function Dateiauswahl()
    Dim strdateiname

    'Multiselect:=TRUE bedeutet : Es können mehrere Dateien ausgewählt werden
    'Multiselect:=FALSE bedeutet : Es kann nur EINE Datei ausgewählt werden
    strdateiname = Application.GetOpenFilename( _
          FileFilter:="Excel-Dateien (*.xlsx), *.xlsx", _
          Title:="Datei auswählen", MultiSelect:=True)

    If TypeName(strdateiname) = "Boolean" Then 'Abgebrochen
        Dateiauswahl = ""
    Else
        Dateiauswahl = strdateiname
    End If
End Function

Sub DateiBearbeiten(strdateiname)
    Application.DisplayAlerts = False
    ActiveWorkbook.Sheets("Jänner").Range [AD90:AG399].Copy
    Workbooks.Open strdateiname
    strdateiname.Sheets("Eingabe").Range [A1:D310].xlPasteValues
    ActiveWorkbook.Close False
End Sub


------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

[Diese Nachricht wurde von Sepsis am 30. Jun. 2011 editiert.]

[Diese Nachricht wurde von Sepsis am 30. Jun. 2011 editiert.]

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

MWN
Mitglied
Dipl.-Ing.


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

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 30. Jun. 2011 13:31    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 Sepsis 10 Unities + Antwort hilfreich

Klar: du willst 309 Zeilen kopieren, die er in nur 83 Zeilen einfügen darf. Wie soll das funktionieren? 
Lass ihn doch mal bis D316 einfügen. Mal sehen, was dann passiert.
Grüße und HTH

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

"...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..."

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

Epl 5.70 SC1
Epl P8 v 1.9 Int Sp1
Epl P8 v 2.0 Epl v 2.0 SP1
Epl P8 v 2.1 SP1
Epl P8 v 2.3
Office 2003;2007;2010
ACAD 2004;2006;2010,2014
WSCAD;Gimp

erstellt am: 30. Jun. 2011 13:58    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

Er steigt mir dem Fehler Objekt unterstützt diese Eigenschaft oder Methode nicht aus nachdem er die Zellen bereits in den Arbeitsspeicher kopiert hat! Warum??

Sub DateiBearbeiten(strdateiname)
    Application.DisplayAlerts = False
    ActiveWorkbook.Sheets("Jänner").Range [AD90:AG399].Copy
    Workbooks.Open strdateiname
    strdateiname.Sheets("Eingabe").Range [A1: D310].xlPasteValues
    ActiveWorkbook.Close False
End Sub

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

[Diese Nachricht wurde von Sepsis am 30. Jun. 2011 editiert.]

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

MWN
Mitglied
Dipl.-Ing.


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

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 30. Jun. 2011 15:37    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 Sepsis 10 Unities + Antwort hilfreich

weil strdateiname als String definiert ist und somit keine Eigenschaft "Sheets" besitzt.
Probier statt
Zitat:
strdateiname.Sheets("Eingabe").Range [A1: D310].xlPasteValues

einfach mal:
Code:
Excel.ActiveWorkbook.Sheets("Eingabe").Range [A1: D310].xlPasteValues

Das Ganze ist allerdings ungetestet.
Grüße

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

"...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..."

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

Epl 5.70 SC1
Epl P8 v 1.9 Int Sp1
Epl P8 v 2.0 Epl v 2.0 SP1
Epl P8 v 2.1 SP1
Epl P8 v 2.3
Office 2003;2007;2010
ACAD 2004;2006;2010,2014
WSCAD;Gimp

erstellt am: 30. Jun. 2011 16: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

Geht auch nicht. Wobei die ausgewählte Datei in die in kopieren will doch sicher nicht mit
ActiveWorkbook.Sheets("Eingabe").Range [A1: D310].xlPasteValues angesprochen werden kann! Das ActiveWorkbook ist doch das erste Excel File oder? Der Pfad des Excel files in welches ich die Zellen kopieren will ist in strdateiname reingeschrieben oder?

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 30. Jun. 2011 16:39    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 Sepsis 10 Unities + Antwort hilfreich

Hallo Sepsis, 
Zitat:
Das ActiveWorkbook ist doch das erste Excel File oder?
Nein - bzw. nur dann, wenn es in der aktuellen Instanz nur ein Workbook gibt. Wie der Name schon sagt: Das ActiveWorkbook ist die aktive Arbeitsmappe ;). Im Falle des Öffnens: Die gerade geöffnete, so weit OK.

Noch drei andere Dinge, die mir auffallen, ohne tiefer einzusteigen. Du schreibst

Code:
Sub DateiBearbeiten(strdateiname)
    Application.DisplayAlerts = False
    ActiveWorkbook.Sheets("Jänner").Range [AD90:AG399].Copy
    Workbooks.Open strdateiname
    strdateiname.Sheets("Eingabe").Range [A1:D310].xlPasteValues
    ActiveWorkbook.Close False
End Sub

1. Solange Deine Routine nicht sauber läuft, kommentier' das DisplayAlerts aus! So bekommst Du ggf. schon frühzeitig Fehlermeldungen angezeigt, die sonst unterdrückt werden. Ich vermisse ein ... True für das Re-Aktivieren! ... False sollte IMHO nicht ohne Not eingesetzt werden.

Wenn die Sache "rund" ist, kannst Du es ja wieder - falls erforderlich - mit reinnehmen.

2. Du kopierst einen Bereich (Range) mit mehreren Zellen Umfang. Wie ist es, wenn Du für das Einfügen nur eine einzige Zelle angibst (entweder über Range oder gar über Cells())? Klappt's dann?

3. Warum willst Du nicht speichern (ActiveWorkbook.Close False)?

[Edit: strdateiname ist zum Zeitpunkt des Einfügens Dein ActiveWorkbook. So gewollt? /Edit]

------------------
DIN1055.de  |  Lastannahmen für Anwender

[Diese Nachricht wurde von Paulchen am 30. Jun. 2011 editiert.]

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 30. Jun. 2011 16:58    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 Excelfile welches mir über Dateiauswahl in strdateiname geschrieben wird also quasi mein Ziel wird nie zum Aktiv Workbook, da es nicht geöffnet wird obwohl ich Workbooks.Open strdateiname eingebaut habe! Sprich er kopiert den Bereich ActiveWorkbook.Sheets("Jänner").Range [AD90:AG399].Copy in den Arbeitsspeicher und steigt dann mit besagtem Fehler aus, da die Bereiche mit der Zieldatei nicht Funktionieren!

Ich muss exakt diesen Bereich kopieren und auch in das zweite Excel file in das Arbeitsblatt "Eingabe" in exakt diesen Bereich einfügen, da die Zieldatei wiederum für einen Import verwendet wird und die Formatierung stimmen muss.

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 30. Jun. 2011 17:17    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 Sepsis 10 Unities + Antwort hilfreich

Zitat:
da es (strdateiname) nicht geöffnet wird
Sicher? Wie sieht denn Dein strdateiname zur Laufzeit aus: Laufwerksangabe enthalten? Was verlangt der .Open-Befehl genau? Möglicherweise wird die Datei im Hintergrund oder Minimiert geöffnet?
Zitat:
wird nie zum Aktiv Workbook
Falls es denn mal geöffnet würde, wäre es das ActiveWorkbook! Bau' Dir mal ein
Debug.Print ActiveWorkbook.Fullname (oder so ähnlich) ein, dann bekommst Du den Namen des ActiveWorkbook im Direktbereich ausgegeben.
Zitat:
da die Bereiche mit der Zieldatei nicht Funktionieren!
Glaube ich so nicht. Hast Du's mit einer Zelle als Ziel probiert? Warum sollte das nicht gehen - mit Excel-Bordmitteln klappt Copy & Paste doch auch, wenn Du einen Bereich kopierst und nur eine Zelle als Ziel eingibst  .
Zitat:
Ich muss exakt diesen Bereich kopieren
Klar soweit.
Zitat:
und auch in das zweite Excel file in das Arbeitsblatt "Eingabe" in exakt diesen Bereich einfügen
Das sehe ich anders, wie bereits angedeutet;) .
Zitat:
und die Formatierung stimmen muss
Dann ist xlPasteValues aber nicht zielführend, denn Values=Werte, also ohne Formatierung. Hilft vielleicht ein "normales" Einfügen (nimmt Formate mit) und anschließend ein erneutes Paste mit "Values"?

------------------
DIN1055.de  |  Lastannahmen für Anwender

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 30. Jun. 2011 17:50    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

Mein Fehler will ja Werte ohne Formate kopieren! Ich bin kein VB Profi eventl. könntest du mir kurz erklären wie man einen String in der Laufzeit ansehen kann    .


Zitat:
Bau' Dir mal ein
Debug.Print ActiveWorkbook.Fullname (oder so ähnlich) ein, dann bekommst Du den Namen des ActiveWorkbook im Direktbereich ausgegeben. [/B]

Bezugnehmen auf "Ich bin kein VB Profi" habe ich atm keinen Plan was du mir damit sagen willst  ! Wie gesagt dieses Script habe ich gefunden ohne credits also kann ich den Ersteller nicht fragen. Ich bin mir nicht sicher ob über die Auswahl der Datei der Speicherort derselbigen auch richtig in strdateiname geschrieben werden bzw.: ob sich nicht da irgendwo ein Fehler eingeschlichen hat.

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 30. Jun. 2011 18:08    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 Sepsis 10 Unities + Antwort hilfreich

Na, dann kommen wir der Sache ja näher !

Drück in der VBA-Umgebung Strg+G, das zeigt - in der Regel unten - den Direktbereich an. Du kannst auch zur Laufzeit mit dem Mauszeiger über die Variable gehen, ein PopUp gibt Infos.

Tastatur: Starten und laufen lassen mit F5, Einzelschritt (sehr empfohlen) mit Taste F8, Haltepunkt setzen mit F9 (d. h. Ausführung per z. B. F5 stoppt an dieser Stelle im Code).

Code:
Sub DateiBearbeiten(strdateiname)
    Debug.Print ActiveWorkbook.Fullname
    'Application.DisplayAlerts = False '<-- Auskommentiert mit Hochkomma!
    ActiveWorkbook.Sheets("Jänner").Range [AD90:AG399].Copy
'Welches ist hier das aktive ;-)?
    Workbooks.Open strdateiname
'Und nun ist das aktive ein anderes!
    strdateiname.Sheets("Eingabe").Range("A1").xlPasteValues'?tuts das?
    ActiveWorkbook.Close False
'guck' in die Hilfe: Taste F1 mit Cursor in ActiveWorkbook
End Sub

Jetzt kanns Du im Direktbereich schön den Namen mit Pfad lesen. Den Debug.Print... kommentierst Du später wieder aus, damit der Code nicht ausgeführt wird.

Kopier' Dir den Code und teste mal. Ach so: Alles ungetestet meinerseits. Bin dann mal weg, viel Erfolg!

------------------
DIN1055.de  |  Lastannahmen für Anwender

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 01. Jul. 2011 08: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

Ja er schreibt nach der Auswahl der Datei den Pfad der Datei in den Direkt bereich rein! Frage warum schreibt er nur diesen Wert rein? Weil es meine einzige Variable in diesem Script ist? strAlleNamen hat doch auc einen Wert.... Frage dürfen im Pfad der Zieldatei Umlaute vorkommen ist dieses handicap aus vergangenen Zeiten noch immer ein Problem?

Übrigends bricht er auch mit A1 den Vorgang mit "Objekt unterstützt diese Eigenschaft oder Methode nicht" ab. Beim Punkt Workbooks.Open strdateiname bricht er ab. Wenn ich mit Schritt für Schritt durchlaufen lasse. Sprich er kann den Pfad mit diesem Befehl nicht öffnen!

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

[Diese Nachricht wurde von Sepsis am 01. Jul. 2011 editiert.]

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 01. Jul. 2011 08:23    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 Sepsis 10 Unities + Antwort hilfreich

Guten Morgen!

Hm... oben in Function Dateiauswahl() steht Multiselect auf True - warum auch immer können hier auch mehrere gewählt werden, stell das mal auf False. Zur Sache:

Zitat:
Frage warum schreibt er nur diesen Wert rein?
Debug.Print...  . Lass Dir doch auch mal den Inhalt von strDateiname im Direktbereich ausgeben. Und dann guck in die Hilfe zu Workbook(s).Open - Dir reicht wohl das Öffnen einer Datei.

Evtl. wird das ganze einfacher, wenn Du hier eine/zwei Dummy-Mappe(n) hochlädst: Sensible Daten vorher 'rausnehmen. Ich baue mir Dein(e) Sheet(s) hier sicher nicht nach ;-(.

------------------
DIN1055.de  |  Lastannahmen für Anwender

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 01. Jul. 2011 09: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

Du muss dir in Prinzip nur eine Excelmappe erstellen ein Blatt mit Jänner benennen einen Button einfügen diesem Button das Makro reinkopieren/hinterlegen und fertig! Den Bereich halt mit A10:A10 oder definieren, diesen Bereich mit igendwelchen Werten füllen ist ja im Prinzip egal. Damit sollte das Prinzip zum testen gehen. Ein zweites Excel file braucht man halt als Auswahl für die Zieldatei mit einem Blatt welches mit Eingabe benannt wurde.

Den Befehl "Debug.Print ActiveWorkbook.Fullname" schreibe ich Quasi in jeden Sub, dann kann ich die Variablen beobachten? Ist eine Interessante Geschichte bin atm etwas knapp mit meiner Zeit werde ich bei Gelegenheit mal testen.

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

[Diese Nachricht wurde von Sepsis am 01. Jul. 2011 editiert.]

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 01. Jul. 2011 09:38    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 Sepsis 10 Unities + Antwort hilfreich

Zitat:
Du muss dir in Prinzip nur eine Excelmappe erstellen...
Nein. Ich muss hier gar nix  ; ich bin lediglich der Meinung, dass die Bereitschaft, Dir zu helfen, auch bei anderen steigt, wenn Du zeigst, dass es Dir wichtig ist und Du Dich bemühst. Dazu gehört IMHO eine Beispielmappe.

Zum "Debuggen": Da gibt es noch deutlich mehr Möglichkeiten. Wenn Du mehr Zeit hast: Google Suche nach debug vba, ein Treffer - Abschnitt Werkzeuge für Debugger.

------------------
DIN1055.de  |  Lastannahmen für Anwender

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 01. Jul. 2011 11:59    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


Cadde.zip

 
Bitte A zum exportieren in B oder irgend ein File mit einem Blatt Eingabe
die Dateiauswahl ist gefilter zu xslx also eventl. ändern falls die Office version niedriger ist
------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

[Diese Nachricht wurde von Sepsis am 01. Jul. 2011 editiert.]

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

Thomas Harmening
Moderator
Arbeiter ツ




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

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 01. Jul. 2011 13:25    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 Sepsis 10 Unities + Antwort hilfreich

Code:
Sub DateiBearbeiten(strdateiname)

    Dim wkb As Worksheet  'Aktive WS
    Dim dwkb As Worksheet  'Destination WS
    Dim AName  'aktive Mappe
    Dim ABlatt  'aktives Blatt

Set wkb = ActiveWorkbook.ActiveSheet
    AName = ActiveWorkbook.Name
    ABlatt = ActiveSheet.Name

Workbooks.Open strdateiname

Set dwkb = ActiveWorkbook.ActiveSheet

With dwkb
    Workbooks(AName).Worksheets(ABlatt).Range("A1:E20").Copy Destination:=.Range("A1")
End With
End Sub


try this...

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 01. Jul. 2011 14:32    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

@Thomas Harmening
There is an Error says "Object doesn't support this property or method"!

I found some examples with ur "Destination Code" but it gets me always the same error.....

The Copy code works and the open code works if i delete the rest, so there must be another reason.

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 04. Jul. 2011 16:37    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 Sepsis 10 Unities + Antwort hilfreich

Hallo Sepsis,

Thomas spricht Deutsch    .

An welcher Stelle genau bekommst Du den Fehler? Bei mir (Office 2010) läuft er sauber durch und fügt ein wie gewünscht. Thomas' Code, etwas modifiziert:

Code:
Sub DateiBearbeiten(strdateiname)

Dim AName As String'aktive Mappe
Dim ABlatt As String  'aktives Blatt
 
  AName = ThisWorkbook.Name
  If Not ThisWorkbook.Name = ActiveWorkbook.Name Then ThisWorkbook.Activate
  ABlatt = ActiveSheet.Name

  Debug.Print "Aktives WB VOR öffnen: " & ActiveWorkbook.FullName
  Workbooks.Open strdateiname
 
  Debug.Print "Aname: " & AName
  Debug.Print "ABlatt: " & ABlatt
  Debug.Print "Aktives WB NACH öffnen: " & ActiveWorkbook.FullName

  Workbooks(AName).Worksheets(ABlatt).Range("A1:E20").Copy Destination:=ActiveWorkbook.ActiveSheet.Range("A1")

End Sub


Klar sind da noch ein paar mögliche Fehlerquellen drin. Von wo aus startest Du das Makro? Ich gehe davon aus, dass es in der Quellmappe liegt (ThisWorkbook).

[Edit: Aktive Mappe abfragen schnell und schmutzig /Edit]

------------------
DIN1055.de  |  Lastannahmen für Anwender

[Diese Nachricht wurde von Paulchen am 04. Jul. 2011 editiert.]

[Diese Nachricht wurde von Paulchen am 04. Jul. 2011 editiert.]

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 04. Jul. 2011 16:47    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

Kann atm nicht testen, aber hast du meine Beispielmappen mit Office 2010 geöffnet und bei dir gehts?

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 04. Jul. 2011 18:30    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 Sepsis 10 Unities + Antwort hilfreich


MappA.zip

 
Hi, ne - ging nicht. Deine eckigen Klammern mag der Range nicht, da hilft F8. Nimm diesen - sicher ausbaufähigen
Code:
Private Sub Kopiererei()

Dim strdateiname
  strdateiname = Dateiauswahl()
  If strdateiname <> "" Then DateiBearbeiten (strdateiname)

End Sub

Private Function Dateiauswahl()

Dim tmpFile
   
tmpFile = Application.GetOpenFilename(FileFilter:="Excel-Dateien (*.xlsx), *.xlsx", _
          Title:="Datei auswählen", MultiSelect:=False)

  If tmpFile = False Then
      Dateiauswahl = ""
  Else
      Dateiauswahl = tmpFile
  End If
   
End Function

Private Sub DateiBearbeiten(strFilename)

Dim wbSource As Workbook
Dim wbPaste As Workbook
Dim wsSource As Worksheet
Dim wsPaste As Worksheet

  Set wbSource = ThisWorkbook
  Set wsSource = wbSource.ActiveSheet
  Debug.Print wsSource.Name
  Set wbPaste = Workbooks.Open(strFilename)
  Application.Wait 100
  Set wsPaste = wbPaste.Sheets("Eingabe")
 
  wsSource.Range("A1:E20").Copy ' Destination:=wsPaste.Range("A1")
  wsPaste.Range("A1").PasteSpecial xlPasteValues
  wsPaste.Activate
 
  Set wbSource = Nothing
  Set wsSource = Nothing
  Set wbSource = Nothing
  Set wbPaste = Nothing

End Sub


kopier in ein Modul, verknüpfe ihn mit den Buttons - oder siehe Anhang.

------------------
DIN1055.de  |  Lastannahmen für Anwender

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 05. Jul. 2011 08:50    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

THX, Super funktioniert! Hatte in dem alten Script die Eckigenklammern auch entfernt funktioniert trotzdem nicht hmmm. Auf jeden dein Script geht.
Im Zuge dessen ist mir noch was eingefallen, wie kann man Zeilen auslassen wenn die erste Zelle der Zeile im Bereich keinen INhalt hat? Sodas er keine leeren Zeilen
ins Zielfile einfügt! Sprich wenn ich in der Mitte des Bereichs den Inhalt einer Zeile lösche soll er in Zielfile nur die Zeilen mit Inhalt einfügen. Ohne die leere Zeile dazwischen. Wobei er für dieses Kriterium nur auf die Erste Zelle einer Zeile schauen soll .

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

[Diese Nachricht wurde von Sepsis am 05. Jul. 2011 editiert.]

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 05. Jul. 2011 09:34    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 Sepsis 10 Unities + Antwort hilfreich

Moin,

freut mich  !

Zu Deiner Frage mit den "Zeilen löschen": Das ist ein völlig anderes Thema. Geht auch über VBA. Ich würde erstmal alles kopieren (und natürlich einfügen), einschließlich der leeren Zeilen. Dann - in einer gesonderten Routine - in der Zielmappe die leeren Zeilen rausnehmen lassen. Das ist zwar nicht allzu elegant, jeodch deutlich sicherer, weil Du Dir sonst ggf. die Quellmappe verbiegst.

Dazu gibt es sicher hier im Forum und auch bei Google zahlreiche Hinweise. Dein Kriterium: If Cells(i, 1) = ""... (ungetestet), das ganze in einer Schleife über alle Zeilen der Zielmappe.

Teste bitte selbst ein bisschen, bei konkreten Fragen geht's hier bestimmt weiter; Edit: Sinnvollerweise jedoch in einem anderen (eigenen) Thread?! /Edit

------------------
DIN1055.de  |  Lastannahmen für Anwender

[Diese Nachricht wurde von Paulchen am 05. Jul. 2011 editiert.]

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

Sepsis
Mitglied



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

Beiträge: 399
Registriert: 19.03.2009

erstellt am: 05. Jul. 2011 11:08    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

Jo Danke

------------------
The Man Who Knew Too Much

Am Ende der Evolution steht ein schwarzes Loch und alle schwarzen Löcher die wir beobachten sind Kulturen die auch mit dem Atom gespielt haben.

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