Comment faire de chemin d'accès au dossier universelle?

0

La question

Nouveau à VBA et ont une affectation à créer un sous qui colle à partir d'un classeur dans un nouveau classeur. Une exigence pour l'enregistrement du fichier, c'est que "le chemin du dossier de l'universel, de sorte que d'autres personnes peuvent créer ce dossier trop". Ce que l'amendement pourrais-je faire à la ActiveWorkbook.Méthode SaveAs pour accomplir cette? Merci

Sub pasteTable()

    Dim formatting As Variant 'create variable to hold formatting2 workbook path
    formatting = Application.GetOpenFilename()  'user is prompted and selects path to formatting2 workbook and assigns to formatting variable
    
    Workbooks.Open formatting  'formatting2 workbook is now active
    Worksheets("Formatting").Range("B3:R13").Copy  'copies table from formatting2 workbook
    Workbooks.Add  'add new workbook
    
    Worksheets(1).Range("B3:R13").Select  'selects range on worksheet of new workbook to paste table
    Selection.PasteSpecial xlPasteAll 'pastes table
    
    Columns("B:R").ColumnWidth = 20  'ensures table has proper row and column heights/widths
    Rows("3:13").RowHeight = 25
    
    Worksheets(1).Name = "Table Data"  'renames worksheet
        
    ActiveWorkbook.SaveAs "C:\Users\name\Desktop\names Excel Assessment VBA\names Excel Assessment VBA " & Format(Date, "dd/mmm/yyyy"), FileFormat:=xlOpenXMLWorkbookMacroEnabled
    'saves workbook according to desired specifications
End Sub
excel vba
2021-11-24 03:27:40
2
0

Changer votre Enregistrer en ligne à ceci:

ActiveWorkbook.SaveAs "C:\Users\" & Environ("Username") & "\Desktop\Excel Assessment VBA\Excel Assessment VBA " & Format(Date, "dd-mmm-yyyy") & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

L' Username la variable système ajustera selon le compte Windows qui est en cours d'utilisation. Assurez-vous simplement que chaque utilisateur dispose de ces dossiers existants sur leur ordinateur de bureau, ou vous obtiendrez une erreur. J'ai également supprimé names des noms de dossier comme je suppose que vous étiez en train de faire quelque chose avec le nom de l'utilisateur ainsi. Vous pouvez régler cela à vos besoins.

Votre format de la Date nécessaires pour changer trop comme il est, y compris des caractères illégaux.

Vous avez aussi oublié de préciser l'extension du fichier, j'ai donc ajouté qu'en tant que bien.

Il y a beaucoup de choses sur cette ligne, y compris beaucoup d'erreurs, de sorte que vous allez avoir à jouer avec un peu jusqu'à ce que vous obtenez exactement ce dont vous avez besoin. Vous pouvez simplifier un peu jusqu'à ce que vous obtenez le coup de toutes ces choses.

2021-11-24 06:52:45
0

Je pense que vous devez ajouter un peu plus de contrôles

Le script attend le nom de l'outil-le chemin d'accès du dossier que les constantes ToolFolder.

En Plus d'une seconde constante ToolBaseFolder qui pourraient être mis à la mère-voie " ToolFolder, par exemple, un chemin d'accès réseau. Si la const est vide, les utilisateurs de bureau sera utilisé.

Si ce chemin n'existe pas encore, il sera créé.

Option Explicit

Private Const ToolBaseFolder As String = "" 'if ToolBaseFolder is an empty string desktop will be used instead
Private Const ToolFolder As String = "MyNameForToolFolder"


Public Sub testWbToToolFolder()
'this is just for testing
Dim wb As Workbook: Set wb = ActiveWorkbook
saveWbToToolFolder wb, "test.xlsx"
End Sub


Public Sub saveWbToToolFolder(wb As Workbook, filename As String)
'you don't need this sub - but have the same code line in your main routine
wb.SaveAs getToolFolder & filename
End Sub



Public Function getToolFolder() As String
'this returns the toolfolder e.g. C:\Users\xyz\Desktop\MyNameForToolFolder

Dim basepath As String
basepath = ToolBaseFolder & "\"

If existsFolder(basepath) = False Then
    If LenB(ToolBaseFolder) > 0 Then
        MsgBox ToolBaseFolder & " does not exist." & vbCrLf & _
            "File will be saved to " & ToolFolder & " on desktop ", vbExclamation
    End If
    basepath = getDesktopFolderOfUser
End If

Dim fullpath As String
fullpath = basepath & ToolFolder & "\"

If existsFolder(fullpath) = False Then
    makeFolder fullpath
End If

getToolFolder = fullpath

End Function


Private Function existsFolder(path As String) As Boolean
If Len(path) < 2 Then Exit Function 'can't be a valid folder
existsFolder = LenB(Dir(path, vbDirectory)) > 0
End Function

Private Function getDesktopFolderOfUser() As String
getDesktopFolderOfUser = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
End Function

Private Function makeFolder(path As String)
'https://stackoverflow.com/a/26934834/16578424 plus comment from rayzinnz
CreateObject("WScript.Shell").Run "cmd /c mkdir """ & path & """", 0, True
End Function

2021-11-24 04:46:46

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................