PDA

View Full Version : Valid Values



MacroShadow
04-22-2012, 12:50 PM
Hello all Experts,

What are the valid value ranges and increments to be set in code for the following properties:

1. Selection.ParagraphFormat.LineSpacing
2. Selection.ParagraphFormat.SpaceAfter
3. Selection.ParagraphFormat.SpaceBefore
4. Selection.Font.Spacing
5. Selection.Font.Scaling

Thanks for your time.

fumei
04-22-2012, 03:10 PM
What have you done to figure this out yourself?

Why are you using Selection?

MacroShadow
04-22-2012, 08:10 PM
What have you done to figure this out yourself?
1. VBA help, haven't found anything. 2. Google, haven't found anything. 3. Trial and error, yet I'm still not sure.


Why are you using Selection?
That is what macropad suggested at http://social.msdn.microsoft.com/Forums/en-US/worddev/thread/79855849-4809-4777-8a47-2dec56a1313c do you have a better idea?

MacroShadow
04-22-2012, 08:26 PM
Here's the real issue I'm dealing with, using the macros by macropod at the above link the code errors out (runtime error 5149) and the values are 9999999 even though they started out at 1 and were incremented several times only by 0.5.
I thought I'd try to figure it out by myself, but on second thoughts may prove useful for understanding my current problem.

Frosty
04-23-2012, 10:55 AM
Using the Object Browser (F2 in VBA IDE) will help, in addition to the help files. And then reading the help files on the actual data types. It will be helpful to understand the concept of "Enumerations" which are sort of constants. For example, in the immediate window (CTRL+G) in the VBA... see what the list pops up when you type
Selection.ParagraphFormat.Alignment =

You'll see a whole bunch of options, which are fairly self-explanatory...
wdAlignParagraphCenter
wdAlignParagraphDistribute
wdAlignParagraphLeft
etc etc

But if you type ?wdAlignParagraphCenter you'll see the value is 1 (searching in the Object Browser for wdAlignParagraph will show you all those enumerators and their values.

Typically, when you have something which can have a specific value (space after = .5, for example), but when you test the value and see something like 999999 -- that means it's using the associated Auto value available within the dialog (the difference between setting font color to Black and Auto has a difference).

Does that help?

MacroShadow
04-23-2012, 12:44 PM
Thanks for the response.


Typically, when you have something which can have a specific value (space after = .5, for example), but when you test the value and see something like 999999 -- that means it's using the associated Auto value available within the dialog (the difference between setting font color to Black and Auto has a difference).

Does that help?
Well I suppose so, now I just have to figure out why it's using the associated Auto value available within the dialog, is that the typical behavior when a not valid value is entered?
Which brings me back to the original question, what are the valid values and increments for the above values?

btw, I'm fairly familiar with using both the Object Browser and the help files but they didn't seem to help me this time.
Enumerations is not new to me either, but again I don't understand how that is supposed to help me now.


see what the list pops up when you type
Selection.ParagraphFormat.Alignment = I get a compile error: Expected expression.

Frosty
04-23-2012, 01:04 PM
Hmm... compile error? Are you using the Immediate Window? Did you hit the enter key? Because the point of that is simply to see the autocomplete text which pops up after pressing the equal key (if you pasted, then you won't see that... actually type it).

As an example, when you type "Selection." you will get a list of all the available methods/properties of the Selection object. These are ways to help programmers code more quickly (so you don't have to type everything out-- you can simply hit the TAB key to autocomplete that object).

Of course, MS has messed up that list at times... so there will be additional items available, which is where the Object Browser can come in.

And I'm not trying to be offensive... but you can't be that familiar with the object browser and the help files if you are asking the above questions. Some combination of object browser/help files/recorded macros and usage of the immediate pane will answer your 5 questions.

To give you complete answers, I would need to do exhaustive research about what values are valid and what are not and in what cases. It's much simpler to help you learn how to find these answers out yourself.

What are you looking to do?

For instance... LineSpacing is a Single data type. That means I can set .LineSpacing to be something like "1.5" -- but what does that actually mean? Well, the help file tells me that it depends on the .LineSpacingRule value. If I set my .LineSpacingRule to the enumerator wdLineSpaceAtLeast, and I set .LineSpacing to 12... then the paragraph line spacing will be at least 12 points. However, if I set my .LineSpacingRule to the enumerator wdLineSpaceMultiple, then I can set my .LineSpacing to "LinesToPoints(3)" which, after further perusing the help file and checking my immediate window by typing (without quotes) "?LinesToPoints(3)" I learn is actually a value of 36.

The above is basically me re-writing the VBA help file on LineSpacing (you are using the VBA help file, right? Not the Word help file... which would give you info about Line Spacing the way an end-user needs to understand it).

So, the answer to your .LineSpacing available values is "something above 0, and somewhere below 1584" (since if I try anything higher outside those ranges, I get an error indicating that). But that's not a terribly helpful answer.

However, finding out that answer yourself will help you understand whatever it is you're actually trying to figure out.

Frosty
04-23-2012, 01:10 PM
Actually, I just read the link. The problem you're having may be that you have a VBA option to "Break On All Errors" ... unless you've taken out the On Error Resume Next lines of that code, then you shouldn't be getting any errors regardless.

On the flip side, the 999999 value, in this case, is because your value cannot be determined (i.e., you're checking the line-spacing value on multiple paragraphs, which all have different line spacing values).

So your "increment up/increment down" function simply can't work... unless you set it to something specific to begin.

MacroShadow
04-24-2012, 05:33 AM
OK, I was getting the compile error because I copied and pasted instead of typing.

[QUOTE=Frosty]And I'm not trying to be offensive... but you can't be that familiar with the object browser and the help files if you are asking the above questions.[\QUOTE]

I may have many faults but last I checked (and I do that every so often) lying is not one of them. It's OK no offense taken.


[QUOTE=Frosty]Some combination of object browser/help files/recorded macros and usage of the immediate pane will answer your 5 questions.[\QUOTE]

So it seems you are recommending trial and error, for which there is no need for me to use the object browser/help files, all I have to do is run the macros till they error out.


[QUOTE=Frosty]To give you complete answers, I would need to do exhaustive research about what values are valid and what are not and in what cases.[\QUOTE]

I had no intention on inconveniencing anybody by requesting time consuming research, I am well aware of the fact that all members answer questions on a voluntary basis, I was just hoping that the valid values for the properties I needed were documented somewhere, or somebody had off-hand knowledge.


[QUOTE=Frosty]What are you looking to do?[\QUOTE]

Allow users to manually set the values using a UserForm.


[QUOTE=Frosty]For instance... LineSpacing is a Single data type. That means I can set .LineSpacing to be something like "1.5" -- but what does that actually mean? Well, the help file tells me that it depends on the .LineSpacingRule value. If I set my .LineSpacingRule to the enumerator wdLineSpaceAtLeast, and I set .LineSpacing to 12... then the paragraph line spacing will be at least 12 points. However, if I set my .LineSpacingRule to the enumerator wdLineSpaceMultiple, then I can set my .LineSpacing to "LinesToPoints(3)" which, after further perusing the help file and checking my immediate window by typing (without quotes) "?LinesToPoints(3)" I learn is actually a value of 36.[\QUOTE]

I am aware of the above, I read it in the vba help when I was first beginning to use vba in Word, about half a year ago (I've been using vba in Access for years).
But anyway I don't think it's relevant to my current project, since I need to keep the LineSpacingRule, the macro I'm developing will be used with documents with different settings.


[QUOTE=Frosty]So, the answer to your .LineSpacing available values is "something above 0, and somewhere below 1584" (since if I try anything higher outside those ranges, I get an error indicating that). But that's not a terribly helpful answer.[\QUOTE]

Yes, I discovered that the first time I got error 5149, which was before I posted the initial question.


[QUOTE=Frosty]On the flip side, the 999999 value, in this case, is because your value cannot be determined (i.e., you're checking the line-spacing value on multiple paragraphs, which all have different line spacing values.[\QUOTE]

I would imagine that it will happen also if I try applying a setting to several lines which have different line spacing, which may be the case I'm dealing with (I will look into it further).


[QUOTE=Frosty]So your "increment up/increment down" function simply can't work... unless you set it to something specific to begin.[\QUOTE]

Isn't that what Selection is doing?

Frosty
04-24-2012, 08:38 AM
MacroShadow,

I wasn't suggesting that you were lying... I was simply trying to help point you at the most efficient way to learn these answers yourself. Like most of us, you don't know what you don't know. If you can admit that, you can learn a lot here. If not, then all you'll get are answers.

The answers to your questions are trivial, the understanding you need to use those answers is not.

Here are the "answers" -- valid values for your questions are between the following, and all of them can go in increments of .5 (although some of those increments may not be practically meaningful):
1. 0.5 - 1584.0
2. 0.5 - 1584.0
3. 0.5 - 1584.0
4. -1584 - 1583
5. 1 - 600

Knowing what I know, the above answers took me about a minute of trial and error. I didn't read help files, so I have no idea what that means. That was just using the immediate window (which I will again suggest you research).

I may address the other questions in your long rebuttal to my attempt to help you learn, but I'll take a little bit of a breather ;)

Frosty
04-24-2012, 10:32 AM
The above post demonstrated how you can quickly discover valid values using the immediate window (CTRL+G or View > Immediate Window in the VBA IDE). That can quickly get you answers.

On to a couple more answers.
1. Despite, as an example, valid answers for .LineSpacing being between .5 and 1584, you will occasionally have a value of 999999. Why? Well-- it depends on what .LineSpacing property you're talking about. Line spacing is a property of the .ParagraphFormat object in this case. But it is also a property (as the object browser shows) of both the Paragraphs object and the Paragraph object. All that geek speak aside, that means there are multiple ways to get the value (and set the value) of the .LineSpacing property.

You are specifically using the Selection.ParagraphFormat "way" of getting/setting that value. But the problem with Selection is that it can be a confusing (although robust) object, because it represents (to state the obvious) the Selection.

You can have nothing selected (so that it represents where your cursor is), you can have a single character, a single word, a single paragraph, multiple contiguous paragraphs, multiple non-contiguous paragraphs, and even your entire document be part of your Selection. You might have a text box selected. A graphic. A footnote. Anything you *can* select can be represented by the Selection object.

Now, if you have (for simplicity) your entire document selected, and some paragraphs have .LineSpacing of 12 pt, and others have .LineSpacing of 36 pt... what value should be shown for Selection.ParagraphFormat.LineSpacing? 999999. Because it is information which cannot be known. It is "undetermined."

And since your entire "increment up" and "increment down" routines rely on accurately getting a valid value, your function cannot work as written, despite the attempt to ignore errors with On Error Resume Next.

From a GUI perspective, this is why, when you have multiple paragraphs selected and you go to the Format Paragraph dialog-- some values may be blank and some values may be filled. Because some values are known (and displayed) and some values are unable to be displayed (because they are different).

So then you have choices: do you want to increment the paragraphs individually? Set all paragraphs to the lowest value and increment up? Set all paragraphs in the selection to the highest value and increment down? Collapse the selection to the beginning and only affect that paragraph? Leave the selection alone and only affect the first paragraph? Last paragraph? Inform the user that the selection is invalid for this operation?

2. You say you're doing this because you want users to input the information into a dialog box. Why? There are already dialog boxes which allow users to input these values. And right-click menus can give easy access to those dialogs (Font and Paragraph) as appropriate. A penny of training can often save a dollar of programming. And vice versa, obviously... but if you can more fully explain what you want to do (and why), you may find that there is a better "big picture" approach than simply getting the answers you requested.

Hope this helps move the ball forward for you.

MacroShadow
04-25-2012, 02:52 AM
Here are the "answers" -- valid values for your questions are between the following, and all of them can go in increments of .5 (although some of those increments may not be practically meaningful):
1. 0.5 - 1584.0
2. 0.5 - 1584.0
3. 0.5 - 1584.0
4. -1584 - 1583
5. 1 - 600
Using the immediate window as you have suggested leaded me to slightly different results.
1. 0.4 - 1584.0
2. 0 - 1584.0
3. 0 - 1584.0
4. as you wrote
5. as you wrote

I may address the other questions in your long rebuttal to my attempt to help you learn, but I'll take a little bit of a breather ;)
There is no denying that I am a beginner in Word VBA, and I don't have any formal training in computer science or any programming languages, all I know I picked up on the go and from useful forums such as this one. Thanks for the pointers.


You are specifically using the Selection.ParagraphFormat "way" of getting/setting that value. But the problem with Selection is that it can be a confusing (although robust) object, because it represents (to state the obvious) the Selection.

You can have nothing selected (so that it represents where your cursor is), you can have a single character, a single word, a single paragraph, multiple contiguous paragraphs, multiple non-contiguous paragraphs, and even your entire document be part of your Selection. You might have a text box selected. A graphic. A footnote. Anything you *can* select can be represented by the Selection object.
Could I do something like the following to take care of that, or would you recommend a different course of action?

If Selection.Type = wdSelectionNormal Then
With Selection.ParagraphFormat
.LineSpacing = .LineSpacing + 0.5
End With
Else
MsgBox "You must select some text before trying to change the line spacing", vbExclamation, "No Text Selected"
Exit Sub
End If


So then you have choices: do you want to increment the paragraphs individually? Set all paragraphs to the lowest value and increment up? Set all paragraphs in the selection to the highest value and increment down? Collapse the selection to the beginning and only affect that paragraph? Leave the selection alone and only affect the first paragraph? Last paragraph? Inform the user that the selection is invalid for this operation?
Ideally I would like to increment selected text only, regardless of the current .LineSpacing, but since that can't be done if the selection contains lines with different .LineSpacing settings (if I understood you correctly) I guess the best option would be to Inform the user that the selection is invalid for this operation.
Would the following work, and/or should I try something else?


If Selection.ParagraphFormat.LineSpacing = 999999 Then
MsgBox "Sorry, Your action couldn't be completed at this time." & vbCrLf & vbCrLf _
& "You probobly selected lines with different LineSpacing settings." & vbCrLf _
& "Please try selecting only some of the lines and try again", vbExclamation, "Error"
Exit Sub
End If


2. You say you're doing this because you want users to input the information into a dialog box. Why? There are already dialog boxes which allow users to input these values. And right-click menus can give easy access to those dialogs (Font and Paragraph) as appropriate. A penny of training can often save a dollar of programming. And vice versa, obviously... but if you can more fully explain what you want to do (and why), you may find that there is a better "big picture" approach than simply getting the answers you requested.
Thank you for your willingness to help me with this. I'd gladly explain what and why I hope to do, and I'm eagerly awaiting your response.

I'm dealing with page layout in multi column documents. I have a friend who publishes multi column brochures for his school, the brochures are typed by various people using various templates, he receives them as is, his job is to take care of the layout and printing.
Dealing with multiple columns, he must make sure that the columns align equally both at the top and the bottom, this doesn't automatically happen in the following scenarios:
1. If the total number of lines is odd, there will be a difference of 1 line between the columns.
2. If one column has a graphic object/chart/table, it may mess up the setting.
3.If the first word of each paragraph is in a larger font (which usually is the case) and the number of paragraphs in the columns aren't equal.
4. If some of the paragraphs have subtitles in a larger and/or different font, and the amount of subtitles isn't equal in all paragraphs on the page.
5. Where Widow/orphan control kicks in.
6. Possibly other situations I didn't think of right now
Now since Word is not a desktop publishing solution, it doesn't have a built-in option to align all columns equally at the bottom, so to achieve the desired result it has to be done manually.

My solution:

Disclaimer: I know I'm using strictly unorthodox methods, but it provides the required outcome so I allowed myself to think out of the box.
1. Insert a continuous section break (if the columns don't end at the end of the page).
2. Find the difference (in points) between the columns. I use function for that, I will post it at the end.
3. Adjust the following settings (on the smallest necessary part of the document - selected by the user. -I hope you understand, I can't get it to sound clearer)
1. Selection.ParagraphFormat.LineSpacing
2. Selection.ParagraphFormat.SpaceAfter
3. Selection.ParagraphFormat.SpaceBefore
4. Selection.Font.Spacing
5. Selection.Font.Scaling
Until the function returns 0 as the difference between columns.
To enable the user to easily accomplish this, I created a userform with:
1. 2 text boxes; one for the difference (txtParaDiff.Text = ColumnDiff) and the other to show the page number (txtPage.Text = Selection.Information(wdActiveEndPageNumber)).
2. 10 buttons to increase and decrease the above values.
3. 10 text boxes to enable the user to input a value manually.
4. 10 buttons next to the above text boxes to apply the users settings.
5. a button to refresh the difference (which calls UserForm_Initialize).
6. 2 buttons; one for undo and one for redo.
7. and of course a button to unload the userform.
To do:
1. Programmatically find where to insert a continuous section break (if the columns don't end at the end of the page).
2. Programmatically do the necessary adjusting.


The function:
Function ColumnDiff()

Dim i As Integer, iCounter As Integer, iPos As Long, iPosCol As Long
Dim iCol() As Currency, nCol As Integer
Dim myRange As Range, iViewType As Integer, bEnd As Boolean

Const MaxDiff = 0 ' Difference (in points) to ignore

If Selection.StoryType <> 1 Then Exit Function
Set myRange = Selection.Range
Application.ScreenUpdating = False
iViewType = ActiveWindow.View.Type: ActiveWindow.View.Type = wdPrintView
iPos = -1
With Selection
.Collapse wdCollapseEnd
iCounter = iCounter + 1: StatusBar = iCounter
While iPos < .Start
X2:
With Selection
.GoTo What:=wdGoToBookmark, Name:="\Page"
.MoveLeft Unit:=wdCharacter, Count:=1
End With

iPos = .Start
If Dialogs(wdDialogFormatColumns).Columns = 1 Then GoTo X0
ReDim iCol(Dialogs(wdDialogFormatColumns).Columns + 1)
iPosCol = iPos: iPos = iPos - 1: nCol = 0
While iPos < .Start
iPos = .Start
If Dialogs(wdDialogFormatColumns).Columns = 1 _
Or Dialogs(wdDialogFormatColumns).ColumnNo < nCol Then GoTo X1
nCol = Dialogs(wdDialogFormatColumns).ColumnNo
iCol(nCol) = .Information(wdVerticalPositionRelativeToPage)
.GoToNext wdGoToLine
iCounter = iCounter + 1: StatusBar = iCounter
Wend
bEnd = True: iPos = ActiveDocument.StoryRanges(1).End
X1:
For i = 1 To nCol ' iCol(0) = high peak
If iCol(0) < iCol(i) Then iCol(0) = iCol(i)
Next i
iCol(nCol + 1) = iCol(0) ' iCol(nCol + 1) = low peak
For i = 1 To nCol
If iCol(nCol + 1) > iCol(i) Then iCol(nCol + 1) = iCol(i)
Next i
If iCol(0) - iCol(nCol + 1) > MaxDiff Then
.SetRange iPosCol, iPos
Application.ScreenUpdating = True
ColumnDiff = CCur(iCol(0) - iCol(i))
Exit Function
End If
If bEnd Then GoTo X3 Else GoTo X2
X0:
If ColumnDiff <= MaxDiff Then
.GoToNext wdGoToLine
iCounter = iCounter + 1: StatusBar = iCounter
Else
GoTo X2
End If
Wend
End With
X3:
myRange.Select
Application.ScreenUpdating = True: ActiveWindow.View.Type = iViewType

End Function
Comments on the function:
It will find the difference in columns from end of selection, first working only on the page of the selection and once there is no difference left in that page it will move on to the next page with a difference until it reaches the end of the document.


I think that's it (well for now it is...)

Thank you again.

MacroShadow
04-27-2012, 06:17 AM
Is there something wrong with me or the question...

Frosty
04-27-2012, 06:22 AM
Nope, just fell off my radar. Will try to respond in a few hours

MacroShadow
04-27-2012, 07:17 AM
Thank you:)

btw, I've changed the function a little. Here's the latest version.

Function ColumnDiff()

Dim i As Integer, iCounter As Integer, iPos As Long, iPosCol As Long
Dim iCol() As Currency, nCol As Integer
Dim myRange As Range, iViewType As Integer, bEnd As Boolean

Const MaxDiff = 0 ' Difference (in points) to ignore

If Selection.StoryType <> 1 Then Exit Function
Set myRange = Selection.Range
Application.ScreenUpdating = False
iViewType = ActiveWindow.View.Type: ActiveWindow.View.Type = wdPrintView
iPos = -1
With Selection
.GoTo what:=wdGoToBookmark, Name:="\Page"
.MoveLeft Unit:=wdCharacter, Count:=1
End With
With Selection
.Collapse wdCollapseEnd
iCounter = iCounter + 1: StatusBar = iCounter
While iPos < .Start
X2:
iPos = .Start
If Dialogs(wdDialogFormatColumns).Columns = 1 Then GoTo X0
ReDim iCol(Dialogs(wdDialogFormatColumns).Columns + 1)
iPosCol = iPos: iPos = iPos - 1: nCol = 0
While iPos < .Start
iPos = .Start
If Dialogs(wdDialogFormatColumns).Columns = 1 _
Or Dialogs(wdDialogFormatColumns).ColumnNo < nCol Then GoTo X1
nCol = Dialogs(wdDialogFormatColumns).ColumnNo
iCol(nCol) = .Information(wdVerticalPositionRelativeToPage)
.GoToNext wdGoToLine
iCounter = iCounter + 1: StatusBar = iCounter
Wend
bEnd = True: iPos = ActiveDocument.StoryRanges(1).End
X1:
For i = 1 To nCol ' iCol(0) = high peak
If iCol(0) < iCol(i) Then iCol(0) = iCol(i)
Next i
iCol(nCol + 1) = iCol(0) ' iCol(nCol + 1) = low peak
For i = 1 To nCol
If iCol(nCol + 1) > iCol(i) Then iCol(nCol + 1) = iCol(i)
Next i
If iCol(0) - iCol(nCol + 1) > MaxDiff Then
.SetRange iPosCol, iPos
Application.ScreenUpdating = True
ColumnDiff = CCur(iCol(0) - iCol(i))
If Left(ColumnDiff, 1) = "." Then ColumnDiff = Replace(ColumnDiff, ".", "0.", 1)
Exit Function
End If
If bEnd Then GoTo X3 Else GoTo X2
X0:
If ColumnDiff <= MaxDiff Then
.GoToNext wdGoToLine
iCounter = iCounter + 1: StatusBar = iCounter
Else
GoTo X2
End If
Wend
End With
X3:
myRange.Select
Application.ScreenUpdating = True: ActiveWindow.View.Type = iViewType

End Function

Frosty
04-27-2012, 09:18 AM
Couple of quick answers:
1. Selection.Type. I'm not familiar enough with this object (and any bugs) to know if there is anything not immediately obvious. If it seems like that will work to limit the input, then I think you're okay. Personally, if I was going to adjust paragraph formatting of *something* based on the selection object, I would simply do a For Each Paragraph in Selection.Paragraphs loop, and operate on each paragraph therein.

Well, actually-- when I'm dealing with the Selection object, I generally change to working with a range as quickly as possible. But the idea is the same... something like

Dim oPara as Paragraph
For Each oPara in Selection.Range.Paragraphs
oPara.yadayadaformattinghere
Next


This would have a negative (?) impact when dealing with multiple line-spacings, but that (to me) is up to the user. The user can conform everything to a single value. Where the macro (to me) adds value is in speeding up something which would be slow (individually incrementing paragraphs based on their individual values).

But this has to do with your end-users and your design specs... so this is more a "flavor" kind of thing, rather than right vs. wrong.

2. Good catch on my wrong values. If I were a smarter guy, I'd say I'd done it on purpose to see if you would validate the methodology (using the immediate window to get valid values-- which is, after all, the original point of this thread). But I'm not that smart. However, I think you probably saw how easy it was to test for the answers anyway ;)

3. You're right that Word doesn't handle newspaper style very well at all. Columns have always been a troubling spot. I guess the trade off (to me), is how important the ability to automatically wrap text is. Because that's really the only thing the use of columns gives you (apart from a lot of other headaches).

Generally, the suggestion is to do this kind of page-layout with very specific columns and alignment issues by simply using a table instead. There are settings where you can make the table not get any bigger (i.e., lay it out as a template on a page and not have it move)... and then you just have to pay attention to when you have the text wrap to another column.

This is a (to me) easier solution to deal with columns, than all of the extra manipulations required simply to allow yourself to type in a column and have text wrap automatically to the next column.

If, after the above explanation, you still want me to look at your code... I will. But you should know that I have examined this in the past and determined that making columns "work" in Word is generally a waste of time. Perhaps others will have a different opinion, and have some pre-fab code (or understanding) which helps you too.

MacroShadow
04-28-2012, 12:01 PM
Thank you for your time and expertise...
I will look in to using a table. The only thing is that will necessitate much more coding (for example enable copying of text only without the table, but yet more important, since the documents were and will be created by many different people, creating a template wouldn't be the appropriate solution, instead the text (from the original documents) would have to be replaced by a table with the same dimensions as the columns).
It may be a waste of time but if the idea of using a table falls thru, the idea I'm currently pursuing will save an awful lot of money (preventing the need to purchase a desktop publishing suite.

Frosty
04-28-2012, 12:18 PM
You will know more about your process than I do, obviously. But in 15+ years of working with MS office in multiple industries, I have never encountered a scenario where word columns were good way to do desktop publishing. As the occasional use, sure... But in the absence of something like Quark or a similar product, use of tables was always more cost effective and required less training.

However, if you are (for whatever reason) committed to columns for this purpose, unless you are doing this for free, the development costs over time for your solution will likely be more expensive than the software purchase.

Word and columns is simply a round peg in a square hole for "real" publishing. I actually think PowerPoint is better suited to this purpose in most cases, and in others... Word with 1x3 tables on each page the alternative.

fumei
04-28-2012, 07:35 PM
But you should know that I have examined this in the past and determined that making columns "work" in Word is generally a waste of time.


But in 15+ years of working with MS office in multiple industries, I have never encountered a scenario where word columns were good way to do desktop publishing. Well I have 30 years of experience, and have used Word since the very beginning.

Columns are like a lot of things Microsoft jammed into Word (like a lot of things in 2010) because people 'wanted" it.

They have never worked well. There are the very few cases that they do, but IMO those cases are NEVER longer than a single page (or two pages duplex).

It greatly annoys me when Microsoft - and people who use Word - pretend Word is something that it is not. It is NOT a desktop publishing application. Yes, it can fake it fairly well under careful conditions. Nevertheless, it is not. If the graphic placement is critical - and no doubt it often is - then use the tool for the job. A desktop publishing application.


I have never encountered a scenario where word columns were good way to do desktop publishingI completely agree. It took me 10 years to finally get my employer to shell out for Quark, and it only happened when I proved the cost of me (and others) struggling with document requirements was VASTLY off-set by the cost of buying proper software.