web-dev-qa-db-fra.com

HRESULT: 0x800A03EC sur Worksheet.range

Je reçois HRESULT: 0x800A03EC sur la méthode Worksheet.range. Le nombre de lignes est supérieur à 70K. Office 2007.

Code:

Microsoft.Office.Interop.Excel.Range neededRange
    = currentWS.Range[cell.Cells[1, 1], cell.Cells[nRowCount, nColumnCount]];

Ici, mon nombre de lignes est supérieur à 65530. Pause sur cette fonction. J'ai observé qu'il ne casse que lorsque le nombre de lignes dépasse 65530.

20
Cannon

Ce problème se produit si vous utilisez une feuille compatible avec les versions antérieures (un fichier .xls) au lieu d'un fichier .xlsx

Pour permettre aux feuilles d'être ouvertes dans la version pré-office 2007, elles ne peuvent pas contenir plus de 65 000 lignes. Vous pouvez vérifier le nombre de lignes dans votre feuille en utilisant ctrl + flèche vers le bas jusqu'à ce que vous atteigniez le bas. Si vous essayez d’obtenir une plage supérieure à ce nombre de lignes, cela créera une erreur. 

24
Eddy

Nous recevions la même chose. L'exception était

Stacktrace: at Microsoft.Office.Interop.Excel._Workbook.SaveAs (Nom de fichier de l'objet, Objet FileFormat, Mot de passe de l'objet, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMold, Object Add to Add VisualLayout, Object Local) `

avec une exception interne de

Exception de HRESULT: 0x800A03EC 2012-11-01 10: 37: 59`

Nous avons pu résoudre le problème avec des informations provenant de ce message , que je cite ici pour plus de commodité ...

  1. Connectez-vous au serveur en tant qu'administrateur.
  2. Allez dans "Démarrer" -> "Exécuter" et entrez "taskmgr"
  3. Accédez à l'onglet Processus du gestionnaire de tâches et cochez la case "Afficher les processus de tous les utilisateurs ".
  4. S'il y a des entrées "Excel.exe" dans la liste, faites un clic droit sur l'entrée Et sélectionnez "Terminer le processus".
  5. Fermez le gestionnaire de tâches.
  6. Allez dans "Démarrer" -> "Exécuter" et entrez "services.msc"
  7. Arrêtez le service automatisant Excel s'il est en cours d'exécution.
  8. Allez dans "Démarrer" -> "Exécuter" et entrez "dcomcnfg"
  9. Cela fera apparaître la fenêtre des services de composants, développez "Console Racine" -> "Ordinateurs" -> "Configuration DCOM"
  10. Trouvez "Microsoft Excel Application" dans la liste des composants.
  11. Faites un clic droit sur l'entrée et sélectionnez "Propriétés"
  12. Allez sur l'onglet "Identité" dans la boîte de dialogue des propriétés.
  13. Sélectionnez "L'utilisateur interactif".
  14. Cliquez sur le bouton "OK".
  15. Basculer vers la console de services
  16. Démarrer le service en automatisant Excel
  17. Testez votre application à nouveau.
19
John Fitzpatrick

J'ai rencontré ce problème.

J'ai découvert quelque part dans mon code que je lui demandais de compter à partir de 0 (comme vous le feriez dans un code C #).

Le décompte Excel commence à 1.

14
Cald

En regardant les différentes réponses ci-dessus et en me basant sur ma propre expérience récente (ce code d'erreur a quelque chose de totalement indépendant - réglage Application.Calculation), je conclus que le même code d'erreur est utilisé pour indiquer plusieurs problèmes non liés. Alors, @Garreh, vous devriez probablement poser une nouvelle question (personne ne pourra vous aider en se basant uniquement sur le code d'erreur). J'ai vu la même chose fonctionner avec Word interop à partir de C #, où la même HRESULT semble être utilisée pour presque tous les types d'erreur. Je n'ai jamais trouvé de documentation Microsoft satisfaisante sur la signification des codes.

12
Hugh W

Cela peut également être causé si vous n'avez pas d'espace sur la partition sur laquelle vous enregistrez. 

J'ai vérifié ma HD et trouvé que c'était maxi. Déplacer des fichiers inutiles vers une autre partition a résolu mon problème. 

5
Patrickmoe

Simplement, le fichier Excel est corrompu . La meilleure solution est de changer/réparer le fichier (faire une copie du fichier existant et le renommer)

3
Sonio

Cela ne répond pas directement à la question, mais je recevais cette erreur lors de l'ouverture d'un fichier xlsx. Le problème était que j'utilisais des barres obliques dans mon chemin de fichier. Voir aussi https://stackoverflow.com/a/24635904/5932003 . Il fonctionnait dans les versions précédentes d'Excel, mais pas avec la version 1711 (version 8730.2127).

J'ai pu diagnostiquer le problème en utilisant IDispatch-> Invoke (..., EXCEPINFO, ...). L'objet EXCEPINFO contenait une description utile de ce qui n'allait pas. J'étais en pays C++, mais je soupçonne qu'un code C # similaire à cet article SO fera l'affaire: Packaging IDispatch Invoke avec des paramètres en C # (avec DISPPARAMS) .

1
kostasvs

Juste pour info, j'ai eu l'erreur d'essayer d'appliquer un style de ligne ....

wSheet.Rows(y).Style = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
1
htm11h

Je ne comprends pas le problème. Mais voici la chose qui a résolu mon problème. 

Accédez à Options Excel> Enregistrer> Enregistrer les fichiers dans ce format> Sélectionnez "Classeur Excel (*. Xlsx)". Auparavant, mes WorkBooks s’ouvraient en mode [Compatibuility Mode]. Ils s’ouvrent maintenant en mode normal. La fonction Range fonctionne bien avec ça. 

1
Cannon

J'ai eu une erreur avec le code exact lorsque j'ai essayé d'attribuer un tableau de cellules à range.Value. Dans mon cas, c’était le problème du mauvais format de données. Le format de données de la cellule a été défini sur DATE, mais l'utilisateur a commis une erreur et, au lieu de "20.02.2013", a saisi la date "20.02.0213". L'objet COM d'Excel a refusé de prendre l'année '0213' et a lancé une exception avec cette erreur. 

0
Evgeny Sobolev

Je suis d'accord avec Hugh W post "Je conclus que le même code d'erreur est utilisé pour indiquer plusieurs problèmes non liés"

Autres publications n'ont pas mentionné que cette erreur se produit fréquemment si la feuille de calcul est verrouillée. Même si je n'ai pas testé tous les scénarios, il semble que tout ce que vous ne pouvez pas faire dans Excel lorsqu'une feuille de calcul est verrouillée génère cette erreur si vous essayez de le faire via VSTO/Com alors que la feuille est verrouillée. PAR EXEMPLE. Modification de n'importe quel artefact de style (police, taille, couleur, soulignement), modification de la validation Excel, modification de la largeur des colonnes, de la hauteur des lignes et des formules 

0
JimbobTheSailor

J'ai eu cette erreur parce que j'ai essayé de renommer une feuille avec trop de caractères

0
Blobby

Ne pouvant pas répondre à/approuver cette réponse , publiant ici:

En effet, le format des plages source/destination lors du déplacement de données d'une plage à une autre peut également provoquer cette erreur.

Dans mon cas, la plage que je voulais copier contenait une colonne formatée en date et la cellule contenait une cellule avec une valeur de date non valide (elle n'était même pas formatée en raison de sa valeur, qui était un entier négatif). L’opération de copie entre les deux plages s’arrêtait donc à la cellule en question, ce qui produisait le message d’erreur même décrit ici.

La solution dans mon cas a été d'utiliser Range.Value2 au lieu de Range.Value, ce qui a amené Excel à contourner le formatage de la cellule sous forme de date (plus de détails ici ). Cependant, cela affichera vos colonnes de date et d'heure sous forme d'entiers et de décimales. Toutefois, vous pourrez modifier les formats au format souhaité si vous savez où s'attendre des valeurs de date et d'heure en définissant leur propriété Range/Column/Cell.NumberFormat en conséquence.

0

J'ai résolu ce problème en utilisant le code ci-dessous. Veuillez ne pas utiliser d'autres paramètres dans ces fonctions.

mWorkBook = xlApp.Workbooks.Open(FilePath)

mWorkBook.Save();

RÉSOLU

0
Pankaj Garg

EDIT: CECI IS MIEUX !!! Vous n'avez pas besoin de cette ancienne fonction, désolée. Il suffit de faire comme suit:

Microsoft.Office.Interop.Excel.Range neededRange = currentWS.Range["A1", ((Microsoft.Office.Interop.Excel.Range)currentWS.Cells[nRowCount, nColumnCount])];

Cela devrait fonctionner comme un charme. Et pour référence future, insérez le code pertinent que vous utilisez dans votre question. Ne faites pas que les gens le demandent dans les commentaires. J'imagine que c'est pour ça que tu as été voté.

0
k.schroeder31

J'ai eu le même code d'erreur lors de l'exécution de l'instruction suivante:

sheet.QueryTables.Add("TEXT" & Path.GetFullPath(fileName), "1:1", Type.Missing)

La raison en était le point-virgule (;) manquant après "TEXT". 

Voici le bon:

sheet.QueryTables.Add("TEXT;" & Path.GetFullPath(fileName), "1:1", Type.Missing)
0
Beppe Serra

J'ai eu cette exception parce que j'ai tapé:

ws.get_Range("K:K").EntireColumn.AutoFit();
ws.get_Range("N:N").EntireColumn.AutoFit();
ws.get_Range("0:0").EntireColumn.AutoFit();

Voir une erreur? Astuce: Excel accepte l’indexation à partir de 1, mais pas à partir de 0 comme C #.

0
Pedro

Ce type d'erreur se produit également lorsque vous essayez d'ouvrir votre feuille Excel et s'il affiche un message d'erreur. vous pouvez simplement dire quand votre fichier Excel est corrompu.

0
Arun

J'ai reçu ce code d'erreur 0x800A03EC lors de la tentative d'enregistrement d'un fichier Excel créé dans mon application .Net dans VS 2017. J'ai modifié la propriété d'objet Excel.Application Visible = True et je l'ai laissé s'exécuter jusqu'au point d'échec. J'ai essayé de terminer les étapes manuellement dans Excel, puis j'ai découvert que je ne pouvais pas enregistrer le fichier en raison d'autorisations de dossier manquantes. J'ai ajouté l'autorisation d'écriture au dossier et l'erreur a disparu. 

0
MarkF

J'ai également rencontré le même problème lorsque je développais une application qui exporte le contenu du projet dans un fichier Excel.

Je ne pouvais pas trouver la résolution du problème dans les forums, puis je vérifie la capacité maximale d'Excel et trouve le lien ci-dessous qui indique 

"Taille de la feuille de calcul 1 048 576 lignes sur 16 384 colonnes" et c’était le problème dans mon cas, j’exportais plus que cette ligne. Voir le lien ci-dessous pour plus de détails

http://answers.Microsoft.com/en-us/office/forum/office_2013_release-Excel/with-Excel-2013how-many-rows-will-this-contain/271264fb-3ab8-4c5b-aa0d-7095c5ac6108

Cordialement Prashant Neve

0
PrashantNeve