I am looking for code that will open all embedded documents within a Word document, update the mail merge info, and close the file again.
Here's the story: I have about twenty documents that contain instructions on how to get access to various systems. These documents are role-specific—meaning that depending on the user's needs, these instructions vary from document to document.
At the present, anytime a system changes their access procedures, I have to go into each of the twenty documents and update the necessary information. I have been working on a solution to improve the workflow but have hit a little snag.
I have created system-specific documents that contain the information to access the individual systems. I have then embedded these system-specific documents into the original role-specific documents. This has the desired effect—I am able to manipulate information in the system access document and it will update information in the documents for all the necessary roles.
That part isn't the snag. This is the snag. In each system access document, I have a mail merge running that puts in role specific data (i.e., login info, role, department, etc.) The mail merge collects information from a master user excel file.
The overall effect here would be that I can input user data into the user excel file, open the role-specific instructions needed for that user, and have all the embedded documents already run the updated mail merge info without having to open each system-specific document and updating the mail merge info.
I am looking for code that will open all embedded documents within a Word document, update the mail merge info (this generally occurs upon the file opening), and close the file again.
If anyone can help with this little scenario, or if anyone has a much more better idea that would work, please let me know.
Related
I have a Notes app that was designed for the browser, not the client. It allowed upload of files into the documents, so nearly all the documents have files. The files are stored in the NSF as $FILE and displayed in the documents as links.
I am using Adobe Acrobat Pro to create PDFs from the documents and need to include the file attachments within the PDFs, however the PDFs just include links to the files, not the attachments. Can I write an agent to run against the documents to get those files and embed them within the documents? When I view those documents through the client, I see all of the HTML etc. and then at the bottom of the document, the file attachments appear. When I view these same documents in the browser, the file attachments do not appear. If I could merely ensure that they are there, then when running the PDF generator in Acrobat Pro, they would be included in the PDFs and executable.
I am really stuck here, with no other way to 'archive' this notes database with all the data intact.
Thanks in advance for any insights!!
Ginni
There is a commercial product from Swing Software that does this. I hear that it's quite good, but I've never used it. Let me explain why...
The way I usually end up doing this is just quick-and-dirty. I write an agent to export the files, using the document UNID as part of the filename. The same agent exports all the data fields from the document into a CSV file, and I add a column with the filename of the extracted attachment. In your case, I would add two columns -- one for the extracted attachment(s), and one for the generated PDF. The CSV serves as an index for the exported data. It can be imported into something more friendly, or just left as-is and brought up in Excel, depending on the customer's usage requirements and available systems. I've recommended Swing Software's product and offered to explore other ideas for developing code (e.g., using wkhtmltopdf for Domino web apps to capture a WYSIWYG rendering based on an HTML crawl) for PDF rendering of Notes documents for a couple of clients, but none of them have justified the cost that would be involved in buying licenses and/or writing the code. Quick and dirty always seems to win, even when there are retention and eDiscovery considerations taken into account.
Was wondering if anyone could help me out. I have written a report in SSRS 2008. I would like to add a button or a link on the page that will email the currently run report.
I know I can do this in subscription and set a schedule for this however the data needs to be checked before an email can be sent out.
Thanks for taking a look
Rusty
Essentially what you want to do is put a mailto link on the page that generates an email when the user clicks on it. There is a component of the mailto link which will include an attachment. However, the attachment must be a locally housed file, it cannot be stored at a web address. See more here.
If the report you are running does not require many resources, you can set up a subscription which will, on a scheduled basis (say every 5 minutes), write the report to a file on a shared drive. Therefore, the report is constantly being written and updated at a local path. Then, you should be able to use the "&attachment=" portion of the mailto link to refer to this subscription-generated file sitting somewhere on a shared drive. This might not be a good option for you if you're counting on up-to-the-second data in this report you're generating. Then again, if you're having the report manually reviewed by human eyes, then that's probably not too much of an issue.
If you pursue this solution, it will be important to keep in mind that whatever shared drive you have your subscription write the file to will need to be accessible by anyone that will be clicking on that mailto link. It's not sufficient for you to have access to it. When that mailto link is clicked, it will use Windows authentication (or authentication from whatever system you're using) to connect to that shared drive and retrieve the file.
Best of luck!
Before staring down a long road leading to a dead end--and especially so since I have to dust off Perl programming skills, then learn VBA--is the following scenario feasible?
Using Word 2010 VBA:
Open a starting .docm file (potentially a master document)
Display a form
Require user to enter data: project name, date, etc.
Scan the starting file's directory
Collect document properties: title, subject, total pages
Create a dynamic list from all document properties.
Insert list into form.
Allow user to select required documents (e.g. checkboxes)
Add selected documents to end of starting file.
Update inserted documents with user data: project name, date, etc.
(above)
Generate table of contents at beginning of starting file.
Prompt user to save file.
This is all feasible from Word VBA. From the description I wouldn't use Access, unless you need to store a large amount of data (or structured data) permanently - your description doesn't indicate this. Even then, if the data is just a simple (1D) table, I would prefer Excel to store it.
I wouldn't touch the Master Documents feature (if that is what you are referring to):
A master document has only two possible states: Corrupt, or just about
to be corrupt. And that is why we say that the only possible fix to a
master document is “don't use it!”
Why Master Documents Corrupt (MVP)
That page links to a further page here that describes how Master Documents might be used safely.
Besides which, your outline suggests that you are already creating your own version of a Master Document.
Hint: Rather than attempting to insert the document content as a file I would consider inserting a Section Break and then exploring the variety of Paste (and PasteSpecial) methods. Hans has some very useful code here.
Actually I am in need of counting the visitors count for a particular document.
I can do it by adding a field, and increasing its value.
But the problem is following.,
I have 10 replication copies in different location. It is being replicated by scheduled manner. So replication conflict is happening because of document count is editing the same document in different location.
I would use an external solution for this. Just search for "visitor count" in your favorite search engine and choose a third party tool. You can then display the count on the page if that is important.
If you need to store the value in the database for some reason, perhaps you could store it as a new doc type that gets added each time (and cleaned up later) to avoid the replication issues.
Otherwise if storing it isn't required consider Google Analytics too.
Also I faced this problem. I can not say that it has a easy solution. Document locking is the only solution that i had found. But the visitor's count is not possible.
It is possible, but not by updating the document. Instead have an AJAX call to an agent or form with parameters on the URL identifying the document being read. This call writes a document into a tracking DB with one or two views and then determines from those views how many reads you have had. The number of reads is the return value of the AJAX form.
This can be written in LS, Java or #Formulas. I would try to do it 100% in #Formulas to make it as efficient as possible.
You can also add logic to exclude reads from the same user or same source IP address.
The tracking database then replicates using the same schedule as the other database.
Daily or Hourly agents can run to create summary documents and delete the detail documents so that you do not exceed the limits for #DBLookup.
If you do not need very nearly real time counts (and that is the best you can get with replicated system like this) you could use the web logs that domino generates by finding the reads in the logs and building the counts in a document per server.
/Newbs
Back in the 90s, we had a client that needed to know that each person had read a document without them clicking to sign or anything.
The initial solution was to add each name to a text field on a separate tracking document. This ran into problems when it got over 32k real fast. Then, one of my colleagues realized you could just have it create a document for each user to record that they'd read it.
Heck, you could have one database used to track all reads for all users of all documents, since one user can only open one document at a time -- each time they open a new document, either add that value to a field or create a field named after the document they've read on their own "reader tracker" document.
Or you could make that a mail-in database, so no worries about replication. Each time they open a document for which you want to track reads, it create a tiny document that has only their name and what document they read which gets mailed into the "read counter database". If you don't care who read it, you have an agent that runs on a schedule that updates the count and deletes the mailed-in documents.
There really are a lot of ways to skin this cat.
My customer actually stores his documents, which are single page automotive forfeits, in a single MS Word document... this method is of course generating a huge file which is slow to open, not to talk about searches.
After a user compiles a document, he may need to print it to manually sign it. Then the document is scanned back and stored in PDF format. The document may be printed again to be
signed a second time by a manager. The doubly signed document is scanned again and saved
overwriting the singly-signed one.
The user wants to be able to search the document using a couple of search keys (the doc number and a sort of a SSN). That is the reason they are using a single file, to be able to search in the file using Word's search feature.
I have to propose an IT solution. I was thinking about giving them a software tool that:
reads a pdf form/template; the template rarely changes
shows the template on the screen and allows the user to input his variable fields in the form
some of the fields must be defined as searchable
the user saves only the form fields, not the whole pdf.
the sw is able to rebuild a document by coupling the template with the fields. I have to find a way to tie the template with the saved fields, so that the template can change (versioning) without breaking the old documents
the tool allows to search in multiple documents, using the defined search fields
the tool allows to print the document to manually sign it; this is the hard part. When the document is signed cannot be changed anymore, but if the document is simply scanned and coupled with the form/fields pdf, then I'll loose the benefits of only storing the data decoupled from the template. Should I only scan the signature and attach it to the document as an image?
What do you suggest to use?
Adobe XML Forms?
Adobe Forms Data Format?
An already existing software?
Other?
For the existing documents, I want allow the customer to import his huge MS Word file into the new system.
Thanks.
Sounds like you want a PDF form template that submits data to a dB that can be searched.
OTOH, if you just save the PDFs, Acrobat Pro can generate an index file from a directory, that can be searched (from reader?). Yep, you can run searches on an index from reader, but can only build them with Acrobat.
I prefer AcroForms to LiveCycle forms myself. There's a lot more software out there that works with 'em. If you go with LiveCycle, you're almost completely locked into Adobe. And Adobe server software is EXPENSIVE.