?
Solved

How to open .ods spreadsheet with VBA?

Posted on 2013-05-15
2
Medium Priority
?
2,533 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 1400 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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

After seeing numerous questions for Dynamic Data Validation I notice that most have used Visual Basic to solve the problem. This suggestion is purely formula based and can be used in multiple rows.
Windows Explorer lets you open cabinet (cab) files like any other folder. In VBA you can easily handle normal files and folders, but opening and indeed creating cabinet files takes a lot more - and that's you'll find here.
This Micro Tutorial will demonstrate how to use longer labels with horizontal bar charts instead of the vertical column chart.
This Micro Tutorial will demonstrate how to create pivot charts out of a data set. I also added a drop-down menu which allows to choose from different categories in the data set and the chart will automatically update.

864 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