VBA faites glisser et déposez le fichier de formulaire utilisateur pour obtenir le nom de fichier et le chemin d'accès
J'aimerais apprendre un nouveau truc, mais je ne suis pas 100% sûr que c'est possible en VBA, mais je pensais que je voudrais vérifier avec les gourous ici.
Ce que je voudrais faire est de rejeter la bonne vieille getopenfilename ou de la fenêtre du navigateur (il a été très difficile à obtenir le répertoire de départ sur nos lecteur réseau) et j'aimerais créer un utilisateur de VBA formulaire où l'utilisateur peut faire glisser et déposer un fichier sur le bureau ou dans une fenêtre de navigateur sur la forme et le VBA va charger le nom de fichier et le chemin d'accès. Encore une fois, je ne suis pas sûr si c'est possible, mais si elle est ou si quelqu'un l'a fait avant, je vous en serais reconnaissant les pointeurs. Je sais comment mettre en place un formulaire utilisateur, mais je n'ai pas de code réel en dehors de ça. Si il y a quelque chose que je peux offrir, laissez-moi savoir.
Merci pour votre temps et considération!
OriginalL'auteur MattB | 2013-12-13
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé un moyen pour y parvenir. Aussi loin que je peux dire, il ne peut être fait à l'aide d'un contrôle treeview. Vous pourriez avoir à droite, cliquez sur votre boîte à outils pour trouver et l'ajouter. Il sera là sous "autres contrôles" ou quelque chose comme ça. Vous aurez besoin de deux choses de côté à partir de la commande.
Dans le
UserForm_Initialize
sous vous aurez besoin de la ligne de code suivante pour activer le glisser-déposer:TreeView1.OLEDropMode = ccOLEDropManual
:Ensuite, vous aurez besoin de la
Private Sub TreeView1_OLEDragDrop
événement. J'ai omis de tous les paramètres pour économiser de l'espace. Ils devraient être assez faciles à trouver. Dans ce sous il suffit de déclarer une chaîne de caractères, peut-êtrestrPath
ou quelque chose comme ça pour tenir le nom de fichier et le chemin d'accès et définirstrPath = Data.Files(1)
et qui vous permettra d'obtenir le nom de fichier et le chemin d'accès d'un fichier que l'utilisateur fait glisser le contrôle TreeView. Cela suppose que l'utilisateur fait glisser un fichier à la fois, mais aussi loin que je peux dire que ce devrait être quelque chose qui peut être fait en faisant glisser plusieurs fichiers si vous expérimenter avec elle.Edit: Vous devrez également ajouter une référence à
Microsoft Windows Common Controls 6.0
J'ai aussi ajouté un exemple de code.
pourriez-vous envoyer un peu de code pour l'utilisateur de glisser plusieurs fichiers ?
Je n'ai pas réellement fait avec plusieurs fichiers, mais je suppose que c'est possible. Je vais vous donner ma meilleure supposition. L'événement DragDrop produit les données.les fichiers de l'objet qui est indexé en commençant à 1. C'est pourquoi je
Data.Files(1)
pour obtenir le nom de fichier. Je n'ai pas testé, donc je ne peux rien promettre, mais je suppose que vous pourriez effectuer une itération sur les Données.Les fichiers(de 1 à n) de la matrice de multiples chemins d'accès aux fichiers. Essayez quelque chose commeFor intCounter = 1 to UBound(Data.Files)
oùintCounter
est un entier et récupérer tous les chemins d'accès aux fichiers à l'aide destrPath = Data.Files(intCOunter)
. Devrait fonctionner.OriginalL'auteur MattB
Matt solution est grande, seulement le besoin de s'assurer:
Besoin d'ajouter le contrôle TreeView qui prend en charge OLEDragDrop opération:
Cliquez-droit sur la boîte à outils de la zone de montrer toutes les commandes disponibles.
Sélectionnez "contrôles Supplémentaires..."
Comprendre: "Microsoft contrôle TreeView, version 6.0"
OriginalL'auteur Mor Sagmon
Je sais que c'est un vieux thread. Les futurs lecteurs, Si vous êtes après quelques-une INTERFACE cool, vous pouvez visiter mon Github pour l'échantillon de la base de données à l'aide .NET wrapper dll. Qui vous permet de simplement appeler une fonction et d'ouvrir filedialog avec de fichiers par glisser-déposer fonction. Le résultat est retourné comme une JSONArray chaîne.
code peut être simple comme
voici à quoi il ressemble;
OriginalL'auteur krish KM