Solved

How to open .ods spreadsheet with VBA?

Posted on 2013-05-15
2
2,098 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

Back Up Your Microsoft Windows Server®

Back up all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

Question has a verified solution.

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

This article will show you how to use shortcut menus in the Access run-time environment.
Outlook Free & Paid Tools
This Micro Tutorial demonstrates how to create Excel charts: column, area, line, bar, and scatter charts. Formatting tips are provided as well.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

773 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