2017-07-28 1 views
1

Je suis en train de créer une sorte d'interface utilisateur dans Excel et j'ai besoin de trouver une solution simple pour copier une feuille de calcul d'un classeur sélectionné dans un classeur spécifique. Jusqu'à présent, j'ai écrit le code ci-dessous, mais je ne sais pas comment référencer le classeur sélectionné dans le code. Les utilisateurs auront besoin de copier la feuille de calcul (elle s'appelle Storyboard et le nom ne change jamais) de nombreux classeurs différents (avec des noms différents) au classeur avec le VBA. En ce moment un autre classeur peut être sélectionné, mais je ne peux pas me référer à ce classeur dans les codes.Référence à un classeur sélectionné avec filedialog dans vba

En outre, il existe certaines macros sur les classeurs que les utilisateurs vont sélectionner, comment puis-je les désactiver après l'ouverture?

Voici le code jusqu'à présent;

Sub Storyboard_Ekle() 
    Dim DosyaSec As Office.FileDialog 

    Set DosyaSec = Application.FileDialog(msoFileDialogFilePicker) 

    With DosyaSec 

     .AllowMultiSelect = False 
     .Title = "Lütfen yeni eklenecek Storyboard dosyasini seçiniz." 
     .Filters.Clear 
     .Filters.Add "Excel Macro-Enabled Workbook", "*.xlsm" 
     .Filters.Add "Excel Workbook", "*.xlsx" 
     .Filters.Add "All Files", "*.*" 

     If .Show = True Then 
     YeniSB = .SelectedItems(1) 
     End If 

Dim YeniStoryBoard As Workbook 
Dim AnaDosya As Workbook 
Dim YeniStoryBoard_Sheet As Worksheet 
Dim AnaDosya_Sheet As Worksheet 

Application.ScreenUpdating = False 

Set AnaDosya = ThisWorkbook 
Application.EnableEvents = False 
Set YeniStoryBoard = Workbooks.Open(YeniSB) 

YeniStoryBoard.Worksheets("Storyboard").Copy After:=ThisWorkbook.Worksheets("Kunye") 
YeniStoryBoard.Close 

Set YeniStoryBoard_isim = Sheets("Storyboard") 
YeniStoryBoard_isim.Name = "StoryboardXXYYZZ" 
Application.EnableEvents = True 

    End With 
End Sub 

Merci beaucoup. :)

Répondre

1

Je pense que vous devriez utiliser cette solution pour les désactiver après l'ouverture

Application.EnableEvents = False   'disable Events 
Set YeniStoryBoard = Workbooks.Open(YeniSB) 'open workbook 
Application.EnableEvents = True    'enable Events 

Pour assurer l'événement disable du classeur, vous pouvez utiliser des instructions supplémentaires

YeniStoryBoard.Application.EnableEvents = False 
'Do something 
YeniStoryBoard.Application.EnableEvents = True 
YeniStoryBoard.Close 
+0

Merci beaucoup. Cette fois excel m'a donné cette erreur: "Chemin non trouvé: '\ VBA813.tmp' – Bildircin13

+0

@ Bildircin13 Où vous mettez du nouveau code? Utilisez votre code, je peux fonctionner normalement – hung34k

+0

Ce code est dans un nouveau module, mais il me donne le chemin erreur malheureusement – Bildircin13