Discussion:
[2007] Value in den Zwischenspeicher aufnehmen
(zu alt für eine Antwort)
Marion Scheffels
2014-09-25 14:14:20 UTC
Permalink
Hi, @all!

In einer Zelle steht eine Adresse. Diese möchte ich vom Makro
beiläufig in den Zwischenspeicher aufnehmen lassen, was man so
normalerweise mit strg+c macht.

Ich fand
Cells(zeile, 12).Value.Copy
ganz logisch, aber das funzt nicht, da fehle das Objekt.

Wie schreibe ich das richtig?

Vielen Dank für euren Input!
MarionS
--
***@marions.de

"The distance between insanity and genius is measured only by
success." - Eliott Carver, TND
Claus Busch
2014-09-25 17:21:37 UTC
Permalink
Hi Marion,
Post by Marion Scheffels
Cells(zeile, 12).Value.Copy
ganz logisch, aber das funzt nicht, da fehle das Objekt.
hast du Zeile auch einen Wert zugeordnet? Z.B. so:

Dim Zeile As Long

Zeile = 5
Cells(Zeile, 12).Copy


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Marion Scheffels
2014-09-25 20:15:49 UTC
Permalink
On Thu, 25 Sep 2014 19:21:37 +0200, Claus Busch
Post by Claus Busch
Dim Zeile As Long
Zeile = 5
Cells(Zeile, 12).Copy
Ja, direkt darüber. Das Makro ist älter und die Variable wird
einwandfrei verwendet.

Ich habe es jetzt ohne "value" versucht, wie du geschrieben hast. Ich
hatte befürchtet, dass die Formatierung mit kopiert würde und ich sie
beim anschließenden händischen Einfügen in Word am Hals hätte, aber
zumindest das geht.

Dafür tritt ein anderer Fehler auf, den ich kaum beschreiben und auch
nicht nachvollziehen kann.
Das Makro dient dazu, auf einem Arbeitsblatt eine Quittung zu bauen
und auszudrucken. Nun wird der Inhalt des Zwischenspeichers unzählige
Male eingefügt und ein meterlanger Bon produziert. Dieser Effekt ist
mir schon aufgefallen... er tritt immer genau dann auf, wenn ich als
letztes Element im Zwischenspeicher eine oder mehrere Zellen aus Excel
kopiert hatte.
Ist auf der lezten Position im Zwischenspeicher aber blanker Text
(auch aus einer Excal Zelle!), passiert das nicht...

Ich kann natürlich schreiben

Dim adresse
adresse = Cells(zeile, 12).Value

Dann wäre der Inhalt der Vairable blanker Text. Aber wie krieg ich den
dann in den Zwischenspeicher...?

MarionS
--
***@marions.de

"Darf ich Ihnen unseren Zehnerpack anbieten?"
"Wieviel sind denn da drin?"
Claus Busch
2014-09-26 05:59:51 UTC
Permalink
Hallo Marion,
Post by Marion Scheffels
Ja, direkt darüber. Das Makro ist älter und die Variable wird
einwandfrei verwendet.
wenn du reinen Text in der Zwischenablage haben willst, probiere es so:
(Du musst einen Verweis auf Microsoft Forms 2.0 Object Library setzen.


Sub ToClipBoard()
Dim strData As String
Dim MyData As dataobject
Dim Zeile As Long

Set MyData = New dataobject
Zeile = 5

strData = Cells(Zeile, 12)

With MyData
.settext strData
.putinclipboard
End With
End Sub

Warum exportierst du nicht direkt aus Excel nach Word bzw. importierst
aus Word von Excel? Hast du mehrer Zellen, die so übertragen werden
sollen? Könnte man die nicht in einem Rutsch übrtragen? Mit dem Makro
könntest du z.B. auch Zellen durchlaufen und den String zusammensetzen.


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Marion Scheffels
2014-09-26 08:59:58 UTC
Permalink
On Fri, 26 Sep 2014 07:59:51 +0200, Claus Busch
Post by Claus Busch
Warum exportierst du nicht direkt aus Excel nach Word bzw. importierst
aus Word von Excel? Hast du mehrer Zellen, die so übertragen werden
sollen? Könnte man die nicht in einem Rutsch übrtragen? Mit dem Makro
könntest du z.B. auch Zellen durchlaufen und den String zusammensetzen.
Die Adressen kommen als eMails oder Downloads aus verschiedenen
Quellen. Ich lasse sie zu einem kommagetrennten String zusammensetzen
und korrigiere den ggf. ein wenig nach. Ich finde den im Kassenbuch
übersichtlicher als einzelne Felder für die einzelnen Angaben.
Sie gehen auch wieder an verschiedene Programme raus: entweder
aufgearbeitet zum Upload an meinen Frachtdienstleister oder für
Kleinteile in einen Etikettenbogen in Word.

Ich weiß, dass man auch in Word mit Datenlisten arbeiten kann, um dann
mit dem ePorto AddIn mehrere Adressen auf einmal zu frankieren. Die
Frage ist, ob sich der Aufwand lohnt. Es sind nur ein paar wenige
Etiketten am Tag, und noch dazu sind sie sehr verschieden - und auf
dem Etikettenbogen sind nur 5 Stück drauf (dafür sind die
Etikettenbögen halt gratis).
Im Moment kopiere ich nach dem Quittungsdruck die Adresse, füge sie in
Word in eines der Etiketten, ein Makro sorgt für das richtige Format,
ich markiere und rufe dann das ePorto AddIn auf, das daraus ein
Etikett macht (bei diesem händischen Verfahren weigert sich das AddIn,
mehr als eine Frankatur pro Etikettenbogenzu erstellen).

Ich probiere nachher mal deinen Vorschlag aus.

LG,
MarionS
--
***@marions.de

"Darf ich Ihnen unseren Zehnerpack anbieten?"
"Wieviel sind denn da drin?"
Lesen Sie weiter auf narkive:
Loading...