Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
308to312
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
308to312
308to312
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

PasteSpecial

PasteSpecial
15.09.2003 15:16:21
Torsten K.
Hallo beisammen,

ich habe ein Problem, bei dem der geübte VBA-Programmierer wohl nur noch den Kopf schütteln wird, aber als VBA-Einsteiger beiß' ich mir daran gerade die Zähne aus.....
In einer Datei ("Master") habe ich in einem Worksheet ("Start") einem Zellbereich den Namen "ADM_Filename" gegeben, dessen Inhalt auf "NL1_ADM.xls" lautet. In dieser Datei habe ich ein weiteres Worksheet ("BUMON"), dessen Zellen (I5:AU457) ich über Kopieren/Inhalte/Werte in eine bereits bestehende Datei kopieren möchte. Diese Datei lautet auf "NL1_ADM.xls" und in das Worksheet "GESAMT", Zellen I5:AU457 sollen die Daten reinkopiert werden. Der Code, den ich unten angeführt habe, läuft bis zur Stelle, an der das PasteSpecial ausgeführt werden soll auch richtig. Aber dann kommt die Fehlermeldung: "Die Paste-Special-Methode des Range-Objektes konnte nicht ausgeführt werden". Ich habe nun schon einiges probiert, komme aber leider nicht weiter. Kann mir jemand weiterhelfen?
Kann ich an der Stelle auch noch anfragen, wie ich vor dem Öffnen der Datei darauf prüfe, ob diese schon geöffnet ist, und wenn ja, Excel nur noch in die Datei reinspringt und nicht ein weiteres mal öffnet?

Dim fi As String

fi = ActiveSheet.Range("ADM_Filename")

Application.ScreenUpdating = False

Sheets("BUMON").Select
Range("I5:AU457").Select
Selection.Copy

Workbooks.Open Filename:= _
"Y:\Budget 2004\Turnover\COPA_Preparation\" & fi, _
password:="", WriteResPassword:=""
With Sheets("GESAMT")
.Unprotect password:="Kennwort"
.Select
.Range("I5:AU457").Select
End With
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
With ActiveSheet
.Protect password:="Kennwort", UserInterfaceOnly:=True
.EnableOutlining = True
End With
Sheets("Split").Select
Range("B3").Select
ActiveWorkbook.Save

Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub

Vielen Dank für Eure Hilfe im voraus.

Gruß
Torsten

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PasteSpecial
15.09.2003 16:03:25
Nike
Hi,
mal so versuchen:


Sub test()
Dim fi As String
Dim wkbQuell As Workbook
Dim wkbZiel As Workbook
Set wkbZiel = ActiveWorkbook
fi = ActiveSheet.Range("ADM_Filename")
'Application.ScreenUpdating = False
Sheets("BUMON").Range("I5:AU457").Copy
Set wkbZiel = Workbooks.Open(Filename:= _
"Y:\Budget 2004\Turnover\COPA_Preparation\" & fi, _
password:="", WriteResPassword:="")
With wkbZiel
With .Sheets("GESAMT")
.Unprotect password:="Kennwort"
.Range("I5:AU457").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
.Protect password:="Kennwort", UserInterfaceOnly:=True
.EnableOutlining = True
End With
.Close True
End With
Sheets("Split").Range("B3").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
Application.ScreenUpdating = True
End Sub


Bye

Nike
Anzeige
AW: PasteSpecial
15.09.2003 16:33:01
Torsten K.
Hallo Nike,

nett, daß Du Dich meinem Problem annimmst.
Leider bleibt Dein Code an der gleichen Stelle hängen wie mein Versuch:

.Range("I5:AU457").PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

An der Stelle kommt die gleiche Fehlermeldung wie bei mir.
Kannst Du Dir das nochmal anschauen und mir weiterhelfen?

Vielen Dank und

Gruß
Torsten
AW: rngZiel.PasteSpecial xlPasteValues
15.09.2003 17:37:52
Nike
Hi,
och menno, immer wieder lass ich mich von diesem blöden
Pastespecial ins Boxhorn jagen ;-)

So müßte es jetzt klappern:


Sub test()
Dim fi As String
Dim wkbQuell As Workbook
Dim wkbZiel As Workbook
Dim rngQuell As Range
Dim rngZiel As Range
Set wkbZiel = ActiveWorkbook
fi = ActiveSheet.Range("ADM_Filename")
Application.ScreenUpdating = False
Set rngQuell = Sheets("BUMON").Range("I5:AU457")
Set wkbZiel = Workbooks.Open(Filename:= _
"Y:\Budget 2004\Turnover\COPA_Preparation\" & fi, _
password:="", WriteResPassword:="")
With wkbZiel
With .Sheets("GESAMT")
.Unprotect password:="Kennwort"
Set rngZiel = .Range("I5:AU457")
rngQuell.Copy
rngZiel.PasteSpecial xlPasteValues
Application.CutCopyMode = False
.Protect password:="Kennwort", UserInterfaceOnly:=True
.EnableOutlining = True
End With
.Close True
End With
Sheets("Split").Range("B3").Select
ActiveWorkbook.Save
Application.ScreenUpdating = True
End Sub


Bye

Nike
Anzeige
AW: rngZiel.PasteSpecial xlPasteValues :-)
16.09.2003 08:52:04
Torsten K.
Guten Morgen Nike,

Dein Code funktioniert tadellos. Ich hab' nur das ".Close True" rausgenommen, weil ich mit der Datei, in die ich gerade Daten reinkopiert habe, weiterarbeiten möchte ("Sheets("Split").Range("B3").Select").
Vielleicht eins noch: Wie prüfe ich ab, ob die Datei, in die ich kopieren möchte, bereits geöffnet ist, und wenn ja, Excel dann nur noch dort reinspringt?
Wenn Du hier auch noch eine Idee hast, wäre mir sehr geholfen.
Nochmals vielen Dank für Deine bisherige Hilfe.

Gruß
Torsten
AW: rngZiel.PasteSpecial xlPasteValues :-)
16.09.2003 10:01:21
Nike
Hi,
ist das Sheet Split auch noch in der Zieldatei?
Wenn ja, könntest du das noch mit in das With - end with Konstrukt ziehen...
Warum willst du denn überhaupt selecten?

Das prüfen und ggf. aktivieren geht nur über eine andere Öffnungsstrategie.
Du definierst dir eine Variable, die dann ggf zu öffnen oder zu aktivieren ist...
Ob die Datei bereits geöffnet wurde wird über die extra Funktion unter der Prozedur
ermittelt...

Dim arrFilename As Variant

Set wkbBasis = ActiveWorkbook

Selection:
' Zu öffnende Dateien erfragen
arrFilename = Application.GetOpenFilename( _
"Exceldateien (*.xls), *.xls, Alle Dateien (*.*), *.*", 1, _
"Exceldateien auswählen...", MultiSelect:=False)
' Ausgewählte Datei des Öffnen-Dialoges in Feld ablegen
If VarType(arrFilename) = vbBoolean Then
If MsgBox("Sie haben keine Dateien ausgewählt." & vbCr & _
"Möchten sie das Makro beenden?", vbYesNo, "Frage") = vbNo Then
GoTo Selection
Else
Set wbkBasis = Nothing
Exit Sub
End If
End If

Application.ScreenUpdating = False
' Die vom Makro vorgenommenen Tätigkeiten
' bleiben zur Geschwidigkeitssteigerung unsichtbar

If FileOpenYet(Dir$(arrFilename)) = False Then
Workbooks.Open FileName:=arrFilename()
Else
Workbooks(Dir$(arrFilename)).Activate ' oder aktivieren
End If
Set wkbZiel = ActiveWorkbook
'...
End Sub



Function FileOpenYet(FileName As String) As Boolean
'eine Funktion, die Prüft ob eine Datei schon geöffnet ist.
Dim s As String
On Error GoTo Nonexistent
s = Workbooks(FileName).Name
FileOpenYet = True
Exit Function
Nonexistent:
FileOpenYet = False
End Function


Bye

Nike
Anzeige
AW: rngZiel.PasteSpecial xlPasteValues :-)
16.09.2003 11:19:54
Torsten K.
Hi Nike,

oje, damit muß ich mich wohl in einer ruhigen Minute mal beschäftigen.
Vielen Dank für die Denksportaufgabe.

Gruß
Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige