2009-07-21 17 views
4

j'ai un classeur Excel avec un certain nombre de caractéristiques:Copier des feuilles de calcul Excel, les macros et les graphiques d'un classeur à un autre, le déplacement des liens vers le nouveau classeur

  • Une feuille principale orientée utilisateur
  • One feuille de résumé basée sur les données de la feuille face à l'utilisateur
  • Un certain nombre de graphiques basés sur les données de la feuille face à l'utilisateur (comme dans, le type de graphiques avec un onglet distinct pour eux, plutôt que des objets dans une feuille de calcul - je suis pas sûr si elles ont un nom spécial ou des propriétés spéciales)
  • Une série de 'backgrou feuilles de travail nd » qui calculent les valeurs de la feuille faisant face à l'utilisateur
  • Une macro pour permettre à l'utilisateur de trier la feuille d'utilisateur par une colonne qu'ils souhaitent, qui est référencé dans le cas Worksheet_SelectionChange de la feuille de revêtement utilisateur

Cependant, pour la distribution je voudrais éliminer les feuilles pour la simplicité (et la taille du fichier - l'ensemble de la requête de données est inclus sur l'une des feuilles). J'ai encore besoin de calculer les valeurs pour la feuille face à l'utilisateur, mais c'est seulement fait une fois par jeu de données, donc cela peut être heureusement copié comme formatage puis valeurs. Le problème, cependant, est de transférer la feuille, les graphiques et les macros dépendants à un nouveau classeur de sorte qu'au lieu de référencer l'ancien classeur, ils référencent les nouvelles versions de la feuille. Idéalement, je voudrais le faire avec VBA ou quelque chose, mais mes recherches sur Google jusqu'à présent ne semblent pas avoir beaucoup d'importance.

Est-ce que quelqu'un sait comment faire cela?

Répondre

3

Je ne suis pas sûr que je comprends entièrement votre question, mais ce que je pense que vous voulez faire est de créer une nouvelle version de votre classeur, avec moins de feuilles de calcul dedans?

Pour faire en VBA, cet extrait de code est un bon endroit pour commencer:

Sub Macro1() 
    ActiveWorkbook.SaveAs Filename:= _ 
     [your path here]\Book2.xls", FileFormat:=xlNormal, _ 

    Sheets("Sheet2").Select 
    ActiveWindow.SelectedSheets.Delete 
End Sub 

Création d'une copie de l'ensemble du classeur, puis de supprimer ce que vous n'avez pas besoin fera en sorte que les liens ne référencez pas l'ancien classeur. Une fois que vous avez créé le nouveau classeur, avec des liens intacts, il est alors assez facile de supprimer toutes les choses (calculs, etc.) dont vous n'avez pas besoin.