Solved

How to open .ods spreadsheet with VBA?

Posted on 2013-05-15
2
1,992 Views
Last Modified: 2013-05-15
I have an excel workbook (.xlsx, no vba in the workbook - "workbook1") that I open with vba contained in a second workbook ("workbook 2") to pull the data into another spreadsheet("workbook 3"). The code works like a dream normally, but if I open workbook 1 in Open Office Calc, make no changes and save as an .ods file, I get a "run-time error '1004': Method 'Open' of object 'Workbooks' failed". Here is the line that throws the error:

Set InsuredForm = Application.Workbooks.Open(TxtInsuredForm1.Text)

Open in new window


Here is additional relevant code:

Public Sub InsuredFormBrowse1_Click()
    Dim Filex1 As Variant
    
'SET INITIAL PATH FOR OPEN FILE DIALOG.
    sPath = "H:\"
    ChDrive sPath
    ChDir sPath

'OPEN FILE DIALOG.
    Filex1 = Application.GetOpenFilename _
        (FileFilter:="Excel Worksheets(*.xls; *.xlsx; *.ods), *.xls; *.xlsx; *.ods", _
        Title:="Please select the Insured Form.", MultiSelect:=False)
        
'SHOW SELECTED FILE IN TEXTBOX.
    If Filex1 <> False Then
        TxtInsuredForm1 = Filex1
    End If
    
End Sub

Public Sub ContinueButton1_Click()
Dim InsuredForm As Workbook

Application.ScreenUpdating = False
Application.EnableEvents = False

'OPEN THE FORM.
        Set InsuredForm = Application.Workbooks.Open(TxtInsuredForm1.Text)
        If InsuredForm.FileFormat = 51 Or InsuredForm.FileFormat = 56 Then
            Set sourceSheet = InsuredForm.Sheets("Inventory Form")
        ElseIf InsuredForm.FileFormat = 60 Then
            Set sourceSheet = InsuredForm.Sheets("Inventory_Form")
        Else
            WorksheetError.Show
        End If
End Sub

Open in new window


When I try to open the .ods file manually, I get a message that says
"Excel found unreadable content in 'Insured Form.ods'. Do you want to recover the contents of this workbook? If you trust the source of this workbook, click Yes."
I'll click 'ok' and Excel is able to open the workbook and tells me that some parts of the workbook may have been repaired or discarded, but everything looks intact. In the running to win "most useless error log of the year" award is the xml log listing the repairs made to the file:

  <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
- <recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  <logFileName>error031280_01.xml</logFileName> 
  <summary>Errors were detected in file 'C:\Documents and Settings\emmonsad\Desktop\Insured Form 20011644.ods'</summary> 
- <additionalInfo>
  <info>Excel completed file level validation and repair. Some parts of this workbook may have been repaired or discarded.</info> 
  </additionalInfo>
  </recoveryLog>

Open in new window


How do I get around this? Is there a way in vba to tell Excel to open and attempt to repair damaged files?
0
Comment
Question by:Animaldrummer04
2 Comments
 
LVL 85

Accepted Solution

by:
Rory Archibald earned 350 total points
ID: 39169601
Try:
Set InsuredForm = Application.Workbooks.Open(filename:=TxtInsuredForm1.Text, corruptload:=xlrepairfile)

Open in new window

0
 

Author Closing Comment

by:Animaldrummer04
ID: 39169653
Awesome! Thanks. I guess I was searching for the wrong thing.
0

Featured Post

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

Join & Write a Comment

Outlook Free & Paid Tools
This code takes an Excel list of URL’s and adds a header titled “URL List”. It then searches through all URL’s in column “A”, looking for duplicates. When a duplicate is found, it is moved to the top of the list. The duplicate URL’s are then highlig…
Learn how to create and modify your own paragraph styles in Microsoft Word. This can be helpful when wanting to make consistently referenced styles throughout a document or template.
This Micro Tutorial will demonstrate how to use longer labels with horizontal bar charts instead of the vertical column chart.

747 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

12 Experts available now in Live!

Get 1:1 Help Now