Solved

I need a script to auto sort by specific column(s) and format every worksheet in an excel file

Posted on 2008-10-29
6
272 Views
Last Modified: 2013-11-10
Hi all,

I am seeking a new .VBS script (please no VBA) for automation purposes that will take a specific excel spread sheet and sort all work sheets by a specific column(s). After the sorting is completed I need the script to also auto set the page to either letter or legal (also like to set portrait or landscape) and set the work sheets to auto fit to 1 page wide by any number of pages long, the # pages long doesnt matter much so long as it all fits on 1 page wide when printed.

I think that the lines for the choices should perhaps be a comment and just uncomment my choices manually with no actual prompting.

after all the work is done, the worksheet should be saved automatically.

0
Comment
Question by:smyers051972
  • 3
  • 3
6 Comments
 
LVL 65

Accepted Solution

by:
RobSampson earned 500 total points
Comment Utility
Hi, try this out.

Regards,

Rob.
strExcelFile = Replace(WScript.ScriptFullName, WScript.ScriptName, "") & "Test1.xls"

strSortColumn = "A"

boolHeaders = True
 

Set objExcel = CreateObject("Excel.Application")

objExcel.Visible = True

Const xlAscending = 1

Const xlYes = 1

Const xlNo = 2

Const xlTopToBottom = 1

Const xlSortNormal = 0

Const xlPortrait = 1

Const xlLandscape = 2

Const xlPaperLetter = 1

Const xlPaperLegal = 5

Set objWB = objExcel.Workbooks.Open(strExcelFile)

For Each objSheet In objWB.Sheets

	objSheet.Select

	objSheet.Cells.Select

	objSheet.Range("A1").Select

	If boolHeaders = True Then

		objExcel.Selection.Sort objSheet.Range(strSortColumn & "2"), xlAscending, , , , , , xlYes, _

    		1, False, xlTopToBottom, xlSortNormal

    Else

		objExcel.Selection.Sort objSheet.Range(strSortColumn & "2"), xlAscending, , , , , , xlNo, _

			1, False, xlTopToBottom, xlSortNormal

    End If

	With objSheet.PageSetup

	    .Orientation = xlPortrait

'	    .Orientation = xlLandscape

	    .PaperSize = xlPaperLetter

'	    .PaperSize = xlPaperLegal

	    .FitToPagesWide = 1

        .FitToPagesTall = False

	End With

Next

objWB.Sheets(1).Select

objWB.Save

objWB.Close

objExcel.Quit

Open in new window

0
 
LVL 1

Author Comment

by:smyers051972
Comment Utility
I will try it out now.

With regards to:
Const xlAscending = 1
Const xlYes = 1
Const xlNo = 2
Const xlTopToBottom = 1
Const xlSortNormal = 0
Const xlPortrait = 1
Const xlLandscape = 2
Const xlPaperLetter = 1
Const xlPaperLegal = 5

Could you explain what the options would be with respect to each other?

Thank you!
0
 
LVL 65

Expert Comment

by:RobSampson
Comment Utility
Those constants just set values for the different options available in Excel.

When you record a macro in Excel, such constants are used to specify parameters. In VBScript, the scripting engine does not natively know what "xlAscending" is, so you need to define it, that's all.

The options are used later in the code in the certain methods that require them.

Your page layout options, for example, are here:
      With objSheet.PageSetup
          .Orientation = xlPortrait
'          .Orientation = xlLandscape
          .PaperSize = xlPaperLetter
'          .PaperSize = xlPaperLegal
          .FitToPagesWide = 1
        .FitToPagesTall = False
      End With


and I have commented out a couple of them, because they conflict, so can swap the commenting when required.

Regards,

Rob.
0
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 1

Author Comment

by:smyers051972
Comment Utility
Thanks so much

I will try it out in the morning when I get back into work and close this soon as possible.

Thank you again!
0
 
LVL 1

Author Closing Comment

by:smyers051972
Comment Utility
Worked perfectly.
Thanks a lot!
0
 
LVL 65

Expert Comment

by:RobSampson
Comment Utility
Glad to help.  Thanks for the grade.

Regards,

Rob.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
This Micro Tutorial will demonstrate the scrolling table in Microsoft Excel using the INDEX function.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now