Ben Hofmann

Mitglied
Sprechprobe
Link
Mit Makros kann man relativ einfach Takes zählen.
1. Ich habe die Namen der Figuren als eigene Formatvorlage angelegt (der gesprochene Text, Musik, Sound sind eine andere Formatvorlage).
2. Diese wird automatisch nummeriert (ist für das Zählen aber nicht relevant)
3. Makro schreiben, dass die Formatvorlage XYName nach dem Figurennamen durchsucht und zählt
4. Diesem Makro mitgeben, das Ergebnis als kurze Liste darzustellen.

Funktioniert überraschend gut. :D

EDIT: Habs mal hier reingehauen. :) Das geht bestimmt auch geschickter, schlanker und hübscher, aber es erfüllt mir den Zweck.

Mein Skript:
1758563533714.png

Makro:
Alt + F11 Makros öffnen und Makro dort einfügen (man beachte meinen tollen Namen der Formatvorlage):


Sub CountNamesWithSpecificStyleAndInsert()
Dim NamesToFind As Variant
Dim WordCount As Long
Dim Rng As Range
Dim resultText As String
Dim i As Integer
Dim StyleToCheck As String

' Die Formatvorlage, die überprüft werden soll
StyleToCheck = "Kein Leerraum;Take"

' Liste der Namen, die gesucht werden sollen
NamesToFind = Array("Erzähler", "Lena Winter", "Max Fischer", "Kai Eilers", "Iris Klein", "Barbara Voigt", "Unbekannter Anrufer", „Radio-Moderatorin“, „Polizeikommissar Martin Berger“, „Robert Voigt“)

' Schleife, um jeden Namen zu durchsuchen
For i = LBound(NamesToFind) To UBound(NamesToFind)
WordCount = 0
Set Rng = ActiveDocument.Range

With Rng.Find
.Text = NamesToFind(i)
.Forward = True
.Wrap = wdFindStop
.Format = True ' Ermöglicht die Formatüberprüfung
End With

Do While Rng.Find.Execute

' Überprüfen, ob der gefundene Text die richtige Formatvorlage hat
If Rng.Style = StyleToCheck Then
WordCount = WordCount + 1
End If
Loop

' Text für das Ergebnis erstellen
resultText = NamesToFind(i) & " - " & WordCount & " Takes"

' Einen neuen Absatz mit dem Ergebnis am Ende des Dokuments einfügen
ActiveDocument.Content.InsertAfter vbCrLf & resultText
Next i
End Sub


F5 zum Ausführen


Ergebnis (Ausschnitt):
1758563590877.png
 
Zuletzt bearbeitet:

Jeln Pueskas

Michael Gerdes
Teammitglied
Sprechprobe
Link
Hallo miteinander. Es sollte noch in einem meiner alten Beiträge das alte Normal.dot herumliegen. Damit lässt sich ebenfalls alles in Word machen. Ist halt schon ein wenig alt das Ding. Hilft aber ungemein beim Schreiben. Ich habe es mal hier reingepackt. Vielleicht lassen sich die Makros ja auch zusammenführen...

Hinweis zum Nutzen: Das ist eigentlich kein .doc-File. Ich konnte es aber nicht anders hochladen. Benennt bitte AudioScript.doc in AudioScript.dot um, packt es in den Word-Vorlagenordner und dann kann man es schon benutzen. Hoffe ich zumindest. Ich habe es beim aktuellen Word noch nicht wieder ausprobiert.
 

Anhänge

  • AudioScript.doc
    140 KB · Aufrufe: 20

Nee

Mitglied
Sprechprobe
Link
Hinweis zum Nutzen: Das ist eigentlich kein .doc-File. Ich konnte es aber nicht anders hochladen. Benennt bitte AudioScript.doc in AudioScript.dot um, packt es in den Word-Vorlagenordner und dann kann man es schon benutzen. Hoffe ich zumindest. Ich habe es beim aktuellen Word noch nicht wieder ausprobiert.

Ich habe es öffnen und die Add-Ins ausführen können (Word 365).


Edit: Wieso eigentlich verbinden? Die Vorlage enthält doch schon einen Takezähler, der die Takes pro Rolle zählt?
Was ich noch nicht gefunden habe, ist wie man einen Plot als selbigen markieren kann. Nur, wie man ihn ein- und ausblendet.
 
Zuletzt bearbeitet:

Ben Hofmann

Mitglied
Sprechprobe
Link
Ich (Nein, die KI. Es ist so gut. :D ) habe das Makro mal ergänzt, so dass man nur den Namen seiner Formatvorlage eingeben muss:

Sub CountNamesFromStyleChronological()
Dim para As Paragraph
Dim StyleToCheck As String
Dim dict As Object
Dim order As Collection
Dim NameText As String
Dim resultText As String
Dim key As Variant

' Formatvorlage, die überprüft wird
StyleToCheck = "Kein Leerraum;Take"

' Dictionary für die Zählung
Set dict = CreateObject("Scripting.Dictionary")
' Collection für die Reihenfolge
Set order = New Collection

' Alle Absätze im Dokument durchgehen
For Each para In ActiveDocument.Paragraphs
If para.Style = StyleToCheck Then
' Text der Zeile holen
NameText = Trim(para.Range.Text)

' Absätze oder Sonderzeichen am Ende entfernen
If Right(NameText, 1) = Chr(13) Or Right(NameText, 1) = Chr(7) Then
NameText = Left(NameText, Len(NameText) - 1)
End If

' Wenn Name schon existiert → hochzählen
If dict.Exists(NameText) Then
dict(NameText) = dict(NameText) + 1
Else
' Neuer Name → ins Dictionary + Reihenfolge merken
dict.Add NameText, 1
order.Add NameText
End If
End If
Next para

' Ergebnisliste aufbauen
resultText = vbCrLf & "Übersicht Takes:" & vbCrLf
For Each key In order
resultText = resultText & key & " - " & dict(key) & " Takes" & vbCrLf
Next key

' Ergebnis am Ende des Dokuments einfügen
ActiveDocument.Content.InsertAfter resultText
End Sub

Was passiert:​

  • Das Makro schaut alle Absätze mit der Formatvorlage „Kein Leerraum;Take“ an.
  • Jeder Absatz wird als Name gewertet.
  • Namen werden in einem Dictionary gezählt.
  • Gleichzeitig speichert eine Collection die Reihenfolge des ersten Auftauchens.
  • Am Ende wird die Liste chronologisch ausgegeben.

Man muss eben nur drauf achten, dass die Figuren immer richtig genannt sind (auch eine gute Art der Fehlersuche), sonst kommt sowas:
1758616715970.png
 
  • Like
Reaktionen: Nee

Jeln Pueskas

Michael Gerdes
Teammitglied
Sprechprobe
Link
Habe vergessen zu erwähnen. Das eingestellte Template stammt nicht von mir sondern ist von einem ehemaligen Mitglied Giallo hier bereitgestellt worden. Ich habe es seitdem aber im Gebrauch, wenn ich mal was schreibe.
 

Nee

Mitglied
Sprechprobe
Link
Habe vergessen zu erwähnen. Das eingestellte Template stammt nicht von mir sondern ist von einem ehemaligen Mitglied Giallo hier bereitgestellt worden. Ich habe es seitdem aber im Gebrauch, wenn ich mal was schreibe.
Hatte ich gestern Abend in der Vorlage auch entdeckt (im Über AudioScript Menü). :)
Ich hab's im ersten Post entsprechend korrigiert.
 
Oben