1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Makro funktioniert leider nicht!- Warum?

Discussion in 'Office-Programme' started by MedicusArnulf, Aug 23, 2013.

Thread Status:
Not open for further replies.
  1. Hallo!

    Habe das Makro genau nach vorgehensweise eingebaut: leider funktioniert es gar nicht! :aua:

    Ablauf:
    Text aus einem pdf-file kopiert in die Zwischenablage =>
    im nächsten Schritt ein neues Word-Dok geöffnet =>
    dann das Makro-Icon aus der Schnellzugriffszeile angeklickt =>
    Fehlermeldung:
    "Fehler beim Kompilieren:
    Benutzerdefinierter Typ nicht definiert"


    Wer weiß Rat? :( - Thx! :bet:
     
  2. Hascheff

    Hascheff Moderator

    Das klingt nach falscher Word-Version. Welches Office hast du denn?

    Edit: Bei mir (Office 2010) kommt die gleiche Meldung.
    Code:
    Dim MyData As New DataObject
    
    Mit DataObject kann VBA nichts anfangen. Diesen Datentyp gibt es nicht.


    Edit 2:
    Abeer eigentlich ist der Nutzen des Makros relativ gering. Bei umfangreicheren Abschnitten kann man genausogut die Ersetzen-Funktion verwenden. Hat man das häufiger zu tun, zeichnet man das als Makro selbst auf.
     
  3. Eric March

    Eric March CD-R 80

    Sieh an, ich habe den gedrucken Code nur überflogen und bin auch bei dem As New DataObject stutzig geworden da es mich an VBS erinnerte. :)

    Jedenfalls traue ich dem Makro nicht über den Weg. Ich habe den Code eingeklebt, an der bewussten Stelle einfach mal in As Object geändert und habe mich mit F8 vorwärtsgehangelt um (O2010 unter W8) unter die Nase gehalten zu kriegen, dass die Zwischenablage leer wäre!!

    Strg+V..:
    Code:
    Sub PasteFromAcrobat()
    Dim [B]MyData As New DataObject[/B]
    Dim strClip As Variant
    Dim strArr() As String
    Dim i As Integer
    Dim AbsatzNachPunkt As Boolean
    ''''''''' Konfiguration Anfang ''''''''''''''''
    AbsatzNachPunkt = True
    ''''''''' Konfiguration Ende ''''''''''''''''
    On Error GoTo ErrMsg
    MyData.GetFromClipboard
    strClip = MyData.GetText(1)
    
    strArr = Split(strClip, Chr(13))
    For i = 0 To UBound(strArr)
     If strArr(i) <> "" Then
     strArr(i) = Replace(Trim(strArr(i)), Chr(10), "")
     strArr(i) = Replace(strArr(i), "  ", " ")
      If Right(strArr(i), 1) = "." And AbsatzNachPunkt Then
        strArr(i) = strArr(i) + Chr(10)
      Else
      If Right(strArr(i), 1) <> "-" Then strArr(i) = strArr(i) + " "
      End If
     S = S + strArr(i)
    End If
    Next i
    Selection.InsertAfter (S)
    Exit Sub
    ErrMsg:
    If Err <> 0 Then MsgBox "In der Zwischenablage sind keine Daten" + Chr(13) + "oder die Zwischenablage ist leer."
    End Sub
    Vielleicht hilft das?
    Code:
    Sub ZwischenablageReinRaus()
    Dim Inhalt As String
    [B]Dim Ablage As DataObject
    Set Ablage = New DataObject
    [/B] 'ZA in String [sollte uns genügen]
     Ablage.GetFromClipboard
     Inhalt = Ablage.GetText(1)
     'String in ZA
     Ablage.SetText Inhalt
     Ablage.PutInClipboard
    End Sub
    …stammt aus meiner Sammlung von Codestückchen die man hier und da immer mal gebrauchen kann. Damit bekommt man die ZA ausgelesen und befüllt.

    Eric March
     
  4. bahnrat

    bahnrat Kbyte

    Hallo!


    Da fehlt ein Verweis auf die "Microsoft Forms 2.0 Object Library". Ohne diesen Verweis ist das DataObject (und somit die Zwischenablage) nicht verfügbar. Einfach eine Userform einfügen und der Verweis ist gesetzt.

    Gruß, René
     
  5. Eric March

    Eric March CD-R 80

    Hmtja - bei mir ist dieser Verweis vorhanden und es tut dennoch nicht. &#8250;Eingeschleppte&#8249; Makros diverser Mappen haben UserForms, ich kann deshalb nicht sagen ob der Eintrag sogar Standard ist oder nicht. Falls nein ist der Artikel schlampig gemacht&#8230;

    Eric March
     
  6. bahnrat

    bahnrat Kbyte

    DataObject ist nicht standardmäßig vorhanden. Das DataObject ist Teil des Userform-Objektmodells. Kann man auch in der VBA-Hilfe nachlesen.
     
  7. bahnrat

    bahnrat Kbyte

    So richtig funktioniert das Makro trotzdem nicht. Man muss immernoch nachbearbeiten. Aber spätestens mit Office 2013 hat sich das Problem ohnehin erledigt.
     
  8. Hascheff

    Hascheff Moderator

    Das war nicht anders zu erwarten.

    In Word habe ich noch nie mit UserForm gearbeitet. Ich dachte, der Code muss in das UserForm-Codefenster. Nein, es reichte, eine Userform anzulegen.

    Dann gibt es nur noch das Problem, dass nicht gleich die erstbeste PDF mitgespielt hat. Es hängt von den Einstellungen bei der PDF-Erstellung ab, ob die Zwischenablage gefüllt wird.
     
  9. bahnrat

    bahnrat Kbyte

    Man kann den Verweis auch manuell setzen, ohne Userform. Dann spart man sogar ein paar Byte an Dateigröße. ;)

    Das ist der Sinn von Bearbeitungs-Kennwörtern.
     
Thread Status:
Not open for further replies.

Share This Page