8
votes

Dépassant la limite maximale de caractère dans Excel

Comment utiliser plus de 255 caractères dans la fonction de concaténate d'Excel? J'utilise également la fonction de concaténate dans la fonction d'hyperlien dans Excel. Un exemple ressemble à ceci: xxx

mise à jour: ce n'est pas un problème avec la fonction de concaténate, mais un problème avec le premier paramètre de la fonction d'hyperlien. Utilisation d'une chaîne de plus de 255 caractères directement / indirectement (ex: = lien hypertexte (k204, "link") où K204 contient la liaison de longueur de 256 caractères) échoue à la fonction de lien hypertexte

Je me rendra compte que je peux utiliser un Enregistrement de l'URL, mais je fais cela pour beaucoup de liens qui nécessiteraient beaucoup d'utilisation manuelle du raccourpateur d'URL.


1 commentaires

Quelle version d'Excel avez-vous?


12 Réponses :


0
votes

au lieu d'écrire xxx pré>

mettre toto code> dans la cellule Z1 (par exemple) et Tata ​​code> dans la cellule Z2 et écrivez P >

=CONCATENATE(Z1;Z2)


5 commentaires

Au lieu d'utiliser des chaînes dans la fonction de concaténate, placez les cordes dans les cellules et concaténez les cellules.


@ GôTô: Vous voudrez peut-être mettre à jour votre réponse pour inclure ce point, et peut-être inclure un exemple simple si possible.


Oui, j'ai essayé cela (mettre l'URL de longueur de 256 caractères dans Z1). Il échoue toujours


La taille de la cellule n'est-elle pas limitée à 255 caractères? Avez-vous essayé de le diviser dans plusieurs cellules?


@ GôTô: Non, la taille de la cellule est limitée à environ 32 000 caractères.



2
votes

J'ai Excel 2007 et j'ai essayé de faire une cellule de 300 caractères dans A1, et une autre avec 300 caractères différents de B1.

Puis j'ai fait c1 = concaténate (A1, B1) .

Je peux voir tous les caractères des deux cellules. Rien n'est manquant ou tronqué et aucune erreur n'a été reçue. Ça me va bien.

Qu'est-ce qui vous fait penser que le concaténate échoue? Avez-vous du mal à voir vos résultats? Si votre cellule contient plus de 1 024 caractères, seuls 1 024 sont affichés dans la cellule. Cependant, ils sont toujours là et si vous les copiez et les collez tous les caractères seront copiés.

EDIT: Maintenant que vous avez modifié votre question, je réalise que le problème est avec hyperlink et non concaténate .

Le seul moyen de contourner la limite de 255 caractères de hyperlink formule d'Excel consiste à copier un lien hypertexte de Word et en coller dans une cellule dans Excel. Ensuite, cela peut être super long. Je sais que c'est un processus manuel déraisonnable si vous avez beaucoup de liens, mais il semble que le seul moyen de l'obtenir dans une feuille de calcul Excel puis de le faire être un hyperlien que vous pouvez cliquer sur et être redirigé. Si vous n'en avez pas besoin pour agir comme un lien hypertexte, je vous suggérerais de réécrire vos requêtes pour renvoyer l'hyperlien comme son propre champ de texte et tout ira bien.


2 commentaires

J'ai essayé de coller l'URL vraiment longue dans une cellule (ex: k2), puis en utilisant la formule = hyperlien (K2, "link"). Cela n'a pas fonctionné pour moi, a-t-il fonctionné pour vous?


@sysker - Lisez mon édition et vous verrez que la partie de liens hypertexte n'a pas fonctionné bien que le concaténat ait fait. J'ai posté une suggestion de contourner le problème du lien hypertexte, mais je sais que c'est probablement trop de travail à mettre en œuvre, mais au moins cela fonctionne.




4
votes

Mise à jour: à cause de Karls commentaire, j'ai réexaminé ma réponse a découvert, que Excel 2007 ne semble pas autoriser les fonctions définies par l'utilisateur à définir plus de liens hypertexte (assez judicieusement, voir mon propre commentaire dans le code). Donc, le code d'origine (ci-dessous) ne fonctionne pas dans des versions plus récentes d'Excel (je n'ai pas testé Excel 2010 mais je suppose que le résultat est identique). Pour des raisons historiques, je ne supprime pas l'ancien code (un éditeur pourrait penser autrement - N'hésitez pas à éditer / supprimer en conséquence).

Alors, quel reste-t-il de définir de longs hyperliens de manière programmative, par exemple P>

=myHyperlink(A1,B1)
=myHyperlink(A1,B1,"TextToDisplay", "ScreenTip")


6 commentaires

Comment implémentez-vous-en-un dans Excel, non pas celui-ci, vos instructions sont à l'abus "brutal". Merci!


Ce deuxième bloc de code de la solution proposée ne fonctionne pas dans MS Excel 2010. #Value est dans la cellule A1


Oui, tu as raison. Comme je l'ai déjà indiqué dans ma réponse mise à jour, l'ancien code (c'est-à-dire le deuxième code) ne fonctionne plus dans Excel 2010. J'ai ajouté des lignes supplémentaires pour que cela soit bien plus clair. Je ne sais pas, si je devais supprimer complètement l'ancien code, puisque c'était une fois la réponse acceptée.


Merci pour le code VBA. Je suis confronté au problème où la fonction d'hyperliens est utilisée pour créer un mailto avec le sujet et le corps. La longueur dépasse le maximum d'hyperliens. Comment utiliser le code VBA pour appliquer automatiquement pour tous les éléments de une colonne spécifique? J'ai tous les hyperliens de la colonne N, par exemple. De plus, mon courrier appelle des cellules comme la feuille1! A1 et feuille2! A1. Comment puis-je appliquer ceci dans la partie "LonghyPerLink"? Est-ce là où j'utiliserais concaténate? Merci beaucoup.


@ user89073: Je ne pense pas que vous puissiez utiliser les fonctions définies par l'utilisateur (comme dans ma première réponse ou dans d'autres suggestions). Concaténate d'autre part ne fonctionnera pas car la limite de la caracter est dans la fonction de liens hypertexte (c.-à-d .: = hyperlien (répéter ("A", 256) -> erreur). Donc, vous devez définir le lien hypertexte avec un programme qui se présente à un programme hyperlien (pas une fonction de lien hypertexte) comme dans mon premier code d'exemple. Cette solution n'est pas flexible d'une fonctionnalité Excel standard (par exemple, la copie d'une ligne avec un nouveau contenu n'est pas automatiquement renoncée, etc.). Maintenant quoi faire: Dépend de votre cas d'utilisation. Peut-être utiliser un autre outil ...


Danke @andreasj. Mon cas d'utilisation est assez simple et j'ai au maximum 50 lignes, donc je pense que votre méthode F2 pourrait être un moyen. Ou je pourrais utiliser Google Feuilles car il a une limite de 50000 caractères.




1
votes

Voici quelques VBA qui utilise Bitly.com pour raccourcir une URL. Il est basé sur le Documentation des API Bitly .

  1. Créez un compte gratuit sur Bitly . Li>
  2. Adresse e-mail valide avec Bitly . Li>
  3. Obtenez un jeton d'accès à partir de Bitly . Li>
  4. substituer le jeton d'accès dans le code VBA ci-dessous où il est indiqué My_Token. Li>
  5. Copiez et collez le code dans VBA de Excel. LI>
  6. dans une cellule, écrivez ce qui suit '= hyperlien (getturl ("une URL vraiment longue")) "sans marque de devis unique". Remarque: au lieu de passer une chaîne à Geturl (), transmettez une référence à une cellule qui a une URL y a-t-elle en tant que texte. LI> ol>
    Public Function GetURL(longUrl As String) As String
      Dim xml As Object
    
      longUrl = URLEncode(longUrl)
      Set xml = CreateObject("MSXML2.XMLHTTP.6.0")
    
      xml.Open "GET", "https://api-ssl.bitly.com/v3/shorten?format=xml&access_token=MY_TOKEN=" & longUrl, False
      xml.Send
    
      GetURL = xml.responsetext
    
      head = InStr(GetURL, "<url>") + 5
      tail = InStr(GetURL, "</url>")
    
      GetURL = Mid(GetURL, head, tail - head)
    
    End Function
    
    Function URLEncode(ByVal Text As String) As String
      Dim i As Integer
      Dim acode As Integer
      Dim char As String
      URLEncode = Text
      For i = Len(URLEncode) To 1 Step -1
        acode = Asc(Mid$(URLEncode, i, 1))
        Select Case acode
          Case 48 To 57, 65 To 90, 97 To 122
            ' don't touch alphanumeric chars
          Case 32
            ' replace space with "+"
            Mid$(URLEncode, i, 1) = "+"
          Case Else
            ' replace punctuation chars with "%hex"
            URLEncode = Left$(URLEncode, i - 1) & "%" & Hex$(acode) & Mid$(URLEncode, i + 1)
        End Select
      Next
    End Function
    


0 commentaires

0
votes

La fonction de liens hypertexte a une limite difficile qui ne peut pas être surestimée. J'ai eu un problème similaire et j'ai simplement importé la feuille Excel en Open Office Calc et Voila - tout a fonctionné instantanément et que le lien hypertexte qui devait précédemment peut être maintenant aussi longtemps que je le souhaite.


0 commentaires

1
votes

Dunno Si ma réponse est toujours utile, mais j'avais le même problème il y a quelques jours, le meilleur moyen de faire un lien hypertexte qui dépasse une limite de chargement de 255 caractères est de la scinder, avec concaténate ( ) code>, et utilisez la cellule avec concaténate () code> fonction dans VBA code> strong>. P>

Sub insertVeryLongHyperlink()

    Dim curCell As Range
    Dim longHyperlink As String

    Set curCell = Range("A7")   ' or use any cell-reference
    longHyperlink = [A5]

    curCell.Hyperlinks.Add Anchor:=curCell, _
                    Address:=longHyperlink, _
                    SubAddress:="", _
                    ScreenTip:=" - Click here to follow the hyperlink", _
                    TextToDisplay:="Click Here"

    End Sub


0 commentaires

0
votes

Vous pouvez utiliser la routine VBA Shell () pour exécuter un navigateur et transmettre l'URL sur la ligne de commande passée via la coque (). Ainsi, l'URL peut être n'importe quelle longueur supportée par le mécanisme de coque.

En outre, vous pouvez obtenir cette URL de n'importe quelle valeur de cellule en faisant double-cliquer sur cette cellule. Cette valeur peut être construite à partir de nombreuses cellules via un seul appel de la fonction Concaténate ()! C'est vrai: juste un seul appel. Le concaténate () prendra un grand nombre de paramètres et créera une chaîne bien à plus de 255 caractères. Vous n'avez pas besoin de rejoindre Travailler de nombreuses concaténations séparées ou utilisez des charges de cellules «génératrices». On fera!

La macro doit être créée en ouvrant l'option de code de vue lorsque vous cliquez avec le bouton droit de la souris sur l'onglet au bas de la feuille de calcul. Ensuite, écrivez le bit de code phénoménal et indolore suivant: xxx

notez que "navigateur" est une cellule nommée qui doit contenir le chemin non noté de votre navigateur, que ce soit. IE, Opera, Mozilla ou Chrome. Vous devez nommer la cellule vous-même ou modifier la macro pour avoir une référence cellulaire dure comme "A2". Et bien sûr, cette valeur de cellule doit être un chemin de navigateur valide!

Une fois que vous avez tout cela en place, vous pouvez double-cliquer sur n'importe quelle cellule qui a une valeur commençant par le texte "http: // "Et Excel ouvrira le navigateur avec cette valeur totale, peu importe combien de temps c'est. Tout ce que vous avez besoin est de construire votre chaîne dans cette cellule et peut-être formater la couleur de la couleur / la police pour le rendre évident qu'il s'agit d'une cellule de lien hypertexte à double-cliquer. Un indice textuel à proximité peut également être en ordre!

Incidemment, une alternative à la ligne de coquille () dans la macro est la suivante: xxx tandis que cela va Les URL de processus ont également plus de 255 caractères, j'ai constaté que cette fonction de suivi () provoque l'envoi de l'URL deux fois. Une fois par la fonction Excel elle-même (probablement pour le tester), puis à nouveau par le navigateur par défaut que Excel s'ouvre! Cela peut ne pas être souhaitable (et n'était pas dans mon cas). C'est pourquoi j'ai fini par utiliser la fonction shell () à la place.


0 commentaires

0
votes

Vous pouvez créer un hyperlien dans Microsoft Word, puis le copier sur Excel. Pour une raison quelconque, ces éléments d'hyperliens ne sont pas limités par la limite de 255 caractères, mais vous ne pourrez pas utiliser la fonction lien hypertexte () .

Source


0 commentaires

0
votes

En supposant que vous n'ayez pas de très nombreuses URL d'hypertexte> 255 caractères, utilisez simplement la fonction de liaison. La fonction de liaison est disponible dans le menu contextuel. Pas besoin d'aller à Word ou à une autre application Msoffice. Je sais que cela fonctionne comme j'ai une URL de 281 caractères et que l'on travaille. Je n'ai que deux URL très longues dans ma feuille, donc lorsque / s'ils ont besoin de mettre à jour, je note que je dois être fait dans la cellule cible par rapport à la feuille d'adresses d'hyperlien.


1 commentaires

Bienvenue à cela. Vous n'avez peut-être pas remarqué, mais cette question a été posée il y a 10 ans et que l'auteur d'origine a peut-être trouvé une réponse d'ici ou même d'intérêt perdu. Ces questions se présentent souvent dans les résultats de la recherche, alors merci d'avoir aidé.



0
votes

Travailler de Andreas J'S Réponse , vous pouvez utiliser l'extrait de code VBA ci-dessous pour générer une colonne de liens hypertextes d'un Colonne d'uris de texte plain. En supposant que la colonne A contienne les URI de texte brut et la colonne B contienne le texte de la liaison souhaité, le code suivant bouclée à travers chaque ligne de la plage ("A: C") xxx


0 commentaires