Hi all, I am trying to create word document in ruby using WIN32OLE. as.. require ''win32ole'' word = WIN32OLE.new("Word.Application") word.visible = true word.documents.add selection = word.selection word.Selection.TypeText "This is some text." ... .. . Can we set header and footer to document? I want to generate a document such that its header contains an image on right side and a note on left side. please help me out. Thanks. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
This is not a Rails specific Question - wrong Board ;). It would also be better to ask this question on a group that knows the OLE-Api, as it is not documented in ruby. Anyways: As far as i was able to google it, header and footer are specific views in a document that you can address with switch_view. In Perl, the method is: # insert something into the header switch_view($document, wdSeekCurrentPageHeader); my $st_header = create_style($document, "Verdana", 8, 0, 0); set_style($document, $st_header); text ($document, "this is the document''s header, it will be repeated on all pages"); # insert something into the footer switch_view($document, wdSeekCurrentPageFooter); my $st_footer = create_style($document, "Verdana", 8, 0, 0); set_style($document, $st_footer); text ($document, "this is the document''s footer, it will be repeated on all pages"); I''m sorry that i can''t find example code in ruby, but you should be able to translate it. I do not own a windows box, so i test it for you. I hope it helps. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Florian Thank you for your response. In VB it can be done as Dim pDoc as Word.Document Set pDoc = WordApp.Documents.Open(FileName) With pDoc .Headers(wdHeaderFooterPrimary).Range.Text = "Header that I want to set" with .Footers(wdHeaderFooterPrimary).Range .Text = "Footer Left text" & vbTab & "Footer center" & vbTab .Fields.Add Range:=ActiveDocument.Range(.End, .End), Type:=wdFieldPage .... end with end with There might be some APIs in ruby also to set header and footer. Regards, Florian Gilcher wrote:> This is not a Rails specific Question - wrong Board ;). It would also be > better to ask this question on a group that knows the OLE-Api, as it is > not documented in ruby. > > Anyways: > > As far as i was able to Google it, header and footer are specific views > in a document that you can address with switch_view. In Perl, the method > is: > > # insert something into the header > switch_view($document, wdSeekCurrentPageHeader); > my $st_header = create_style($document, "Verdana", 8, 0, 0); > set_style($document, $st_header); > text ($document, "this is the document''s header, it will be repeated > on all pages"); > > # insert something into the footer > switch_view($document, wdSeekCurrentPageFooter); > my $st_footer = create_style($document, "Verdana", 8, 0, 0); > set_style($document, $st_footer); > text ($document, "this is the document''s footer, it will be repeated > on all pages"); > > I''m sorry that i can''t find example code in ruby, but you should be able > to translate it. I do not own a windows box, so i test it for you. I > hope it helps.-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Try the following code: --- require ''win32ole'' word = WIN32OLE.new("Word.Application") word.visible = true word.documents.add word.Selection.TypeText "This is the main body" word.ActiveWindow.ActivePane.View.SeekView = 9 # wdSeekCurrentPageHeader word.Selection.TypeText "This is the header" --- To figure out the value of wdSeekCurrentPageHeader, you need to google for it, print it out in VB or use some other method. I don''t believe the statement "selection = word.selection" in your original code is doing anything, I was able to run with it. For some hints on converting VB to ruby, check out the blog at http://rubyonwindows.blogspot.com/ he''s got some great hints that have helped me significantly. -- Dan --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Playing with this a little more I came up with this: --- require ''win32ole'' word = WIN32OLE.new("Word.Application") current_W = $VERBOSE $VERBOSE = nil WIN32OLE.const_load(word) $VERBOSE = current_W word.visible = true word.documents.add word.Selection.TypeText "This is the main body" word.ActiveWindow.ActivePane.View.SeekView WIN32OLE::WdSeekCurrentPageHeader word.Selection.TypeText "This is the header" --- the line "WIN32OLE.const_load(word)" loads the VB constants for Word, so you can use the constant "WIN32OLE::WdSeekCurrentPageHeader" later in the code. When you''re translating constants from VB, add "WIN32OLE::" to the front, and capitalize the first char of the variable name. The lines with "$VERBOSE" mask the warnings that come from the const_load operation, take those lines out to see what I mean. -- Dan --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Yes it works, :~} Thank you Dan. That is great. Regards, -Rahul> Playing with this a little more I came up with this: > > --- > require ''win32ole'' > word = WIN32OLE.new("Word.Application") > current_W = $VERBOSE > $VERBOSE = nil > WIN32OLE.const_load(word) > $VERBOSE = current_W > word.visible = true > word.documents.add > word.Selection.TypeText "This is the main body" > word.ActiveWindow.ActivePane.View.SeekView > WIN32OLE::WdSeekCurrentPageHeader > word.Selection.TypeText "This is the header" > --- > > the line "WIN32OLE.const_load(word)" loads the VB constants for Word, > so you can use the constant "WIN32OLE::WdSeekCurrentPageHeader" later > in the code. > When you''re translating constants from VB, add "WIN32OLE::" to the > front, and capitalize the first char of the variable name. > The lines with "$VERBOSE" mask the warnings that come from the > const_load operation, take those lines out to see what I mean. > > -- Dan-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---