 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 16.01.2005, 19:01 Titel: Kann QBasic spezielle Probleme lösen? |
|
|
Hallo an Euch!!!
Schön langsam komm ich mit den einfacheren Sachen mehr oder weniger gut zurecht.
Jetzt habe ich mir vorgenommen, auf eine ganz bestimmte Sache hinzuarbeiten...
ICh möchte ein Programm schreiben, mit dem man ein Word.doc öffnet, und dann alles, was zwischen () in Kürzeln steht, automatisch ausschreibt.
Ein Freund von mir schreibt Bücher, dann bekomme ich das Skriptum und schreibe die Kürzel von Hand rein.
Kann man das mit QBasic realisieren?
Wenn ja, kann ich das in Angriff nehmen, obwohl ich eigentlich so gut wie keine Ahnung habe???
Was meint Ihr dazu??
Liebe Grüße
Helli _________________ Wieso einfach, wenn's auch kompliziert geht?! |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 16.01.2005, 19:43 Titel: |
|
|
dafür ist doc ein schlechtes Format. Öffen mal ne Word-Datei mim Editor... _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 16.01.2005, 20:03 Titel: |
|
|
das stimmt...
theoretisch ist es zwar möglich eine Datei zu öffnen und nach dem Inhalt von Klammern zu suchen, diesen zu ersetzen und die Datei "neu" zu schreiben, jedoch glaube ich nicht das einem das Word-Format das so ohne weiteres durchgehen lässt.
So wie ich Microsoft kenne lässt sich die Datei danach garantiert nicht mehr in Word öffnen bzw. bearbeiten.
Dann würde ich lieber versuchen mir ein passendes Makro in VB Script zu erstellen. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 16.01.2005, 20:19 Titel: |
|
|
Hi,
Eine andere Mögichkeit ist statt .doc das RichText-Format (.rtf) zu benutzen.
Dieses ist leichter zu durchschauen und man kann, glaube ich, auch Word-Dateien so abspeichern.
Hier steht dann (abgesehen von der Formatierung) der Text, den dein Dokument-Betrachter (z.B. OpenOffice oder MS Word) anzeigt, wenigstens im Klartext da, was deiner QB-Routine ermöglicht, an dieser Stelle die Klammern zu erkennen und eine Änderung vorzunehmen.
Grüßle,
Mecki
EDIT: Mensch Sebi Um ~2 Minuten zu langsam *heul* _________________ » Yodl.de: So sucht man gestern.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 16.01.2005, 20:54 Titel: |
|
|
Hallo Euch!!!
Das ist sehr interessant!!
Nur mal so dahergesponnen...
Ist es denn möglich, dass QBasic es schafft, Word.doc als rtf zu öffnen, seine Arbeit mit dem ausschreiben zu machen und dann das ganze wieder als Word.doc zu speichern??
Liebe Grüße
Helli _________________ Wieso einfach, wenn's auch kompliziert geht?! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 16.01.2005, 22:02 Titel: |
|
|
So viel ich weiss, umfassen die Dateiformatspezifikationen bei Word mehrere dicke DIN A4-Bundesordner. Da das Word-Format ohnehin ein proprietäres Format darstellt, welches sich mit jeder Microsoft Office-Version wieder ändert, würde ich es gar nicht erst in QB direkt verarbeiten versuchen. Stattdessen ist der Zugriff auf die Automatisierungsobjekte der geeignetere Weg. Beispiel:
Code: | ' Dies ist QB, von dem wir ein temporäres .VBS erzeugen
OPEN ENVIRON$("TEMP") + "\~WORDPRC.VBS" FOR OUTPUT AS 1
PRINT#1, "Set oWord = CreateObject(" + CHR$(34) + "Word.Application" + CHR$(34) + ")"
PRINT#1, "oWord.Documents.Open " + CHR$(34) + "C:\Verzeichnis\MeinWordDokument.doc" + CHR$(34)
' .. (hier Verarbeitungsschritte einfügen)
PRINT#1, "Set oWord = Nothing"
CLOSE 1
SHELL "cscript //NoLogo " + ENVIRON$("TEMP") + "\~WORDPRC.VBS"
KILL ENVIRON$("TEMP") + "\~WORDPRC.VBS" |
Weiterführende Informationen zum Thema:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/woobjapplication.asp
http://msdn.microsoft.com/scripting
@Helli M.:
Falls Du gerne ein eigener Parser für RTF schreiben möchtest:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnrtfspec/html/rtfspec.asp
=> hier die vollständigen Spezifikationen zum RTF-Dateiformat. _________________ Teste die PC-Sicherheit mit www.sec-check.net
Zuletzt bearbeitet von dreael am 16.01.2005, 22:05, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 16.01.2005, 22:03 Titel: |
|
|
Nein. du kannst auch kein bmp als gif öffnen xD
du musst das Dokument als RTF speichern. sonst kannst dus ned als RTF öffnen. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 17.01.2005, 00:52 Titel: |
|
|
Öffne doch einfach mal ein einfaches Worddokument, in dem vieleicht nur ein Satzt steht ohne jegliche Formatierung, mit dem Texteditor. Dann siehst Du was für riesige Informationsmengen in einer solchen Datei drin sind. Das ist unglaublich.
Nur mal ein kleiner Auszug als Beispiel:
T i m e s N e w R o m a n 5? € S y m b o l 3&? ‡z € ÿ A r i a l
Obwohl ich alles in dem Dokument in Times New Roman geschrieben habe stehen noch die beiden Schriftarten drin, die ich auch in letzter Zeit mal benutzt hatte bei anderen Dokumenten. |
|
Nach oben |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 17.01.2005, 01:41 Titel: |
|
|
Hi Euch!!!
Ja, ich habe ein Word.doc mit dem Editor geöffnet... wow, ich dachte, ich hätte nen knick in der Optik...
Na, ist es denn dann vielleicht "besser", (weil einfacher) mal ein Programm zu schreiben, das halt dann mit rtf kann?
Ich kenn mich ja nicht so gut aus, und die weiterführenden links, die ich mir angesehen habe (vielen Dank dafür!!!), das schaff ich als Anfänger sicher nicht so schnell....das werde ich machen wenn:
Ja, wenn ich es schaffe, das QBasic mit rtf zurechtkommt, dann habe ich sicher mehr Erfahrungen gesammelt, und kann mich über was komplexeres trauen...
@ dreael:
Dieses VBS...hab ich das recht verstanden, dass das so eine Art "makro" ist?
Falls die Frage blöd war, sei bitte net bös!!
Wenn Du mir da das Gerüst schon hergestellt hast, dann brauch ich "nur" noch die Verarbeitung einfügen, oder??
Nochmal vielen Dank
Liebe Grüße
Helli _________________ Wieso einfach, wenn's auch kompliziert geht?! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 17.01.2005, 09:03 Titel: |
|
|
Helli M. hat Folgendes geschrieben: | Dieses VBS...hab ich das recht verstanden, dass das so eine Art "makro" ist? |
Indirekt ja. Statt direkt einem Makro ausführen, verwenden wir hier den Windows Script Host (WSH) und instanzieren das Word als sog. Automatisierungsobjekt. Bei diesem Automatisierungsobjekt stehen uns aber auch sämtliche Methoden und Properties regulärer Word-Makros zur Verfügung.
Du kannst also sogar Deine gewünschten Schritte mal von Hand durchführen und mit dem Makrorecorder in Word aufzeichnen. Anschliessend lässt sich das Ganze in ein dynamisch erzeugtes .VBS wie oben gezeigt hineinpacken. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 17.01.2005, 16:44 Titel: |
|
|
Hallo dreael!!!
Das klingt ja wirklich so, als ob ich das auch schaffen könnte!!!
So einen Makrorecorder... davon hab ich noch nie was gehört!
Aber ich versuch es mal, so wie Du gesagt hast!
Und dann hätte ich noch eine Frage, ich brauche ja dann auch das, was ich ausgeschrieben haben möchte, als library, denn als DATA ist es viel zu viel!!
Im Beispiel meines Freundes, der in seinen Büchern immer wieder Bibeltexte zitiert, müsste ich ja die ganzen Bibelstellen der ganzen Bibel für das Programm bereitstellen. Oder stell Dir vor, man möchte irgendwelche Paragraphen ausgeschrieben haben, oder sonst etwas, das man halt grade braucht....
Oder, man könnte vielleicht den Bibeltext in einer anderen rtf haben, auf den dann das Programm zugreift, und die beiden dann zusammenmixt sozusagen....
Das mit dem Makrorecorder aufzeichnen, meine ich... denn da müssten ja auch irgendwo diese Infos liegen, die dann eingefügt werden sollen.
Je mehr ich nachdenke, desto komplizierter kommt es mir vor, aber Ziele muß man sich ja stecken, sonst kommt man ja nie zu was!!!
Viele Grüße
Helli _________________ Wieso einfach, wenn's auch kompliziert geht?! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 17.01.2005, 22:36 Titel: |
|
|
Versuchen wir es mit einem konkreten Beispiel: Einfaches Suchen/Ersetzen, am Schluss Dokument unter neuem Namen speichern.
Zuerst zeichne ich mal mit dem Makrorecorder das Ganze auf. Wenn ich das Makro daraufhin bearbeite, bekomme ich etwas der Art
Code: | Sub Test_1()
'
' Test_1 Makro
' Makro aufgezeichnet am 17.01.2005 von dreael
'
ChangeFileOpenDirectory "C:\DATEN\WORD\"
Documents.Open FileName:="Quelldok.doc", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Suchbegriff"
.Replacement.Text = "neuer Text"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.SaveAs FileName:= _
"DokumentNeu.doc", FileFormat:=wdFormatDocument _
, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False
ActiveDocument.Close
End Sub |
All dies hübschen Anweisungen können wir natürlich auch vom Windows Script Host anwenden:
Code: | ' Word mit Automatisierungsobjekt steuern
Option Explicit
Const wdReplaceAll = 2
Dim oWord, oDoc, oSel
Set oWord = CreateObject("Word.Application")
oWord.visible = True
Set oDoc = oWord.Documents.Open("C:\TEMP\Hans1.doc")
Set oSel = oDoc.Range
oSel.Select
oSel.Find.Text = "Hans"
oSel.Find.Replacement.Text = "Barbara"
oSel.Find.Execute ,,,,,,,,,,wdReplaceAll
Set oSel = Nothing
oDoc.SaveAs "C:\TEMP\Barbara1.doc"
oDoc.Close
Set oDoc = Nothing
oWord.Quit
Set oWord = Nothing |
(habe ich noch als
http://beilagen.dreael.ch/QB/WORDMKR.VBS
zum Download bereitgestellt)
Diese Routine können wir nun sehr hübsch in QB einbetten:
Code: | ' Word mit Automatisierungsobjekt aus QB heraus steuern
LINE INPUT "Quelldatei? ", q$
LINE INPUT "Zieldatei? ", z$
LINE INPUT "Alter Text? ", alt$
LINE INPUT "Neuer Text? ", neu$
OPEN ENVIRON$("TEMP") + "\~WORDMKR.VBS" FOR OUTPUT AS 1
PRINT #1, "Option Explicit"
PRINT #1, "Const wdReplaceAll = 2"
PRINT #1, "Dim oWord, oDoc, oSel"
PRINT #1, "Set oWord = CreateObject(" + CHR$(34) + "Word.Application" + CHR$(34) + ")"
PRINT #1, "oWord.visible = True"
PRINT #1, "Set oDoc = oWord.Documents.Open(" + CHR$(34) + q$ + ".doc" + CHR$(34) + ")"
PRINT #1, "Set oSel = oDoc.Range"
PRINT #1, "oSel.Select"
PRINT #1, "oSel.Find.Text = " + CHR$(34) + alt$ + CHR$(34)
PRINT #1, "oSel.Find.Replacement.Text = " + CHR$(34) + neu$ + CHR$(34)
PRINT #1, "oSel.Find.Execute ,,,,,,,,,,wdReplaceAll"
PRINT #1, "Set oSel = Nothing"
PRINT #1, "oDoc.SaveAs " + CHR$(34) + z$ + ".doc" + CHR$(34)
PRINT #1, "oDoc.Close"
PRINT #1, "Set oDoc = Nothing"
PRINT #1, "oWord.Quit"
PRINT #1, "Set oWord = Nothing"
CLOSE 1
SHELL "cscript //NoLogo " + ENVIRON$("TEMP") + "\~WORDMKR.VBS"
KILL ENVIRON$("TEMP") + "\~WORDMKR.VBS" |
Auch hier steht das fertige Programm als
http://beilagen.dreael.ch/QB/WORD_MKR.BAS
zur Verfügung. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
ZaPPa
Anmeldungsdatum: 29.09.2004 Beiträge: 98 Wohnort: Wuppertal
|
Verfasst am: 18.01.2005, 01:54 Titel: |
|
|
haha! diesma hab ich aber einen RTF2TXT Converter parat!!
....(schon relativ alt, und evtl. verbuggt...)....
Jah Bless _________________ --- ICH BIN DAGEGEN! ---
Jet_X hat Folgendes geschrieben: | Es währe mir sehr geholfen wenn ihr mir Helfen könnt ! |
And remember: Schwund is immer! |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 18.01.2005, 09:33 Titel: |
|
|
dann solltest du vllt mal einen Link posten?
 _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 20.01.2005, 17:32 Titel: @ dreael |
|
|
Hallo dreael!!!
Sorry, dass ich so lang gebraucht hab, um Antwort zu geben!!
Ich versuche alles zu lernen, zu verstehen, und für mein Problem anzupassen!!
Vielen Dank für die Programme zum laden!!
Du, damit komm ich schon gut weiter, und ich habe wieder viel gelernt!
Jetzt werde ich mich damit befassen, wie ich eine library erstellen kann, denn das Programm soll ja selber wissen WAS und WO es was ausschreiben soll!!
Was meinst Du, ist das jetzt der nächste Schritt, oder habe ich zuerst was anderes, worum ich mich kümmern sollte??
Ich freu mich schon auf Antwort!!
Liebe Grüße
Helli _________________ Wieso einfach, wenn's auch kompliziert geht?! |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|