Class Vraag

Status
Niet open voor verdere reacties.

old Hippy

Gebruiker
Lid geworden
24 mei 2008
Berichten
911
Hallo
ik ben bezig een class te maken (proberen) om een document te schrijven

Dit gaat goed maar inplaats van een vaste text wil ik de text uit een textbox plaatsen.
Is het mogelijk in de code hier onder een textbox in te lezen???

met Document.Write ("Old Hippy" & FacnaamTextBox.Text) In een button in form1 lukt dit mij wel .
de gebruikte textboxen in de Class zijn niet Declared hoe los ik dit op?????

Alvast bedankt


Code:
 Public Shared Sub Document1()

        Dim path As String = ".\Document.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then
            ' Create a file to write to.
            sw = File.CreateText(path)

            sw.WriteLine("Old Hippy")
            sw.WriteLine("Surmerhuizerweg 21 ")
            sw.WriteLine("1744 JB Eenigenburg")
            sw.WriteLine("Tel. 0226125896")
            sw.Flush()
            sw.Close()
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        sw = File.AppendText(path)
        sw.WriteLine("Old Hippy")
      [COLOR="Red"]  sw.WriteLine(& FacnaamTextBox.Text)[/COLOR]

        sw.Flush()
        sw.Close()
 
Ik ben niet zeker dat ik je vraag goed begrijp, maar moet je niet dit hebben?

Code:
private FacnaamTextBox as textbox

public sub new(byval txtbox as textbox)
FacnaamTextBox  = txtbox
end sub
 
hi bn2vs

ik weet niet of dit helpt
om dat ik niet weet waar ik het moet plaatsen.

de code zo als opgegeven moet dus text schrijven in een document.txt
deze bestaat uit een vaste text en een variabele text die ingevuld word met textboxen op form1
deze variabele text bestaat dus uit textboxen de code onder een button op het formulier werk ( dus Public Class Form1 ) maar deze code wil ik graag in een class (Public Class Test_Document) hebben.
ik weet dus niet hoe ik de textboxen in die class moet gebruiken?????
hopelijk heb ik je het duidelijk kunnen maken.

in iedergeval alvast bedankt voor je reactie
 
Normaalgezien maak je een class zo dat die kan werken in elk programma zonder al te veel aanpassing, dus je kan je textbox best niet direct aanspreken.

Hier heb je een simpele oplossing

Code:
Public Class Test_Document

private FacnaamTextBox as textbox

public sub new(byval txtbox as textbox)
FacnaamTextBox  = txtbox
end sub

' rest van je code

end class

Dan moet je in je class form1 gewoon een nieuwe variablele aanmaken als Test_Document met als parameter de textbox waaruit je je text haald.

Deze topic bevat een simpele class die ik geschreven heb en hetzelfde princiepe gebruikt.

Als het echter de bedoeling is om je class enkel bij die app te maken kan je mss een 'Partial Class' maken, maar dan is de vraag natuurlijk of je je code niet gewoon in je class form1 kan plaatsen.

success ;)
 
Ok bn2vs
Heb de bedoeling begrepen en ga hier mee verder Experimenteren
je hebt gelijk wat betreft de Class maar ik wil ook graag leren hoe ik de dingen moet doen en voor elkaar krijg.
Dit is 1 documet maar het moeten 3documenten worden waar in alleen de vaste text in word veranderd. Dus dacht ik een class en drie buttons voor de opdracht.

Bedankt voor je hulp ben weer een stapje verder.
Groeten Old Hippy
 
Oei, het begint me een beetje te jeuken in die oplossing.
Waarom?

Je moet GUI en Controller functies gescheiden houden. Dit is het zogenoemde model-view-controller principe. Waarschijnlijk is je vraag nog steeds: waarom zou je dat doen?

Vooral om reusability van je code (1 van de belangrijkste principes van OO).
Als je een textbox meegeeft, dan is dit stukje code amper meer te gebruiken. Alleen maar als je een textbox weer meegeeft. De enige reden waarom je dat doet is om de text te pakken, waarom geef je de string niet meteen mee?

Ik ben het met bn2vs eens.

- Wist je dat het mogelijk is een word document in te laden, en vervolgens de named bookmarks in te vullen met text uit je programma en dan weer op te slaan?
 
Nee dat wist ik niet maar als je mij kunt vertellen hoe dat moet ben ik dankbaar
heb wat dat betreft heel wat gezocht maar geen oplossing
 
Laatst bewerkt:
Ik kan je een voorzetje geven in VB.NET. De code die ik gebruik is teveel verweven met beveiligde data. Ik kopieer van namedranges in excel naar bookmarks in Word.

Ik weet niet of de code werkt, maar dan moet je deze nog even debuggen.
Je moet nog wel enkele libs toevoegen aan je project:
- Microsoft.Office.Word
- Microsoft.Office.Tools

Tevens een word file met een formfield. In de settings van deze formfield moet je de Bookmark "Test" laten heten. Het kan wezen dat je na deze code nog even de formfield moet refreshen.

Veel succes, laat het me even weten hoe het gaat.

Code:
Private Shared wordApp As Microsoft.Office.Interop.Word.Application

' Open and close word application
    Private Shared Sub openWordApp()
        If IsNothing(wordApp) Then
            wordApp = New Microsoft.Office.Interop.Word.Application
            wordApp.Visible = False
        End If
    End Sub

    Private Shared Sub closeWordApp(ByVal save As Boolean)
        If Not IsNothing(wordApp) Then
            wordApp.Quit(CType(save, Object))
            wordApp = Nothing
        End If
    End Sub

    Private Sub updateWordDocument(ByVal documentFileName As String)
        Dim templateWord As Microsoft.Office.Interop.Word.Document = Nothing

        Try
            openWordApp()

            templateWord = wordApp.Documents.Open(CType(documentFileName, Object))
            templateWord.Bookmarks("Test").Range.InsertAfter("TestString")
        Finally
            If Not IsNothing(templateWord) Then
                templateWord.Save()
                templateWord.Close()
            End If

        End Try

    End Sub
 
Hallo Jabber

Fijn dat je mij wild helpen ik ben echt nog maar een beginner.

dus waar haal ik deze libs vandaan en hoe inporteer ik dit in vb2008 ?????:eek:
- Microsoft.Office.Word
- Microsoft.Office.Tools
deze weet ik wel tevoorschijn te halen
Microsoft.Office.Interop.Excel
 
Laatst bewerkt:
- Microsoft.Office.Tools ben je denk ik niet nodig

- Microsoft.Office.Word moet zijn Microsoft.Office.Interop.Word
- Microsoft.Office.Tools moet zijn Microsoft.Office.Interop.Excel

Deze kan je toevoegen door:
- Add reference in je project (rechtermuis op je project)
- Tabblad .NET
- Zoek ze uit de lijst en voeg ze toe...
 
Hai Jabber


Microsoft.Office.Interop.Word
werkt niet op mijn pc ik heb op google gezocht maar waarschijnlijk een vista probleem
ook aan het zoeken geweest op internet maar hier voor nog geen oplossing gevonden
misschien ligt het wel aan dat dit een Visual Basic 2008 Express Edition is
dus gratis voor oude hobbie hippy's die met hun tijd proberen mee te gaan.
maar goed ik zoek nog verder naar een oplossing. voor dit probleem.
mocht het niet lukken geef ik het wel door ben ook aan het proberen een compleete Html
file te schrijven ook hier kan ik text mee op maken. en textboxen inlezen.
niet zo nette oplosing maar tot nu toe lukt dit.
je hoord nog van mij als ik een oplossing heb alvast bedankt tot zo ver hopelijk kom ik er uit
 
Microsoft.Office.Interop.Word

Zou best kunnen dat dat niet werkt op vista.
Ik weet ook niet welke versie je hebt van office.

Ik moet je helaas teleurstellen dat ik niet weet hoe ik je verder kan helpen.
 
Hi Jabber

Ik werk met office 2007

ik ga nog wel verder onderzoeken wat voor een oplossing hier voor is.
En ben van plan om een om een vb aan te schaffen maar weet nog niet welke
het liefst in het nederlands.
mischien heb je een tip voor mij??
 
Hi Jabber

Hopelijk ben je nog in gelogd op mijn vraag.
ik heb na veel zoeken Microsoft.Office.Interop.Word en Microsoft.Office.Interop.excel
op mijn computer in mijn project kunnen inporteren.

nu is mijn vraag Waar plaats ik jouw code

en kan je mij wat dudelijkheid verschaffen in verband met, word file met een formfield. In de settings van deze formfield moet je de Bookmark "Test" laten heten.

dit is mij niet helemaal dudelijk hoe dit te doen???

alvast bedankt Old Hippy
 
1. Open new word document
2. View -> Toolbars -> Forms
3. Selecteer van de toolbar de 'Text from field'
4. Bekijk de properties en geeft de proportie 'Bookmark' de naam Test
5. Sla de file op en geef deze een duidelijke naam.

De code is niet geheel compleet maar zal na aanpassing wel werken.
1. Stop de code in een form
2. Select file code onder een click event 1
3. Hang de functie updateWordDocument onder de click event 1 en geef filestring mee

Hoop dat dit je op weg helpt...
 
Hy Jabber

Document gemaakt en factuur1 genoemd.
met een text file genaamd text.

onder buton klik openWordApp() gezet
en voor controlle wordApp.Visible = True op true gezet.
word opend maar zonder document?

kan je mij een voorbeeldje geven van wat ik moet doen????
groeten old hippy
 
Code:
sub click event
 try
  openWordApp()
  updateWordDocument("C:\\factuur1.doc")
 catch e as exception
  MessageBox.Show(e.Text)
 finally
  closeWordApp()
 end try

Ik hoop dat dit helpt?
 
Hi Jabber
Het Werkt:thumb:

Maar Als ik een tweede keer een factuur wil afdrukken geeft het de volgende fout.
Code:
De RPC-server is niet beschikbaar. (Uitzondering van HRESULT: 0x800706BA)

Ik moet het programma afsluiten en opnieuw starten dan kan ik een nieuwe factuur maken.
ook schrijft hij dan de tweede keer het adres achter het oude mischien een wis button maken om het oude eerst leeg te maken?
Na het twee keer afdrukken heb ik de factuur niet meer nodig. hoeft dus niet bewaard te worden in dit geval.
wat ik ook vreemd vind is dat hij het achter het textveld in het factuur zet en niet er in
hopelijk weet je een oplossing!!!!
 
Sorry ik kan je daar niet verder mee helpen.
Helpt het als je het opslaat onder een andere naam?
templateWord.SaveAs() ---> Gokje

Ik heb even voor je gegoogeld, echter er zijn veel mensen met
dezelfde problemen als jij. Deze hebben ook niet echt een antwoord.
 
Misschien moet je nog het volgende proberen:

'a should be released right before setting it to nothing
releaseobject(a)
a = nothing

a is dan wordApp.
hetzelfde voor templateword
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan