2010-11-09 5 views
2

J'utilise Office Excel VSTO. J'ai une information de référence de cellule d'une cellule dans mon classeur. disons, Feuille1! $ A $ 5. Je veux obtenir l'information dans cette cellule et son type. Est-ce possible dans VSTO par n'importe quel moyen?
Je brise maintenant cette référence de cellule allant à la feuille et la cellule obtient les valeurs. Je suppose que des moyens plus faciles sont possibles.Valeur dans une cellule de CellReference dans C#

Répondre

1

Je ne sais pas si c'est ce que vous recherchez, mais ce qui suit vous donne un accès direct à la cellule:

 var range = (Range)Globals.ThisAddIn.Application.Range["Sheet1!$a$5"]; 
    var cellContent = range.Value2; 
0

Ok je pense avoir votre question compris.
Vous souhaitez utiliser VSTO pour remplacer un lien de classeur que vous utilisez pour mettre à jour une valeur dans votre classeur actuel.
Pour moi, les indices sont ....
1. veulent obtenir les informations dans cette cellule et son type
2. Utilisez VSTO pour le faire
3. romps maintenant cette référence cellulaire
BTW si mon l'hypothèse ci-dessus est correcte, alors s'il vous plaît modifier votre question pour avoir plus de sens pour les futurs lecteurs.

code

Exemple

//get workbook link cell ref 
var range = (Range)Globals.ThisAddIn.Application.Range["Sheet1!$a$5"]; 
//determine type 
// if straight linking a value this step is unnecessary unless using the type info to format the cell 
// or because you are doing a transformation or aggregation on the data prior to putting it somewhere. 
// if needed... do some try/catchs on casting it to oledate, bool, double, string in that order. 
// get value 
var value = range.Value2; 
// update "active" sheet 
var sht = (Excel.WorkSheet)Globals.ThisAddIn.Application.ActiveSheet; 
sht.Range["A1"].Value2 = value; 
// don't forget to call FinalReleaseCOMObject and GC.WaitForPendingFinalizers/GC.Collect block!! 

Notez également que oui, vous "casser la référence de cellule" si vous utilisez le code INSTEAD. Notez que vous pouvez conserver le lien du classeur, mais cela ne sert à rien d'utiliser l'approche par code. Mon conseil serait d'utiliser le code général car il est plus flexible, mais profite des liens quand vous voulez de la vitesse (de configuration) et que les données ne nécessitent pas plus qu'une manipulation de base (SUM, IF, opérateurs mathématiques de base).

Questions connexes