Fill data in PowerPoint Template through Access using VBA? - ms-access

I'm developing a small project, using Access, SQL, Word and PowerPoint, the goal of this project ist too allow the user, to add is personal information, in Access, throught user forms, register that information in the SQL database, and passe it to templates in Word and PowerPoint.
The templates are loaded and the dynamic data in them, filled, when pressing a button (word or powerpoint) in an access form.
So, with word, it's all working well through the use of bookmarks, but in powerpoint, things get tricky, there are no bookmarks (damn you Microsoft).
So i've been searching SO and Google, but cant seem to find a example that works for me. All of the examples talk about creating a new powerpoint presentation, that is not want i'm looking for.
The goal is just to add the dynamic data, in this case textboxes and a photo, and leave the static data in the template.
So the flow would be something like this
SQL (database) -> ACCESS (user interface) -> Word and Power Point (Final Template).
If anyone has an example of how just to start this i would be very gratefull for your help.
Thank you all for your time in this matter.

I'm not clear on what the problem is exactly. Do you need to know how to start a new presentation based on your existing template? If so, you'd open your template file as though it were a presentation then immediately save it AS a presentation (rather than starting a new presentation and applying the template, which will give you only the design but none of the contents .. the slides ... of the template file).
I also don't understand why you'd expect all applications, Word, Excel, PowerPoint and the rest, to be identical. If Word did everything that PowerPoint does, there'd be no need for one or the other of them. It stands to reason that they'll have different feature sets, as appropriate to their usage.
In any case, to add, say, user name as needed throughout a presentation, it's quite quick to look at each shape to see if it contains text, and if so, to replace, say %%USERNAME%% with the actual user name you're working with.
You can similarly look for special text, say PICTURE:portrait, within a shape and if found, insert a picture, size it to match the shape then delete or hide the original shape.

Related

make a URL displayed clickable without control of the website

I am doing some volunteer work for a charity that is using a couple online systems that store their donors and related data. I would like to find a way to store a URL as a custom field in such a way that they can put corresponding links between donors in one of the systems in order to quickly find the same donor in another system. The only built-in method in the products being used is to store a single value in a field labeled "website" which is originally intended to store a value for any website associated with the donor. I would like to avoid using this field if possible and instead create a custom field.
However, the rub is the custom fields only have a handful of options (clear text, date, currency, etc). There is no option to store a URL or something like rich text). I've thought of a couple less optimal ways to make the values stored in those fields clickable (a browser plugin or a proxy) however both of those have obvious drawbacks that I would like to avoid.
What I am wondering and hoping someone has a possible answer for, is if there are an ways of storing a value in a clear text field that might disrupt or escape the underlying html encoding such that the displayed link is clickable. I already control the values being put into these fields (users cannot enter their own values, they are essentially read-only), so security isn't much of a concern.
I have very limited access or influence to have any system level changes, however I would like to make this possible as it would help them a great deal (their users are all volunteers with limited time and education). I've tried a few tricks but havn't found anything that doesn't get converted to unicode or escaped (it could be that it's completely controlled for at output, i simply don't know).
My current attempts have been limited to using the built in forms submission, I may explore their import and/or API methods on the theory that might allow better low-level access to storing the actual values in the system, however I'm still not certain what to try other than adding .
I have also tried an inline script to add the corresponding tab, however that seems to break the form submission method (perhaps it'll work via csv import or via the API)
Does anyone have suggestions for other things I could try before I go any further? I'm a bit of a novice and feel like there may be something else obvious I haven't tried.

How can I summarize the updates to a table on an page I browse?

I am a student at a University. With the placement process going on, we have an internal placement website that shows updates and status about various companies I have applied to. Since the number of companies is too large it becomes cumbersome to scroll through the complete list to find information. Sometimes, I just miss some things. Now, to tackle this problem, here is what I want to do:
The data is in an HTML table. Each row shows information about one company: Some dates, Status(Not/Shortlisted/Applied), Some yes/no options etc. each in a different column. Once I open the page I want to be able to extract information about which companies I got shortlisted in, and in which ones I didn't make it.
What is the right technology to do this ? I am thinking of writing a Greasemonkey user script (I have never actually written any, but how hard could it be ?). What other options do I have?
Edit: I don't quite understand why this question has voted to be closed?
I just displayed a use case for something general: On opening a web page, automatically extracting information from the page and display it to the user. What is the easiest and sufficiently powerful way to achieve this?
Since you can't get access to the website's database, Greasemonkey would be your best automation approach. However, this task is likely to be over before you can get a decent script up from scratch.
Your best practical approach is to save the pages and/or copy and summarize the data in MS Excel, or equivalent.
~~~~~~~~~
Here at SO, We will not develop any but the simplest Greasemonkey scripts for you from scratch (unless they are fun somehow ;) ). But, you can sometimes get such help in the "Script requests forum" at userscripts.org.
In order for someone to help you, they will need:
A clear idea of exactly what data gets manipulated, and how.
Access to the target site. Or access to saved snapshots of the target pages. GM scripts are extremely dependent on the details of the target page.
"other option":
ctrl + F
enter shortlisted
enter
ctrl + G <--repeat last search

Macro across multiple word documents

I am working with a small company who is slowly moving to MS access. Currently all their reports live in multiple MS Word documents. During this transition they need to not only keep the word documents up to date, but also feed the information into the database. (Basically remove the need to double enter data).
Is there a way that I can write one global macro that can be ran on any word document, or do I need to carry over this macro to each individual document?
Yes, you can use one global macro. You can place this macro in the user's normal.dot or put it in another document. I suggest using another document because it is easier to "deploy" to multiple users. This document is placed in one of Word's "startup" locations. What you are doing is creating an "add-in".
Word Add-ins at
http://msdn.microsoft.com/en-us/library/aa189710(office.10).aspx.
"You can add functionality to a
Microsoft® Word solution by creating a
Word-specific add-in (also sometimes
referred to as a global template)."
Office 2007 has some wonderful ways to make transfer the semantic meanings of these reports to a more specific type of data that will fit easier into a database using XML and schemas. If you want to learn more about this, go watch "Module 05 Custom XML" at http://msdn.microsoft.com/en-us/office/bb738430.aspx Specificly the part about distributing a schema to people to allow them to "mark up" these word documents (it's really easy) so there will be less of a burden on you to import all this stuff.

Viewing Word Docs READ ONLY

I have a report reading records out of a DMS system and I thought it would be nice to have a link to the documents that it is listing so that the users could view the actual documents.
However when it displays a Word doc it allows you to make changes and then save them, which rather undermines the DMS system.
I don't think there is a parameter (/r) in Word that does this so do any of you clever people out there have a solution please?
Here is a link to the command line switches in Word 2007. There does not appear to be such an option as you describe. The /r switch re-registers Word in the registry and closes. Probably the best way to do this is download the Word Viewer and use it to open the document rather than Word itself.
If you have the option to write a small web component, write a component that takes an ID and streams out the document, then link to that service from the report. The web server will make a local copy of the document for reading.
Of course, then users will be frustrated that their changes are going into a black hole, but it sounds like that may be a better problem to have.
There's a better answer for those using Sharepoint

MS Access Reporting - can it be pretty?

I am working on a project converting a "spreadsheet application" to a database solution. A macro was written that takes screen shots of each page and pastes them into a PowerPoint presentation. Because of the nice formatting options in Excel, the presentation looks very pretty.
The problem I'm having is that I haven't ever seen an Access report that would be pretty enough to display to upper management. I think the output still has to be a PowerPoint presentation. It needs to look as close as possible to the original output.
I am currently trying to write some code to use a .pot (presentation template) and fill in the data programmatically. Putting the data into a PowerPoint table has been tricky because the tables are not easy to manipulate. For example, if a particular description is too long, I need to break into the next cell down (word-wrap isn't allowed because I can only have n lines per page).
Is there a way to make an Access report pretty, am I headed down the right path, or should I just try to programmatically fill in the Excel spreadsheet and use the code that already exists there to produce the presentation? (I'd still need to figure out how to know when to break a line when using a non-monospaced font, as the users are currently doing that manually when they enter the data in the spreadsheet)
Jason Z:
If I set it to wrap, and I already have n lines, it would make n+1 or 2 lines on the slide, which is unacceptable.
Dennis:
That article looks very good, I should be able to glean something from it. Thanks!
Access has the capability to create downright beautiful reports. The problem is that it can't make a spreadsheet look better than Excel. You have to know when to use each tool.
Use Excel when you have spreadsheet-like formatting, need a lot of boxes and lines, or want to draw charts.
Use Access when you will output a report as a PDF. It's very useful for one-record-per-page detail reports, formatting where you need to position things very precisely, and where you need to embed subreports with related or unrelated data.
Think about the reports that would be nasty in Excel because you'd have to merge cells all over the place and do funny things with the placement and the layout would never work. That's where Access shines.
Joel, (your co-host here) did a thing about using access reports for shipping labels a few years back... maybe this could be a inspriation for you?
http://www.joelonsoftware.com/articles/HowToShipAnything.html
I have implemented Access reports which were 'pretty' enough. The downside is that it takes a lot of time and effort, and trial and error to produce the desired output.
You can definitely get there, but it requires the patience of a saint.
I guess it depends on what you mean by pretty. For example, I do not find it particularly difficult to produce say, reasonable graphs and tables with alternate line shading in Access. It is also possible to use MS Word and fill in bookmarks, or mail merge. If the present system uses VBA to create the PowerPoint presentation, perhaps much of it could be transferred to Access? Microsoft have an article on Access to Powerpoint: http://msdn.microsoft.com/en-us/library/aa159920(office.11).aspx
Finally, it is not impossible to build HTML output from Access.
We create multi-colored, conditionally formated, reports that are printed for the partner meeting each month of a publically traded corporation. They're real pretty.
I would suggest that the problem you're having is because the requirement to replicate the old method identically is an incredibly bad idea.
You're not using Excel any more.
You're using a different tool with different capabilities.
Thus, you will use different methods to get results.
Re-evaluate the original requirements to see if they still make sense (e.g., exactly why is PowerPoint involved at all? Can PowerPoint import from the Access report snapshot viewer? Can PowerPoint import from a PDF produced from an Access report?), or if they are too connected to the old tools, and then determine what is important and what isn't, and only then should you start designing your solution.
I personally would not try to re-invent the wheel here. If you already have an Excel sheet that has the formatting you want, just export the data from Access into Excel for the report. Now, if you didn't have the original Excel sheet to begin with, that would be a completely different story.
As for breaking lines with non-monospaced fonts, have you tried setting the cell format to wrap?
It sounds like the path of least resistance is to fill in the Excel spreadsheet. We have a contractor who does our Access stuff, and for the more complicated reports he uses Excel. I guess complicated == hard to make look good.
Rather than filling in the excel spreadsheet programmatically, you may want to use the external data features of Excel and Access. Generally I put a query on each tab, which of course may be hidden. An "update all" causes all the queries to be updated. Then summary tabs show the pretty results from all the individual queries.
For one particularly complex system, a bit of excel vba programmatically changed a query and then walked through the tabs updating each one.
Finally, rather than doing screen shots, Excel has a "copy cells as a image" copy that populates the copy buffer with a resizeable image. This could give you better looking results than a pure screenshot since a screenshot can have various deficiencies depending on pixel density.
Just an update:
After a few hours of work, I was able to get a nice report out of Access (almost an exact copy of the excel version). It wasn't as difficult as I thought, I just had to figure the correct mixture of out subreports and pagebreaks.
Working with the wordwrap features of Excel/Powerpoint were a dead end because there could only be a set number of lines per page, period; plus I was too lazy to nail down all the pagination with VBA code issues myself. Like Shelley says, Access shines at report generation.
The output ended up being a PDF (Using Adobe Acrobat Professional). The problem I have left is getting select pages of said PDF into Powerpoint without Powerpoint antialiasing the results for me and making the resulting slide's text fuzzy. I found a couple of articles on converting .snp output to .wmf, which sounds like the way to go on that front.