einfaches Beispiel -> die Datei c:\autoexec.bat in die Zwischenablage
kopieren
so das ich sie zb im Explorer in ein verzeichnis mittels einfügen kopieren
kann.
Vielen Dank im vorraus.............
>Ich möchte über Excel eine Datei in die Zwischenablage kopieren
>
>einfaches Beispiel -> die Datei c:\autoexec.bat in die Zwischenablage
>kopieren
>so das ich sie zb im Explorer in ein verzeichnis mittels einfügen kopieren
>kann.
>
So wird das nix,
Es gibt aber in VBA die Anweisung
FileCopy source, destination
Gruß HW
--
Hans Werner Hofmann
Aber meine Idee ist die ,das ich eine Dateinamen(+Pfad) in einer
Excel-Tabelle selektiere , und diese mittels einer VBA-Routine in die
Zwischenablage kopiert wird, und ich dann zb. in meinen E-Mail-Programm nur
mehr "einfügen"
ausführen muss, und schon habe ich die Datei am Ziel.
"Hans Werner Hofmann" <h...@lemitec.de> schrieb im Newsbeitrag
news:d9a57tss2d55mvvl8...@4ax.com...
folgendes Makro fügt den Dateipfad als Text in die Zwischenablage, was für
Deine Zwecke ausreichen sollte.
Sub a()
Dim Adressfeld As Object, Pfad$
Set Adressfeld = New DataObject
Pfad = "c:\autoexec.bat"
Adressfeld.SetText Pfad, 1
Adressfeld.PutInClipboard
End Sub
Ein ganz anderer Weg, aus Excel E-Mails zu versenden siehe zB:
http://x75.deja.com/getdoc.xp?AN=595342888&CONTEXT=980613472.2036203562&hitn
um=2
MfG Ullrich
"Kurt Strasser" <kurt.s...@gmx.de> schrieb im Newsbeitrag
news:3a72f340$0$22...@SSP1NO25.highway.telekom.at...
wenn ich zb. im Explorer eine Datei markiere und mit kopieren in die
zwischenablage kopiere, genau das möchte ich über Excel machen , wenn es
sein muss auch mit DLL aufrufen, aber wie.............
"Ullrich Schwarz" <Ullrich...@gmx.de> schrieb im Newsbeitrag
news:94uuq7$5bi6f$1...@ID-7341.news.dfncis.de...
"Kurt Strasser" <kurt.s...@gmx.de> schrieb im Newsbeitrag
news:3a7421e6$0$21...@SSP1NO25.highway.telekom.at...
Hallo Kurt,
was für ein Objekt soll deiner Ansicht nach in die Zwischenablage?
Beim Kopieren im Explorer wird nicht die Datei in die Zwischenablage
kopiert, vielmehr wird ein String mit Pfadnamen erzeugt, wobei die
einzelnen Dateien durch Chr(0) getrennt sind. Ans Ende kommt eine
'Doppelnull' und vor den String eine DROPFILES-Struktur. Das Ganze
wird etwas aufbearbeitet, ein paarmal hin- und herkopiert und an
die API-Funktion SetClipboardData übergeben. Es wird also auch
nur ein Pfad übergeben.
Die Applikation, in die du etwas einfügen willst, muss sich
dann selbst um den Rest kümmern. Falls Sie etwas mit der Art der
Daten in der Zwischenablage anfangen kann, muss sie in diesem
Fall die Liste auslesen und die Dateien selbst kopieren, verschieben,
drucken oder sonstwie bearbeiten. Die Zwischenablage übernimmt
dabei keinen aktiven Part.
> wenn ich zb. im Explorer eine Datei markiere und mit kopieren in die
> zwischenablage kopiere, genau das möchte ich über Excel machen , wenn es
> sein muss auch mit DLL aufrufen, aber wie.............
Ob du mit dieser Methode Erfolg hast, hängt somit ausschließlich
an deinem Mailprogramm. Hast du schon mal probiert, eine Datei
aus dem Explorer zu 'kopieren' und dann in dein Mailprogramm
einzufügen?
Wenn das funktioniert, poste nochmal in die NG. Den Code, um so
eine Liste in die Zwischenablage zu befördern oder auszulesen,
kann ich dir zur Verfügung stellen.
MfG
Michael
Kennst du vielleicht ein paar Sourcecodes bezüglich Clipboard ?
"Michael Schwimmer" <schw...@t-online.de> schrieb im Newsbeitrag
news:954ose$bq$01$1...@news.t-online.com...
'Zum Holen der Dateiliste
Private Declare Function GetClipboardData Lib _
"user32" (ByVal wFormat As Long) As Long
Private Declare Function IsClipboardFormatAvailable _
Lib "user32" (ByVal wFormat As Long) As Long
Private Declare Function DragQueryFile Lib "shell32.dll" _
Alias "DragQueryFileA" (ByVal hDrop As Long, _
ByVal UINT As Long, ByVal lpStr As String, _
ByVal ch As Long) As Long
'Diese Sub stellt eine Dateiliste in die Zwischenablage
'Anschließend kann man diese Dateien mit einem
'Rechtsklick im Explorer und anschließendem Einfügen
'in das Verzeichnis schieben. Vorsicht:
'Bei NT wird eine Kopie erstellt, bei 98 wird verschoben,
'wenn das gleiche Laufwerk genommen wird.
Private Sub DateiInClipboard()
Dim Quelldatei As String, b() As Byte 'Buffer
Dim lngZeiger As Long
'Einzelne Einträge durch Chr(0) getrennt
Quelldatei = "C:\Spitze1.xls" & Chr(0)
'Am Ende zweimal Chr(0) (String(2, 0))
Quelldatei = Quelldatei & "C:\Spitze.xls" & String(2, 0)
'An Struktur DROPFILES anhängen und in Array umwandeln
b = StrConv(String(20, 0) & Quelldatei, vbFromUnicode)
b(0) = 20 'Länge Strukt. DROPFILES
'Speicher über Prozessgrenzen hinweg verfügbar machen
lngZeiger = GlobalAlloc(GMEM_ZEROINIT, UBound(b) + 1)
GlobalLock lngZeiger
'Infos dort ablegen
CopyMemory ByVal lngZeiger, b(0), UBound(b) + 1
GlobalUnlock lngZeiger
'Übergabe an Clipboard
OpenClipboard 0&: EmptyClipboard
SetClipboardData CF_HDROP, lngZeiger: CloseClipboard
End Sub
'Hiermit wird die Liste aus der Zwischenablage gelesen.
Private Function DateilisteAusClipboard() As String
Dim Quelldatei As String, b As String 'Buffer
Dim lngZeiger As Long, lngAnzahl As Long
Dim zähler As Long, Ret As Long
'Wenn Clipboard-Format Fileliste ist, dann ...
If IsClipboardFormatAvailable(CF_HDROP) Then
OpenClipboard 0&
'Zeiger holen
lngZeiger = GetClipboardData(CF_HDROP)
'Anzahl Dateien in der Liste ermitteln
lngAnzahl = DragQueryFile(lngZeiger, -1&, "", 0)
For zähler = 0 To lngAnzahl - 1
'Buffer erzeugen
b = String(256, 0)
'Eine Datei aus Liste mit dem Index zähler holen
'die Anzahl Zeichen werden zurückgegeben
Ret = DragQueryFile(lngZeiger, zähler, b, 255)
'String wird erzeugt
DateilisteAusClipboard = DateilisteAusClipboard _
& Left$(b, Ret) & vbCrLf
Next
CloseClipboard
'MsgBox DateilisteAusClipboard
End If
End Function
MfG
Michael
"Michael Schwimmer" <schw...@t-online.de> schrieb im Newsbeitrag
news:957acn$gqo$04$1...@news.t-online.com...