Ergebnis 1 bis 8 von 8

Thema: Makros

  1. #1
    Daniel
    Gast

    Standard Makros

    Hallo zusammen,

    wollte mich erkundigen ob jemand hier eine Ahnung von Makros hat.

    Versuche zur Zeit ein Makro zu schreiben, welches mir einen ganzen Pfad mit Worddokumenten einliest, und die Fußzeile der Dokumente ändert, doch ich möchte nicht jeden einzelnden Namen jeder Datei eingeben müssen.. ( bei über 350 Worddokumenten auch ein bißchen mühsehlig, oder ) dieses Makro soll mir eben das Verzeichnis nach *.doc Dateien Filtern und diese ändern.

    Danke im Voraus

    Grüßle

    Daniel
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Daniel
    Gast

    Standard

    Hallo zusammen,

    ich wollte nur kurz bescheid geben das ich die Sache selber gelöst habe .... für alle die mir helfen wollten:

    Trotzdem Danke!!

    Liebe Grüßle

    Daniel

  3. #3
    Administrator Avatar von admin
    Registriert seit
    16.01.2003
    Ort
    Karlsruhe
    Beiträge
    12.779
    Danke
    1
    Bekam 4 mal "Danke" in 2 Postings
    Blog-Einträge
    42

    Standard

    Hätter Dir ja gerne geholfen, aber von Makros habe ich keinen schimmer
    Die Forenregeln und Nutzungsbedingungen sind auch zum lesen da !!!


  4. #4
    Forum Guru Avatar von Carolyn
    Registriert seit
    31.05.2003
    Beiträge
    10.723
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    11

    Standard

    Wie wäre es, wenn Du Deinen Lösungsweg postest, Daniel? Für zukünftige Fragestellungen?
    Abgesehen davon würde ich auch über Makros gerne mehr lernen, so quasi nebenbei...
    Ich weiß nicht, wer oder was ich bin. Ich weiß nur, dass ich tue, was ich tun muß, nicht mehr und nicht weniger.

    Zitat aus "Gildenhaus Thendara", Dritter Teil, Ende 3. Kapitel

  5. #5
    Daniel
    Gast

    Standard

    Hallo zusammen,

    nun gut dann leg ich mal los....

    ihr öffnet Word, geht auf den Menüpunkt "Extras", dann auf den Unterpunkt "Makro" und dann auf "Aufzeichen"....es erscheint daraufhin ein Fenster für den Namen des Makro ( belibigen Namen eintragen )...
    Ihr könnt die Aufnahme des Makro sofort wieder, über den kleinen Button beenden....
    Geht wieder auf Menüpunkt "Extras", dann auf den Unterpunkt "Makro" und dann auf "Visual Basic-Editor".....( jetzt geht der Spaß erst richtig los )....

    Ihr erstellt ein neues Formular ( rechtsklick auf den Ordner "Formulare", auf den Unterpunkt "Einfügen" und dann auf "UserForm" ), bennent dieses im Eigenschaftsfenster unter dem Punkt "Name" auf frmTest um.

    Ihr fügt auf dieses Formular einfach zwei Buttons ein, die ihr von der Werkzeugsammlung ( die automatisch erscheint ) auf das Formular zieht....benennt diese, wiederrum, im Eigenschaftsfenster unter dem Punkt "Name" in cmdPfadangabe und cmdBeenden....

    Klick nun doppelt auf einen der zwei Buttons und fügt folgenden Code ein:

    Code:
    Option Explicit
    Dim strPfad As String
    
    Private Type BROWSEINFO
      hOwner As Long
      pidlRoot As Long
      pszDisplayName As String
      lpszTitle As String
      ulFlags As Long
      lpfn As Long
      lParam As Long
      iImage As Long
    End Type
    
    Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
                "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
                As Long
    
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
                "SHGetPathFromIDListA" (ByVal pidl As Long, _
                ByVal pszPath As String) As Long
    
    Private Sub cmdBeenden_Click()
    
    End
    
    End Sub
    
    Private Sub cmdPfadangabe_Click()
    
    strPfad = BrowseFolder("Test")
    strPfad = strPfad & "\"
    
    Call DateiNameErmitteln
    
    End Sub
    
    Public Function BrowseFolder(szDialogTitle As String) As String
    
      Dim X As Long, bi As BROWSEINFO, dwIList As Long
      Dim szPath As String, wPos As Integer
        
        dwIList = SHBrowseForFolder(bi)
        szPath = Space$(512)
        X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
        
        If X Then
            wPos = InStr(szPath, Chr(0))
            BrowseFolder = Left$(szPath, wPos - 1)
        Else
            BrowseFolder = ""
        End If
    
    End Function
    
    Public Sub DateiNameErmitteln()
    
    Dim strDateiName As String
    
    strDateiName = Dir(strPfad & "*.doc")
    'MsgBox "Die Datei heisst " & strDateiName
    Documents.Open FileName:=strPfad & strDateiName, ConfirmConversions:=False, _
            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
            WritePasswordTemplate:="", Format:=wdOpenFormatAuto
    
    'Hier Code für Bearbeitung des Dokuments eingeben!
    
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
            ActiveWindow.Panes&#40;2&#41;.Close
        End If
        If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
            ActivePane.View.Type = wdOutlineView Then
            ActiveWindow.ActivePane.View.Type = wdPrintView
        End If
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        Selection.MoveDown Unit&#58;=wdLine, Count&#58;=4
        Selection.MoveRight Unit&#58;=wdCharacter, Count&#58;=18
        Selection.TypeText Text&#58;=" TEST"
        ActiveDocument.Save
        ActiveDocument.Close
        
    'Hier muss der Code für der Code für die Bearbeitung des Dokuments aufhören!
    
    Do Until strDateiName = ""
    strDateiName = Dir
    
    If strDateiName = "" Then
        Exit Sub
    End If
    
    'MsgBox "Die Datei heisst " & strDateiName
    Documents.Open FileName&#58;=strPfad & strDateiName, ConfirmConversions&#58;=False, _
            ReadOnly&#58;=False, AddToRecentFiles&#58;=False, PasswordDocument&#58;="", _
            PasswordTemplate&#58;="", Revert&#58;=False, WritePasswordDocument&#58;="", _
            WritePasswordTemplate&#58;="", Format&#58;=wdOpenFormatAuto
    
    'Hier Code für Bearbeitung des Dokuments eingeben!
    
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
            ActiveWindow.Panes&#40;2&#41;.Close
        End If
        If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
            ActivePane.View.Type = wdOutlineView Then
            ActiveWindow.ActivePane.View.Type = wdPrintView
        End If
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        Selection.MoveDown Unit&#58;=wdLine, Count&#58;=4
        Selection.MoveRight Unit&#58;=wdCharacter, Count&#58;=18
        Selection.TypeText Text&#58;=" TEST"
        ActiveDocument.Save
        ActiveDocument.Close
    
    'Hier muss der Code für der Code für die Bearbeitung des Dokuments aufhören!
    
    Loop
    
    End Sub
    Jetzt braucht ihr nur noch im Objektfenster ( den Fenster wo ihr vorher das Formular erzeugt habt ) auf den ordner "Module" klicken, dann auf "Modul1" doppelt und fügt statt:

    Code:
    Sub Test&#40;&#41;
    'irgend ein Text....
    End Sub
    den folgenden ein:

    Code:
    Sub Test&#40;&#41;
    frmTest.Show
    End Sub
    Ihr braucht die ganze Sache nur noch abzuspeichern und schon habt ihr ein schickes Makro programmiert!
    Eigentlich simpel, oder?

    Grüßle

    Daniel

    Legende:

    'Kommentare im Programmcode!

  6. #6
    Daniel
    Gast

    Standard

    Hallo nochmal,

    habe im obrigem Beitrag vergessen zu sagen, dass ihr euch bei Problem oder Anmerungen natürlich an mich wenden könnt...


    Grüßle

    Daniel

    P.S.: Jetzt haben wir doch noch VB Code im Forum....

  7. #7
    Daniel
    Gast

    Standard

    Hallo zusammen,

    ich weiß ich bin nervig, doch es gibt nochmal was neues ....
    Der lange Code hat noch einen kleinen Fehler.... ich schicke nachher die neue Version, die ist auch ein bißchen besser kommentiert...
    der Rechner wo der Code gespeichert ist, arbeitet aber gerade 270 Dokumente ab, das geht noch ne Weile, aber wenn der Rechner wieder greifbar ist und ich dran denke schicke ich euch den Code natürlich...

    Grüßle

    Daniel

  8. #8
    Daniel
    Gast

    Standard

    Hallo zusammen,

    hier die neue Version...
    Code:
    Option Explicit
    
    Dim strPfad As String 'globale Variable für den Dateipfad
    
    Private Type BROWSEINFO 'benutzerdefinierte Variable
      hOwner As Long
      pidlRoot As Long
      pszDisplayName As String
      lpszTitle As String
      ulFlags As Long
      lpfn As Long
      lParam As Long
      iImage As Long
    End Type
    
    'API Funktion für das Einlesen des Dateipfades
    Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
                "SHBrowseForFolderA" &#40;lpBrowseInfo As BROWSEINFO&#41; _
                As Long
    
    'API Funktion für das Einlesen des Dateipfades
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
                "SHGetPathFromIDListA" &#40;ByVal pidl As Long, _
                ByVal pszPath As String&#41; As Long
    
    Private Sub cmdBeenden_Click&#40;&#41;
    
    End 'Makro beenden
    
    End Sub
    
    Private Sub cmdPfadangabe_Click&#40;&#41;
    
    strPfad = BrowseFolder&#40;"Test"&#41; 'Benutzer soll den Dateipfad eingeben
    strPfad = strPfad & "\"        'dem ausgewählten Pfad wird ein "\" hinzugefügt
    
    If strPfad = "\" Then 'wenn der Benutzer bei der Pfadangabe die Abbrechen
        Exit Sub          'Schaltfäche gedrückt hat, soll das Programm nicht
    End If                'weiter ausgeführt werden
    
    Call DateiNameErmitteln        'die Namen der Worddokumente werden gefiltert
    
    End Sub
    
    Public Function BrowseFolder&#40;szDialogTitle As String&#41; As String
    
      Dim X As Long, bi As BROWSEINFO, dwIList As Long 'Variablen deklaration
      Dim szPath As String, wPos As Integer            'Variablen deklaration
        
        dwIList = SHBrowseForFolder&#40;bi&#41; 'Aufruf der API Funktion
        szPath = Space$&#40;512&#41;
        X = SHGetPathFromIDList&#40;ByVal dwIList, ByVal szPath&#41; 'Aufruf der API
                                                             'Funktion
        
        If X Then                        'Hier wird abgefragt ob der Benutzer
            wPos = InStr&#40;szPath, Chr&#40;0&#41;&#41; 'die Abbrechen Schaltfläche gedrückt hat
            BrowseFolder = Left$&#40;szPath, wPos - 1&#41;
        Else
            BrowseFolder = "" 'wenn der Benutzer die Abbrechen Schaltfläche
                              'gedrückt hat, ist der Pfad leer
        End If
    
    End Function
    
    Public Sub DateiNameErmitteln&#40;&#41;
    
    Dim strDateiName As String 'Varable für den Dokumentennamen
    
    strDateiName = Dir&#40;strPfad & "*.doc"&#41; 'Zusammensetzung von Dateiname und Pfad
    
    Documents.Open FileName&#58;=strPfad & strDateiName, ConfirmConversions&#58;=False, _
            ReadOnly&#58;=False, AddToRecentFiles&#58;=False, PasswordDocument&#58;="", _
            PasswordTemplate&#58;="", Revert&#58;=False, WritePasswordDocument&#58;="", _
            WritePasswordTemplate&#58;="", Format&#58;=wdOpenFormatAuto 'erstes Dokument öffnen
    
    '*****************************
    'Hier Code für Makros einfügen
    '*****************************
    
        ActiveDocument.Save
        Application.Run MacroName&#58;="ConvertToPDF"
    
    '*******************************************
    'Hier muss der Code für das Makros aufhören!
    '*******************************************
    
    Do Until strDateiName = "" 'Nächstes Dokument öffnen
    strDateiName = Dir         'nächsten Dokumentennamen anziehen
    
    If strDateiName = "" Then  'wenn kein Dokument mehr vorhanden soll
        Exit Sub               'die Prozedur verlassen werden
    End If
    
    Documents.Open FileName&#58;=strPfad & strDateiName, ConfirmConversions&#58;=False, _
            ReadOnly&#58;=False, AddToRecentFiles&#58;=False, PasswordDocument&#58;="", _
            PasswordTemplate&#58;="", Revert&#58;=False, WritePasswordDocument&#58;="", _
            WritePasswordTemplate&#58;="", Format&#58;=wdOpenFormatAuto 'Dokument öffnen
    
    '*****************************
    'Hier Code für Makros einfügen
    '*****************************
    
        ActiveDocument.Save
        Application.Run MacroName&#58;="ConvertToPDF"
        
    '*******************************************
    'Hier muss der Code für das Makros aufhören!
    '*******************************************
    
    Loop
    
    End Sub

Ähnliche Themen

  1. Probleme mit Word 2002 und den Makros - Absturz
    Von Broker22 im Forum Computer - Internet Forum
    Antworten: 6
    Letzter Beitrag: 07.09.2005, 12:30

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •