Solved

need to save the complete html of a webpage using ie using vba access

Posted on 2016-10-07
10
44 Views
Last Modified: 2016-11-17
i am trying to save the complete webpage so it looks basically like a print screen, with all the formatting using vba.  I am using the internet explorer object.  I want it to save a copy like internet explorer does when you do a saveas from the internet explorer file menu and saving it as a webpage complete html.



S = IE.Document.documentElement.outerHTML ' get html file

Fname = "Test.html"
Open Fname For Output As #1
Print #1, S ' save the header file
Close #1
0
Comment
Question by:hal60
  • 3
  • 3
  • 2
10 Comments
 
LVL 49

Assisted Solution

by:Gustav Brock
Gustav Brock earned 250 total points
Comment Utility
You can use this code and function:
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( _
    ByVal pCaller As Long, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) _
    As Long


Public Function DownloadFile( _
    ByVal strURL As String, _
    ByVal strLocalFilename As String) _
    As Long
  
' Download file or page with public access from the web.
' 2004-12-17. Cactus Data ApS, CPH.

' Usage, download a file:
' lngRet = DownloadFile("http://www.databaseadvisors.com/Graphics/conf2002/2002ConferencePicsbySmolin/images/dba02smolin27.jpg", "c:\happybassett.jpg")
'
' Usage, download a page:
' lngRet = DownloadFile("http://www.databaseadvisors.com/conf2002/conf200202.asp", "c:\dbaconference.htm")

' Returns 0 if success, error code if not.
' Error codes:
' -2146697210 "file not found".
' -2146697211 "domain not found".

' Limitation.
' Does not check if local file was created successfully.

    Dim lngRetVal As Long
      
    lngRetVal = URLDownloadToFile(0, strURL & vbNullChar, strLocalFilename & vbNullChar, 0, 0)
    
    DownloadFile = lngRetVal
  
End Function

Open in new window

/gustav
0
 

Author Comment

by:hal60
Comment Utility
That did not work for my case. all it did was force me to login to the site. it is a secure website and it somehow doesn't like this method.
0
 
LVL 49

Expert Comment

by:Gustav Brock
Comment Utility
Well, you didn't mention anything about a login. Then you need the browser object.

I don't have code for that, sorry.

/gustav
0
 
LVL 49

Expert Comment

by:Gustav Brock
Comment Utility
0
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

 
LVL 19

Accepted Solution

by:
darbid73 earned 250 total points
Comment Utility
Hi Hal60,

I will try and help as well. I would suggest you open IE and login yourself and then you use vba to get what you want.  If that works well then you can extend it to also automatically logging in.

Have a look at post #6.

If TypeOf IE Is SHDocVw.InternetExplorer And IE.LocationURL <> "" And InStr(IE.LocationURL, "file://") <> 1 Then
                    Set Get_IE_Window2 = IE
                End If

Open in new window

This code about you need to customize in case you have more than one IE tab open by checking the location URL.

Once you have good code to get the currently open IE on the tab where you have already logged in then use code like is in this question.  Note that the code you need to customize here is which part of the document you want.  So body, inner or outer html etc.

If you put this together and it does not work or you still have questions post the code you have put together and point out which line is still not doing what you want.
0
 

Author Comment

by:hal60
Comment Utility
i tried using Ie.Document.execCommand "SaveAs", True, X   it kind of works but you can't specify a destination file(goes to a default folder) .  the dialog save as comes up but prevents the code from continuing so i have to manually enter ok (which kind of defeats the purpose of automation), i would have liked to sned a key from the code.   I tried changing true or false which didn't matter.and  The only way a dialog box would come up is if i put a filename that didn't have a subfolder. for example  c:\test.htm would bring up dialog  but c:\TEST2\test.htm did not  weird
0
 
LVL 19

Expert Comment

by:darbid73
Comment Utility
That is why that person also asked the question.

The next person quotes from the information on that method...

"The Save HTML Document dialog cannot be suppressed when calling this method from script."
0
 
LVL 19

Expert Comment

by:darbid73
Comment Utility
Gustav's post #a41834404 is a solution to the question on downloading a file, however the author then added a further comment which meant that this solution could not be used.

Darbid's post at #a41851743 is a solution to the authors question and further comments. The link forum question offer 2 solutions, it appears the author has tried the first solution as he comments above he does not like it.  The second solution is exactly what he needs and I assume he is using this and it suits him which is why he has not replied.

I suggest a split of points between Gustav and Darbid.
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

When you are entering numbers in a speadsheet, and don't remember what 6×7 is, you just type “=6*7" instead. It works in every cell! This is not so in Access. To enter the elusive 42 in a text box, you have to find a calculator, and then copy the re…
Improved? Move/Copy Add-in Replacement - How to avoid the annoying, “A formula or sheet you want to move or copy contains the name XXX, which already exists on the destination worksheet.” David Miller (dlmille)  It was one of those days… I wa…
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…
The viewer will learn how to create a normally distributed random variable in Excel, use a normal distribution to simulate the return on an investment over a period of years, Create a Monte Carlo simulation using a normal random variable, and calcul…

762 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

9 Experts available now in Live!

Get 1:1 Help Now