2010-06-17 8 views
2

J'ai des difficultés à ouvrir une EXCEL 2007 dans Delphi 7 Cela fonctionne pour Office 2003 et les versions précédentes, mais les gens merveilleux de Microsoft ont envoyé une mise à jour ou quelque chose et l'application Delphi est tombée mois.Delphi 7 et Excel 2007 Erreur de fichier ouvert

oE := GetActiveOleObject('Excel.Application'); 
    oE.Workbooks.Open(Filename:=sFilename, UpdateLinks:=false, ReadOnly:=true); //Error 

je reçois l'erreur suivante:

'c:\Temp\Book1.xls' could not be found. Check the spelling of the file name, and verify that the file location is correct.'#$A#$A'If you are trying to open the file from your list of most recently used files, make sure that the file has not been renamed, moved, or deleted'

Pourtant, si je lance la même commande en VBA il n'y a pas de problème.

+0

Quel est le script VBA que vous utilisez pour ouvrir le fichier? –

+0

Dans Macro Excel: Application.Workbooks.Open "C: \ Temp \ Book1.xls", false, true – Traci

Répondre

2

Je sais que cela semble stupide, mais avez-vous confirmé manuellement que le fichier existe à cet emplacement?

Quel est exactement le contenu de sFileName, est-ce le chemin complet ou seulement le nom de fichier? Quand c'est seulement le nom de fichier, peut-être Excel ne peut pas le trouver parce que son répertoire de travail actuel est quelque chose d'autre. Si vous ne faites que passer le nom du fichier, essayez plutôt le chemin complet.

+0

Oui, j'ai copié la valeur dans la fonction VBA équivilent et le fichier a ouvert comme prévu le chemin complet et le nom de fichier – Traci

+0

@Traci : Que se passe-t-il lorsque vous placez Books1.xls dans C: \ et que vous modifiez votre appel à 'oE.Workbooks.Open (Nom de fichier: = 'c: \ Books1.xls', UpdateLinks: = false, ReadOnly: = true);' ? –

+0

D'une manière ou d'une autre, le nom de fichier a été précédé d'un espace, je l'ai coupé et tout est OK – Traci

1

le code complet pour les badauds:

uses ComObj; .. 

procdure startExcel; 
var 
    oE:Variant; 
begin 
    try 
    oE := GetActiveOleObject('Excel.Application'); 
    except 
    oE := CreateOleObject('Excel.Application'); 
    end; 
    oE.Workbooks.Open(filename, false, false); 
    oE.Visible := True; 
end; 

source

Questions connexes