2010-02-02 8 views
4

J'expose des données à partir d'un serveur SSAS auquel les utilisateurs peuvent se connecter à partir de n'importe quel outil de leur choix (en pratique, généralement Excel 2007). Nous aimerions fournir des URL dans certaines cellules et aimerions qu'Excel les reconnaisse comme des liens hypertexte et les rende actifs et formatés en conséquence.Hyperliens automatiques dans Excel?

Lorsque nous plaçons une URL dans une cellule, elle est simplement affichée en texte brut. Si vous touchez la cellule et cliquez à nouveau sur Excel, Excel l'active en tant que lien.

Le même comportement se produit si vous sourcez les données directement à partir de SQL, ou à partir d'un fichier CSV, il n'y a rien de spécial à propos de notre utilisation de SSAS ici.

Est-ce que quelqu'un connaît un moyen de rendre ces rendus en tant que liens automatiquement? Nous n'avons aucun contrôle sur la génération de la feuille de calcul, donc les macros sont sorties.

EDIT:

Je viens de recevoir la réponse de Meff. Bon point, mais j'ai oublié de mentionner que l'endroit où nous montrons les URL est dans la cible d'une action en profondeur.

+0

Merci pour la mention - Si vous utilisez l'extraction, avez-vous regardé http://asstoredprocedures.codeplex.com/wikipage pour le nettoyage noms de colonnes? Cela vous permettrait également de mieux contrôler la sortie de l'extraction - Comme j'ai trouvé les mesures DateTime traitées comme des décimales, et bricoler avec la source de l'assemblage ASSP m'a permis de changer ça :) – Meff

Répondre

3

Je ne crois pas que ce soit possible sans une macro. Un lien hypertexte dans une cellule Excel n'a rien à voir avec la valeur de la cellule. C'est un objet séparé associé à la cellule. La manière entièrement fonctionnelle d'ajouter un lien hypertexte à une cellule est via l'élément de menu Excel Insérer -> Lien hypertexte.

Le fait qu'un lien hypertexte soit ajouté lorsqu'un utilisateur saisit une valeur telle que 'http: // ...', 'https: // ...' ou 'ftp: // ...' est simplement un raccourci d'interface graphique qui a le même effet que Insérer -> Lien hypertexte. Dans votre exemple, lorsque l'utilisateur "touche" la cellule, ils saisissent effectivement la valeur "http: // ..." dans la cellule et le raccourci de l'interface utilisateur pour Insérer -> Lien hypertexte est appelé. Le raccourci n'est cependant pas appelé lorsque des valeurs sont entrées dans des cellules par programme, soit via VBA, soit dans des fonctions Excel intégrées (par exemple, Données -> Importer des données externes). Pour cette raison, il est effectivement difficile de faire en sorte que ces importations de données arbitraires rendent des valeurs appropriées sous forme de liens hypertexte sans aucune forme de macro. Si vous pouvez convaincre vos utilisateurs d'installer d'un simple add-in Excel, vous pouvez fournir un élément de menu qui exécute le code simple suivant: -

Dim cell as Range : For Each cell in Selection.Cells // could also use Range("A1").CurrentRegion.Cells or similar 
    If Left(cell.Value, 7) = "http://" Or Left(cell.Value, 8) = "https://" Or Left(cell.Value, 6) = "ftp://" Then 
     Call cell.HyperLinks.Add(cell, cell.Value) 
    End If 
Next cell 

L'utilisateur pourrait appeler cela après l'importation/actualisation des données. Évidemment, c'est loin d'être idéal, car il faut que l'utilisateur fasse un pas de plus pour que les hyperliens soient rendus.

+0

Pourquoi ne pas utiliser la méthode ci-dessus mais l'incorporer dans un bouton général qui importe/actualise et modifie également les liens hypertexte. Au lieu de pousser le bouton d'actualisation traditionnel, ils utilisent simplement le nouveau que vous fournissez et c'est toujours une étape. – guitarthrower

+0

oui, cela pourrait être fait aussi, ce n'est pas une mauvaise idée. le seul inconvénient est que le code devrait être plus compliqué et il faudrait persuader les utilisateurs d'utiliser une méthode alternative d'approvisionnement des données à celle qu'ils ont actuellement. Cependant, ce dernier point peut ou peut ne pas être plus facile que de les persuader d'appuyer sur le bouton supplémentaire après l'importation pour activer les hyperliens. –

+0

Merci les gars. "Pas possible" est une bonne réponse, et c'est ce à quoi je m'attendais. Mais maintenant, c'est ici pour tout le monde à Google. – NeedHack

0

Une Un moyen facile de mettre à jour manuellement de nombreux liens consiste à utiliser la cellule pour créer un lien hypertexte, puis à copier uniquement la valeur des liens vers les cellules déjà formatées. C'est-à-dire, dans votre destination, créez une cellule de lien hypertexte active et copiez-la dans la plage. Vérifiez que les cellules sont maintenant actives en tant que liens html. Ensuite, prenez vos liens hypertexte "texte", et collez les nouveaux liens AS VALEURS au-dessus de ces cellules, et ils devraient activer.

+0

Cela ne fonctionne pas comme prévu - s'il vous plaît ignorer (ou mettre à jour si vous comprendre comment faire ce travail!) –

1

sans VBA .... J'ai trouvé la façon la plus simple de faire ceci est simplement d'enregistrer une macro & appliquer la touche de raccourci (comme Ctrl -L) à la macro. Les utilisateurs finaux savent que s'ils veulent activer les "liens", ils cliquent sur CTRL-L. Ma macro a été enregistrée comme .....mettez en surbrillance la colonne, cliquez sur les données, texte sur les colonnes, suivant, suivant, suivant, terminer) puis cliquez sur la cellule en haut à gauche a1 juste pour faire bonne mesure. J'ai dû enregistrer le fichier en tant que fichier xlsm (je ne sais pas pourquoi) en 2013