If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Display Modes |
#21
|
|||
|
|||
help with macros
You are welcome
-- Graham Mayor - Word MVP My web site www.gmayor.com Word MVP web site http://word.mvps.org vandy wrote: Thanks for all your help on the code. I have a lot to learn. This forum has been extremely helpful and you have been very patient and supportive. "Graham Mayor" wrote: I cannot reproduce the problem in Word 2003. I have cross posted to the vba forum to see if anyone has any ideas. The command is supposed to re-call the form document so that it can be protected again after the labels have been created. -- Graham Mayor - Word MVP My web site www.gmayor.com Word MVP web site http://word.mvps.org vandy wrote: Hi Graham, I separated the printing process and tested it . It works. When i run the getcontent macro seperately i am getting a run time error Run-time error '5941' The requested member of the collection does not exist. When i press debug. it points out to the command windows(sName).Activate . Once i stop the degugger the new document with the labels pops up and i can print the labels i need. How to get over this problem now. thanks for your patience "Graham Mayor" wrote: Separate the printing process from the label creation process. This will allow you to edit the label document before you print it. If your recorded printing macro works use that instead - but don't forget to add in the code to return to the previous state. Sub GetContent() Dim f1, f2, f3, f4, f5, f6, f7, sLayout As String Dim strLabel As String Dim sName As String Dim bProtected As Boolean 'Unprotect the file If ActiveDocument.ProtectionType wdNoProtection Then bProtected = True ActiveDocument.Unprotect Password:="" End If 'get the filename of the form document sName = ActiveDocument.FullName 'Get the field content f1 = ActiveDocument.FormFields("Text1").Result f2 = ActiveDocument.FormFields("Text2").Result f3 = ActiveDocument.FormFields("Text3").Result f4 = ActiveDocument.FormFields("Text4").Result f5 = ActiveDocument.FormFields("Text5").Result f6 = ActiveDocument.FormFields("Text6").Result f7 = ActiveDocument.FormFields("Text7").Result 'assemble the content with associated text sLayout = "PRODUCT DESCRIPTION " & f1 & " COMPONENT " & f2 _ & vbCr & "MPI No " & f3 & " DRAWING# " & f4 _ & " REV NO " & f5 & " ASSEMBLY DWG " & f6 _ & vbCr & "TOT QTY " & f7 'Pick the label type strLabel = InputBox("Label stock number?", "Labels", 5263) 'Create the label Application.MailingLabel.CreateNewDocument Name:=strLabel, Address:=sLayout Windows(sName).Activate 'Reprotect the form document. If bProtected = True Then ActiveDocument.Protect _ Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="" End If End Sub Sub PrintTheLabels() 'Print the labels sTray = Options.DefaultTray Options.DefaultTray = "Drawer 1" Dialogs(wdDialogFilePrint).Show Options.DefaultTray = sTray Dim sTray As String End Sub -- Graham Mayor - Word MVP My web site www.gmayor.com Word MVP web site http://word.mvps.org vandy wrote: Hi Graham, Thanks a ton for your code. I have been trying different combinations all day to get around the printer problem. As suggested I ran the printtray code seperately and it is printing from "Drawer 1" without error. when i combine it with the getcontent code the printer stalls and i have to physically undo the stackbypass option and select LTR on the printer. The funny part is when i go to select option button on the printer pop up i see default tray as drawer 1. Now the label sheet appears on a new document I am unable to delete labels that i dont require. Since the same label is listed for the full page. I am forced to give the print command to complete the macro. Any suggestions. Thanks for all your help. "Graham Mayor" wrote: Oops - triplicate - I don't know how that happened -- Graham Mayor - Word MVP My web site www.gmayor.com Word MVP web site http://word.mvps.org Graham Mayor wrote: You have to walk before you can run First clean up the mess from the crash - http://www.gmayor.com/what_to_do_when_word_crashes.htm You are going wrong by using the wrong bit of macro code. The one you have used intercepts the envelope/label dialog. The posted macro has already used that and the label has been created. All you need is to set the printer and tray and pop up the print dialog. Your modifications seem to suggest that the same printer is used throughout. That being the case there is no need to change it. You can change the Tray (are you sure that "Drawer 1" is the correct command? Record the action in a temporary macro if you are not sure) and change it back. The additions below pop up the print dialog so you can print as many labels as required or change the tray further if required. Sub GetContent() Dim f1, f2, f3, f4, f5, f6, f7, sLayout As String Dim strLabel As String Dim sTray As String Dim sName As String Dim bProtected As Boolean 'Unprotect the file If ActiveDocument.ProtectionType wdNoProtection Then bProtected = True ActiveDocument.Unprotect Password:="" End If 'get the filename of the form document sName = ActiveDocument.FullName 'Get the field content f1 = ActiveDocument.FormFields("Text1").Result f2 = ActiveDocument.FormFields("Text2").Result f3 = ActiveDocument.FormFields("Text3").Result f4 = ActiveDocument.FormFields("Text4").Result f5 = ActiveDocument.FormFields("Text5").Result f6 = ActiveDocument.FormFields("Text6").Result f7 = ActiveDocument.FormFields("Text7").Result 'assemble the content with associated text sLayout = "PRODUCT DESCRIPTION " & f1 & " COMPONENT " & f2 _ & vbCr & "MPI No " & f3 & " DRAWING# " & f4 _ & " REV NO " & f5 & " ASSEMBLY DWG " & f6 _ & vbCr & "TOT QTY " & f7 'Pick the label type strLabel = InputBox("Label stock number?", "Labels", 5263) 'Create the label Application.MailingLabel.CreateNewDocument Name:=strLabel, Address:=sLayout 'Print the labels sTray = Options.DefaultTray Options.DefaultTray = "Drawer 1" Dialogs(wdDialogFilePrint).Show Options.DefaultTray = sTray 'Switch back to the form document Windows(sName).Activate 'Reprotect the form document. If bProtected = True Then ActiveDocument.Protect _ Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="" End If End Sub vandy wrote: Hello Graham, Thanks for the document giving me an option for selecting the tray. I am new woking with macros and have attempted to add the code with the exisiting macro you gave me. I am running into run time errors. I am getting the users input to print the labels and assuming that this macro will print from drawer 1 thus choosing the tray and if not than it print out from drawer 2. Sub GetContent() Dim f1, f2, f3, f4, f5, f6, f7, sLayout As String Dim strLabel As String Dim bProtected As Boolean Dim sCurrentPrinter As String Dim sTray As String Dim sQuery As String 'Unprotect the file If ActiveDocument.ProtectionType wdNoProtection Then bProtected = True ActiveDocument.Unprotect Password:="" End If 'Get the field content f1 = ActiveDocument.FormFields("Text1").Result f2 = ActiveDocument.FormFields("Text2").Result f3 = ActiveDocument.FormFields("Text3").Result f4 = ActiveDocument.FormFields("Text4").Result f5 = ActiveDocument.FormFields("Text5").Result f6 = ActiveDocument.FormFields("Text6").Result f7 = ActiveDocument.FormFields("Text7").Result 'assemble the content with associated text sLayout = "PRODUCT DESCRIPTION " & f1 & " COMPONENT " & f2 _ & vbCr & "MPI No " & f3 & " DRAWING# " & f4 _ & " REV NO " & f5 & " ASSEMBLY DWG " & f6 _ & vbCr & "TOT QTY " & f7 'Pick the label type strLabel = InputBox("Label stock number?", "Labels", 5263) 'Create the label Application.MailingLabel.CreateNewDocument Name:=strLabel, Address:=sLayout 'Reprotect the document. If bProtected = True Then ActiveDocument.Protect _ Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="" End If sQuery = MsgBox("Print Labels?", vbYesNo, "Labels") If sQuery = vbYes Then 'Answer is print labels ActivePrinter = "\\numetServer\Canon5000ps downstairs" 'Set the required printer Options.DefaultTray = "Drawer 1" 'set labels to Tray 1 End If If sQuery = vbNo Then 'Answer is regular document ActivePrinter = "\\numetServer\Canon5000ps downstairs" 'Set the required printer Options.DefaultTray = "Drawer 2" 'Set labels to Tray 2 End If With Dialogs(wdToolsEnvelopesAndLabels) sCurrentPrinter = ActivePrinter 'Save the current printer sTray = Options.DefaultTray 'Save the current tray 'ask the user whether labels are required .DoNotSetAsSysDefault = True .Execute Dialogs(wdDialogToolsEnvelopesAndLabels).Show 'Pop up the wizard dialog ActivePrinter = sCurrentPrinter 'Put the printer back as it was at the start Options.DefaultTray = sTray 'Put the tray back as it was at the start DoNotSetAsSysDefault = True .Execute End With End Sub window shuts down and word autosaves my document. Where am i going wrong. Thanks for the help. "Graham Mayor" wrote: You can select the label tray from the print dialog - you should also be able to edit the tray from the envelope/label dialog - options. You can do any of this by macro if you know the parameters - see the examples for selectring alternative printers and/or trays at http://www.gmayor.com/fax_from_word.htm -- Graham Mayor - Word MVP My web site www.gmayor.com Word MVP web site http://word.mvps.org |
Thread Tools | |
Display Modes | |
|
|