![]() |
*.doc aufteilen...
Hallo Leute,
ich habe mit Hilfe von GeorgWNewbie :wink: schon ein ganz ordentliches Makro gebastelt, dass aus einer Doc-Datei mehrere HTML-Dateien macht. Hier der Code:
Code:
Private Sub CommandButton1_Click()
a = TextBox1.Text b = TextBox2.Text c = 0 d = 0 markieren End Sub Sub markieren() While c = 0 d = d + 1 Dim FirstPos, SecPos As Integer FirstPos = -1 SecPos = -1 ActiveDocument.Range(0, 0).Select Do While FirstPos = -1 Or SecPos = -1 With Selection.Find .ClearFormatting .Font.Size = a .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute If Not Selection.Find.Found Then c = 1 End If If FirstPos = -1 Then FirstPos = Selection.Start ElseIf SecPos = -1 Then SecPos = Selection.Start End If Loop If FirstPos <> -1 And SecPos <> -1 Then Selection.Start = FirstPos Selection.End = SecPos End If Selection.Cut Documents.Add Template:="", NewTemplate:=False, DocumentType:=1 Selection.Paste ChangeFileOpenDirectory b ActiveDocument.SaveAs FileName:=d + ".htm", FileFormat:=wdFormatHTML, _ LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ False Wend Selection.WholeStory Selection.Cut Documents.Add Template:="", NewTemplate:=False, DocumentType:=1 Selection.Paste ChangeFileOpenDirectory b ActiveDocument.SaveAs FileName:=d + ".htm", FileFormat:=wdFormatHTML, _ LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ False End Sub Das Problem ist, dass ich diesen code noch nicht testen konnte, da er an folgender Stelle immer einen Laufzeitfehler ausgibt:
Code:
Wahrscheinlich werden weitere Fehler auftauchen, aber vieleicht kann mir ja einer von euch sagen, was ich an dieser Stelle falsch gemacht habe :|
.ClearFormatting
.Font.Size = a <-- An dieser Stelle erscheint der Fehler!!! .Text = "" .Replacement.Text = "" bua, tia, cu gordon |
Re: *.doc aufteilen...
In Delphi wäre der Fehler, das a nicht vom Typ Integer ist sonder vom Typ String. Aber wie das in VB ist weiss ich nicht mehr. Du müsstest a folglich in einen Interger umwandeln.
|
Re: *.doc aufteilen...
Zitat:
|
Re: *.doc aufteilen...
Versuche mal alle Variablen statt diese z.B. als Integer zu definieren diese als OleVariant zu definieren. Vielleicht klappt das ja ;-)
...:cat:... |
Re: *.doc aufteilen...
Zitat:
trotzdem Danke für die Anregung :wink: |
Re: *.doc aufteilen...
Achso, ich hatte mich geirrt und dachte, Du willst es nach Delphi portieren :oops: Dann schreibe z.B. nur Dim FirstPos, SecPos, lasse den Typ weg und schon sind es Variants ;-)
...:cat:... |
Re: *.doc aufteilen...
Hi Gordon,
schreibe mal ganz oben in der ersten Zeile des Moduls "option explicit" rein. Ab jetzt kann st du nur noch Variablen verwenden, die du auch deklariert hast. (irgendein Schreibfehler wird sonst als Variable erkannt und du kriegst es nicht mit!) Mit:
Delphi-Quellcode:
Suchst du alle Textstellen in denen die Schriftgröße dem Inhalt von Textbox1 entspricht. Ich weiß nicht, ob das ohne ein Font funktioniert.
.ClearFormatting
.Font.Size = a Versuche es mal mit:
Delphi-Quellcode:
.ClearFormatting
.Font.Name = "Courier New" .Font.Size = a |
Re: *.doc aufteilen...
Ha ich gemacht, doch.....
Code:
Einer der Werte, die an diese Methode oder Eigenschaft übergeben wurde, steht außerhalb des gültigen Bereiches!
:shock: :shock: :shock: :shock: :shock: Damit ist a gemeint, aber was bedeutet das jetzt :?: [edit] Das a Problem ist bereits gelöst...(s. code im nächsten Beitrag) [/edit] |
Re: *.doc aufteilen...
Hier der "neue" Code:
Code:
1) Der Rechner fragt an der Stelle
Dim FirstPos, SecPos, a, c, d As Integer
Dim E As String Private Sub CommandButton1_Click() a = CInt(TextBox1.Text) b = TextBox2.Text c = 0 d = 0 markieren End Sub Sub markieren() While c = 0 d = d + 1 FirstPos = -1 SecPos = -1 ActiveDocument.Range(0, 0).Select Do While FirstPos = -1 Or SecPos = -1 With Selection.Find .ClearFormatting .Font.Size = a .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute If Not Selection.Find.Found Then c = 1 2) Exit Do End If If FirstPos = -1 Then FirstPos = Selection.Start ElseIf SecPos = -1 Then SecPos = Selection.Start End If Loop If FirstPos <> -1 And SecPos <> -1 Then Selection.Start = FirstPos Selection.End = SecPos End If If c = 0 Then 1) Selection.Cut 3) Documents.Add Template:="", NewTemplate:=False, DocumentType:=1 Selection.Paste E = Str(d) ChangeFileOpenDirectory "C:\martin\HTML\" ActiveDocument.SaveAs FileName:=E + ".htm", FileFormat:=wdFormatHTML, _ LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ False ActiveWindow.Close Else Selection.WholeStory Selection.Cut Documents.Add Template:="", NewTemplate:=False, DocumentType:=1 Selection.Paste E = Str(d) ChangeFileOpenDirectory "C:\martin\HTML\" ActiveDocument.SaveAs FileName:=E + ".htm", FileFormat:=wdFormatHTML, _ LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ False ActiveWindow.Close End If Wend End Sub
Code:
2) ab, ob etwas markiert wurde. Dies soll widerum an der Stelle:
If c = 0 Then
Code:
3) festgelegt werden. Allerdings übergeht der Rechner diese Abfrage und Gibt bei
If Not Selection.Find.Found Then
c = 1 Exit Do End If
Code:
eine Exception aus, da nichts markiert wurde und er somit nichts ausschneiden kann. Falls aber nichts markiert wurde sollte der Rechner eigentlich das gesamte Dokument markieren:
Selection.Cut
Code:
Else
Selection.WholeStory Wieso tut er das nicht :gruebel: bua, tia, cu gordon |
Re: *.doc aufteilen...
Durch...
Delphi-Quellcode:
... wird er immer wieder vom Start aus suchen, wenn er nichts gefunden hat.
.Wrap = wdFindContinue
So verhinderst du das:
Delphi-Quellcode:
Außerdem noch das hier und es müsste funktionieren...
.Wrap = wdFindStop
Delphi-Quellcode:
If FirstPos = -1 Then
FirstPos = Selection.Start ElseIf SecPos = -1 Then SecPos = Selection.Start End If ' Das hier verschiebt den Cursor hinter den gefundenen Text Selection.Start = Selection.End Nachtrag: Beim nächsten Mal den Code als Anhang, man scrollt sich ja sonst noch die Maus wund :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz