Académique Documents
Professionnel Documents
Culture Documents
OVERVIEW
This program is designed to minimize the time a contractor must spend to prepare a bid for a construction project while helping to eliminate the mistakes that can occur when a contractor prepares a bid using pencil, paper, and calculator. To use the program, the contractor must first enter in all of their project information. Cost information is automatically updated from an access database and the internet into the program, and then automatically updated back into the access database as well. Once pricing is up to date, the contractor can begin building an estimate for that project. The program includes a summary sheet with all of the typical necessary categories or trades that need to be estimated when building a home. The summary sheet is linked to individual sheets built specifically for estimation of each trade, such as Flooring or Framing. The contractor has the ability to navigate quickly through each category through links on the summary sheet or through custom buttons on the ribbon. Once an estimate is complete, the contractor can send a proposal to the client via email just by clicking a button on the ribbon. The program can also create pdf files of the proposal and the contractors estimate with the click of a button. The program is also designed to track project costs and compare them with the estimate as a project is being completed. All of these features allow for a quick and accurate estimation of a construction project, saving valuable time and other resources, allowing the contractor to focus more on getting their projects completed.
IMPLEMENTATION DOCUMENT
STARTING A NEW PROJECT
The user of this program would have a Template version of the software in a folder somewhere on the hard drive. This template version of the workbook cannot be saved over to prevent a user from deleting any necessary data or disturbing the functionality of the program. Upon opening the template workbook, the user is immediately presented with a User Form that requests information regarding the new project they would like to begin compiling an estimate for. (See Figure 1)
This User Form asks the user to enter a number of details about the new project, including the customer name and the customer email. Of the eight input boxes on the form, five of the them require input from the user because the details entered into those input boxes is used later in the process when the completed proposal is emailed to the client. To ensure we receive this information from the user, we included code to check for the details. If the user clicks the OK button without having entered data in all required fields, a message box will pop up alerting the user that required fields were left blank. The user is then sent directly back to the User Form in order to fill in any remaining required fields. The only way for the user to exit this User Form is by completing all required fields and pressing OK, or by pressing the Cancel button. As discussed earlier, we dont want the user to be able to save over the template version of the workbook, so if the user clicks the Cancel button, the template file is simply closed without saving changes. If the user clicks OK, the data entered by the user is then carried over into the project spreadsheets. A new subfolder is then created and the name of the subfolder is the name of the client on the new project. The workbook is then saved in that new subfolder and is also given the name of the client.
When the user presses the Update Costs button, the program will connect to an Access database that is located in the same system folder as the original Template file. The table in the Access database contains all the items from the entire program and the idea is that a member of the companys office staff would be tasked with continually updating the costs in this database whenever supplier pricing changed. (See Figure 3)
By pressing the Update Costs button, the workbook connects to Access, creates a new worksheet called Cost Data, and then populates that worksheet with the data it pulls in from Access. (See Figure 4)
Some of the items imported from the database have URLs listed. The URLs are where those particular items can be found online at Lowes.com. These would be items that a contractor chooses to buy on a Lowes account rather than buying from a material wholesaler. For the items that do have a lowes.com URL, our code takes each URL and runs a web query to find the cost to buy that product on the company account at Lowes. Once the web query runs, the cost of that particular item is placed into the Cost Data sheet.
Once all the cost data has been imported to this Excel workbook and the costs of items available at Lowes have been updated, the program then takes all this cost data and goes line-by-line through that data in order to find that item in the workbook and update with the new cost pulled from Access. The program then takes all of the updated cost information and returns it to the Access database, ensuring that all costs are up to date in both locations. Once all costs throughout the workbook and Access database have been updated, the new Cost Data worksheet is deleted. At this point, the user is ready to begin actually building the estimate. Occasionally, the user will also want to push the updated costs from Lowes back to the Access database. In order to do this, we provided a Push Lowes Costs to Access button. This helps to ensure that the costs for all materials available at Lowes can be updated automatically on a routine basis.
BUILDING AN ESTIMATE
After the new project workbook has been created and all material costs have been updated, the user can now begin to build out the estimate. The program has a total of 33 worksheets the user must go through and enter quantities for the different materials. (See Figure 5) These 33 worksheets are considered the Detail worksheets and each sheet is dedicated to one particular building trade (e.g. roofing, electrical, HVAC, or insulation).
As the user navigates through each of the 33 Detail worksheets and inputs the quantity for each item, formulas contained within each worksheet calculate the total cost for each item. Formulas also calculate a subtotal at the bottom of each Detail worksheet, and those subtotals are returned to the Cost Breakdown Summary worksheet. As the user navigates through the workbook, we also added several navigation buttons to the ribbon to assist the user. (See Figure 6)
The Previous and Next navigation buttons simply give the user another way to move from sheet to sheet within the workbook. The View Cost Breakdown button takes the user to the CostBreakdownSummary sheet so the user can view the current details at any time while building the estimate. The View Proposal button will take the user directly to the CustomerProposal worksheet so the user can view the details of that proposal as the estimate is built. We felt these buttons were necessary because the workbook has so many worksheets in it. With dozens of worksheets, it saves the user time to be able to click the button and go directly to the cost breakdown sheet or the proposal sheet without having to scroll through all the sheets to find them.
When the Print Proposal to PDF or the Print Breakdown to PDF buttons are pushed, the PDFs are created and named using the Project Name and are put in the subfolder that is also named after the Project Name. Either file can then be accessed in the future by the user so the user doesnt have to open the project workbook back up to get the details of the cost breakdown or the customer proposal.
This text file contains the basic text of the form letter and the variables needed to convert some elements of the form letter to specific project information (e.g. customer name, project name). In order to send the email, our code first connects to Gmail. After connecting to Gmail, a User Form will appear which prompts the user to enter a Username and Password. After the user enters this information, the code then uses the text file to create the body of the email and also attaches the customer proposal to the email. The email is then sent to the client at the address specified in the project workbook. (See Figure 8) At this point, the estimate is complete and the client has received the proposal.
to build out a database that contained each one of those items, it would still function properly when the Update Costs button was pushed. For a small contractor, the creation of this massive database would be very time consuming. But once the database was created, maintenance would be minimal. Essentially, an office assistant could be tasked with receiving cost changes from suppliers and then just opening the database and changing those costs accordingly. Because most cost changes from suppliers are fairly infrequent, we would assume that the office assistant would only be changing prices on a handful of items at a time. For larger contractors, this would be a complete non-issue because they typically pay for a subscription to a construction database. This means these companies always have access to a complete database of costs without having to be responsible for updating those costs. If this were the case, our code could quickly be edited so that rather than connecting with an internal Access database, it would connect to the external cost database. The cost data from this external database would then be pulled back into the project workbook and could be used to update the material costs in the same way our Access database currently does this.
ASSISTANCE
In writing the code for this project, the only help we received was from Professor Allen. We also referenced several of the in-class projects we wrote throughout the semester. Professor Allen helped us to debug the code that connects us to our Access database. The in-class projects we referenced then helped us correctly extract the data from the database and insert it into the Excel workbook.
10