Logiciel: Excel VBA ne remplissant pas le nom de fichier par défaut dans la boîte de dialogue Enregistrer sous

-1

J'ai un problème avec du code VBA dans mon classeur Excel principal. J'ai deux morceaux de code. Code A fonctionne bien. Code B ne fonctionne pas bien.

Le premier morceau de code (Code A), qui fonctionne correctement, crée un répertoire et enregistre le classeur Excel dans celui-ci, avec le nom du répertoire et du fichier extrait de la cellule B4.

La deuxième partie du code (Code B) va dans un répertoire et ouvre une boîte de dialogue Enregistrer sous. Elle est supposée remplir la zone de nom de fichier initiale avec les informations de la cellule B4. Cependant, tout fonctionne sauf le nom de fichier initial qui n'est pas rempli automatiquement. Il l'habitude de; cela fonctionnait juste avant que je change toutes les références de macros pour les lecteurs mappés (je les ai modifiées des lecteurs de lettre mappés au chemin UNC afin que le fichier puisse être utilisé sur le réseau, c'est-à-dire Z: \ In Progress \ to \ 10.0.0.4 \ data \ en cours).

Ce qui est étrange, c'est que je n'ai aucun problème à accéder au réseau après avoir changé de lecteur mappé -> chemins UNC. Il semble juste être ce petit problème.

J'ai compilé le projet et l'ai débogué.

Si quelqu'un a une idée sur la façon de renseigner le nom de fichier initial pour le code B, ce serait très apprécié.

CODE A

    Option Explicit
Sub SaveAsNewJobtoIP()
'This macro creates a New Folder in the In Progress File, named off the BILLING CLIENT Name.
Dim Path As String
Dim InitialName As String
Dim sFileSaveName As Variant

    Path = "\\10.0.0.4\data\In Progress\"

        If Len(Dir("\\10.0.0.4\data\In Progress\" & ActiveSheet.Range("B4").Value, vbDirectory)) = 0 Then
        MkDir Path & ActiveSheet.Range("B4").Value
        End If

'This macro saves the workbook with a Dialog and an Initial Filename
    InitialName = ActiveSheet.Range("B4").Value & " " & ActiveSheet.Range("H2") & " " & ActiveSheet.Range("I2") & " " & ActiveSheet.Range("J2")
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=Path & InitialName, FileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
    ActiveWorkbook.SaveAs sFileSaveName
    End If
End Sub

CODE B

    Option Explicit
Sub SaveAsNewQuoteinJCF()
'This macro saves the workbook with a Dialog and an Initial Filename
Dim Path As String
Dim InitialName As String
Dim sFileSaveName As Variant

    Path = "\\10.0.0.4\data\Job Cost Folder\Jill\"
    InitialName = "Estimate " & ActiveSheet.Range("B4").Value
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=Path & InitialName, FileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
    ActiveWorkbook.SaveAs sFileSaveName
    End If
End Sub
les rachaels
la source
1
"Z: \ En cours \ à \ 10.0.0.4 \ data \ En cours)." - Les répertoires ne peuvent pas avoir de points en eux. Ma première hypothèse est que votre répertoire dans ce cas n'est pas valide. Vous pouvez utiliser le nom du partage (c.-à-d. \\ MyDrobo \) auquel MyDrobo doit résoudre le problème 10.0.0.4. À l'exception de la clause if, je ne vois aucune différence entre les deux blocs de code.
Ramhound 10/10/2017
"Les répertoires ne peuvent pas contenir de points." Il doit y avoir plus que cette interdiction absolue. Cela me rendit curieux alors je sautai sur une invite CMD, informai Win7 de MD This.Is.My.Directory. Aucun message d'erreur ne se produisit, mais DIR indique le nouveau répertoire, tout comme WinExplorer lorsque je démarre. Certaines des fonctionnalités de Win UI observent de manière obsessionnelle (stupidement) l’option FileExplorer de masquer les extensions de fichier. Je suspecte qu'il y aura un problème tôt ou tard si vous avez des noms de répertoire qui incluent des points si cette option est activée. D'autres pensées?
Steve Rindsberg
Il semblerait qu’il y GetSaveAsFilenameait des problèmes avec les points comme nom de dossier, comme le suggère @Ramhound. Essayez de changer votre chemin en C:\folder.with.periods\Estimateet vous verrez que la zone de nom de fichier est également vide.
davidmneedham
@SteveRindsberg Faites tout le dans l'Explorateur de fichiers, invite de commande, jamais le chemin d'accès limite 255 (à ma connaissance)
Ramhound 10/10
@Ramhound Ayant des difficultés à analyser ce dernier.
Steve Rindsberg

Réponses:

0

Il a fallu un peu de recherche et essayer de comprendre le paysage de mon réseau local, mais j'ai compris, à l'aide de commentaires, que tout ce que j'avais à faire pour résoudre le problème était le suivant:

Remplacez le chemin UNC par le nom réel de l'ordinateur. Alors j'ai changé

"\\10.0.0.4\" ---> "\\Server-pc\"

et le problème a été résolu. Je pensais que le 10.0.0.4 était le nom de l’ordinateur serveur, mais c’était en fait un chemin. Le passage du chemin UNC au nom de l'ordinateur réel a également résolu un autre problème: les macros recevaient des erreurs d'exécution (1004) car le chemin UNC de mon collègue était en réalité 10.0.0.3.

les rachaels
la source