-
Feb 14th, 2018, 10:25 AM
#1
Thread Starter
Fanatic Member
reading a word file
I am using VB6 and MS Office 2003 Pro. I am trying to read a word document into vb6. The whole file. Then I want to look for certain words with the 'instr' function and manipulate the data (not back into word) . This is similar what I do when I read (parse) data from the internet. I can't seem to get the data into a string.
Any help would be appreciated.
Thanks
-
Feb 14th, 2018, 11:03 AM
#2
Re: reading a word file
Something like this?
Code:
Option Explicit
Private Sub Form_Load()
Dim wrd As Object
Dim doc As Object
Dim docText As Object
Dim sFileSpec As String
Dim sText As String
'
Const wdExtend = 1
Const wdMove = 0
Const wdStory = 6
sFileSpec = "C:\Users\Elroy\Desktop\temp.docx"
Set wrd = CreateObject("Word.Application")
Set doc = wrd.Documents.Open(sFileSpec)
Set docText = doc.ActiveWindow.ActivePane.Selection
docText.HomeKey wdStory, wdMove
docText.EndKey wdStory, wdExtend
sText = docText.Text
' Clean up.
Set docText = Nothing
doc.Close False
Set doc = Nothing
wrd.Quit False
Set wrd = Nothing
MsgBox sText
Unload Me
End Sub
EDIT1: Just as an FYI, I do all of my Word automation with late binding. Therefore, it's rather independent on the exact version of Word that might be on the computer. No references needed to make the above code work (other than some version of Word installed on the computer).
EDIT2: Also, I used a MsgBox to display the text. That'll work fine so long as it's a small document, but I'm not sure what the text limit of a MsgBox is, but I suspect a Word document could easily overflow it.
Last edited by Elroy; Feb 14th, 2018 at 11:08 AM.
Any software I post in these forums written by me is provided "AS IS" without warranty of any kind, expressed or implied, and permission is hereby granted, free of charge and without restriction, to any person obtaining a copy. To all, peace and happiness.
-
Feb 14th, 2018, 02:19 PM
#3
Thread Starter
Fanatic Member
Re: reading a word file
I cannot get past the Set wrd and the Set doc statements. The programs displaying a msg that another programs is using a file - not specifying what file. The task manager displays a 'File in use' entry with vb project icon. Set wrd executes, sort of when stepping thru the code. The set doc statement does not even light up.
Any suggestions?
Thanks
-
Feb 14th, 2018, 02:22 PM
#4
Re: reading a word file
Hi AccessShell,
I'm going to guess that you terminated my example before it had a chance to execute the "Clean up" code. You've left an invisible copy of Word in memory which has that document open. To clean it up, you'll have to open your Task Manager and kill that copy of Word. Then, things should start working correctly.
When you automate Word, you've got to be sure to close the document and then quit Word before you end your program.
Good Luck,
Elroy
EDIT1: Also, in my little down-and-dirty example, I made the assumption that the document definitely exists. I assume you patched that part up to point at one of your documents. It's up to you to verify that the document exists before you try and open it with word. Also, if Word can't find it, it's still up to you to make sure Word gets correctly cleaned up from automation. You can't just have your program crashing with an error. All of that is somewhat beyond the scope of your question though.
EDIT2: Just to elaborate a bit more, that "Set wrd = CreateObject("Word.Application")" line gets a copy of the Word program in memory and gives us access to it. The "Set doc = wrd.Documents.Open(sFileSpec)" line uses our copy of Word to open a file. Now, it's quite easy for us to release our object variables (wrd and doc) while still leaving our copy of Word in memory and possibly leaving our document open. To close the document, you must execute the "doc.Close False" line. And to shut down Word, you must execute the "wrd.Quit False" line.
Last edited by Elroy; Feb 14th, 2018 at 02:32 PM.
Any software I post in these forums written by me is provided "AS IS" without warranty of any kind, expressed or implied, and permission is hereby granted, free of charge and without restriction, to any person obtaining a copy. To all, peace and happiness.
-
Feb 14th, 2018, 02:32 PM
#5
Thread Starter
Fanatic Member
Re: reading a word file
How do I delete something that is not visible in the task mgr?
Also, I don't need the word document to be displayed. I just need to pull in the data.
P.S. A string can hold a lot. I've used a string to hold the contents of an entire web page to parse.
-
Feb 14th, 2018, 02:35 PM
#6
Re: reading a word file
It's visible in the task manager. It's just not visible (by default) on the screen when you're doing automation.
p.s. Yes, a string can hold up to 2 GB, but I think that would blow up the MsgBox.
EDIT1: To make Word visible during automation, you could do: wrd.Visible = True
Do that immediately after you get your wrd object set.
EDIT2: Yeah, I just tested it. The MsgBox (sort of) blows up at 1023 characters. Actually, it just truncates, showing the first 1023 characters if the string to show is longer:
Code:
Option Explicit
Private Sub Form_Load()
Dim i As Long
Dim s As String
For i = 1 To 10000
s = s & Format$(i Mod 10)
Next i
MsgBox s
End Sub
Last edited by Elroy; Feb 14th, 2018 at 02:42 PM.
Any software I post in these forums written by me is provided "AS IS" without warranty of any kind, expressed or implied, and permission is hereby granted, free of charge and without restriction, to any person obtaining a copy. To all, peace and happiness.
-
Feb 15th, 2018, 03:32 PM
#7
Re: reading a word file
if the word document is already open you may be able to use getobject("fullpath\filename") to automate the open document, without affecting the document in use
you can also use getobject to find not viisible word instances (showing in task manager), then make them visible or close them
i do my best to test code works before i post it, but sometimes am unable to do so for some reason, and usually say so if this is the case.
Note code snippets posted are just that and do not include error handling that is required in real world applications, but avoid On Error Resume Next
dim all variables as required as often i have done so elsewhere in my code but only posted the relevant part
come back and mark your original post as resolved if your problem is fixed
pete
-
Feb 15th, 2018, 04:41 PM
#8
Thread Starter
Fanatic Member
Re: reading a word file
Ok, so I had a corrupt word file from a test crash before I got to close the connection to the word file. I had to delete the file and recreate it and it worked like a charm. I was using a string rather than a msgbox.
What is happening, I was writing a program to access the web page and capture the data to parse. Usually I use the winhttp reference and store the data in a string I couldn't do that here because it was protected page. You could not get to the page in code. So I have to manually bring up the page in IE11, bring up the source and copy that into a word file. Then I use the program to parse the data and format it. And yes, I know getting data that way is risky because of the provider changing the web page format.
Thanks to all who helped.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|