Редактирование макроса автоматического именования в Excel (на основе имени и даты ПК, с переменным путем сохранения)

В настоящее время я пытаюсь получить файл Excel для сохранения в YYYYMMDD_fixed name piece_INITIALS OF LAST PERSON TO EDIT.

Я использую функцию Environ для вызова имени пользователя и ПК в ячейке, которую, как я обнаружил, можно использовать для добавления к имени.

Проблемы, которые я пытаюсь исправить:

  1. как я могу определить путь сохранения для работы на любом ПК независимо от имени пользователя, так как текущий путь имеет Users/my name/ , и до 4 человек с разными ПК и именами будут редактировать этот файл. он должен просто сохранить на рабочем столе на любом из 4 ПК

  2. как я могу изменить

strFile = "C:\Users\me\Desktop\" & Format(dtDate, "ddmmyyyy") & ".xlsx"

часть так, чтобы она отображала YYYYMMDD_name (я понимаю эту часть в порядке) _ABC, где значение ABC находится в ячейке A1, сгенерированной приведенной ниже функцией attr?

используемая функция

Function attr(choice) As String
   Select Case (choice)
      Case "computer": attr = Environ("Computername")
      Case "user": attr = Environ("UserName")
   End Select
End Function

и тот, который я использую для сохранения (хотя и в другом формате в другом файле), это

Dim dtDate As Date
    dtDate = Date

    Dim strFile As String
    strFile = "C:\Users\me\Desktop\" & Format(dtDate, "ddmmyyyy") & ".xlsx"

    ActiveWorkbook.SaveAs Filename:=strFile, FileFormat _
    :=51, CreateBackup:=False

Любая помощь будет принята с благодарностью! Программирование не является моей основной работой, я просто пытаюсь автоматизировать биты, где это возможно, так что полегче со мной, пожалуйста :)


person ciuncky    schedule 12.08.2019    source источник


Ответы (1)


Может быть, что-то вроде этого поможет:

Dim strFile As String, strUserName As String
Dim dtDate As Date

dtDate = Now
strUserName = attr("user")

strFile = "C:\Users\" & strUserName & "\Desktop\" & Format(dtDate, "ddmmyyyy") & "_" & Sheets("Sheet1").Range("A1").Value & ".xlsx"
MsgBox strFile

Обратите внимание, что я присвоил значение активного имени пользователя strUserName и использую его с вашим strFile. Я также добавил в код Sheets("Sheet1").Range("A1").Value (соответственно изменил имя листа). Окончательный результат будет выглядеть так:

C:\Users\username\Desktop\12082019_username.xlsx

person Justyna MK    schedule 12.08.2019
comment
Благодарю вас! Это работает блестяще, мой непропитанный кофеином мозг в понедельник утром проигнорировал часть MsgBox strFile и не мог понять, почему всплывающее окно! Дополнительные конфеты за добавление части листа, мне действительно нужно выбрать конкретную из 8, так что спасибо, что подумали заранее! - person ciuncky; 12.08.2019
comment
Никаких проблем (я знаю кое-что о кофеине :)). Не стесняйтесь голосовать/принимать ответ, если он был полезен - см.: Что мне делать, когда кто-то отвечает на мой вопрос? - person Justyna MK; 12.08.2019
comment
уже проголосовал, но, кажется, это не будет засчитано из-за моего низкого рейтинга/новичка. не знал про галочку! :) - person ciuncky; 12.08.2019
comment
Спасибо! Чем больше баллов вы наберете, тем больше у вас будет возможностей/привилегий. Получайте удовольствие, а также пытайтесь помочь другим людям с их вопросами. Кстати добро пожаловать на форум :) - person Justyna MK; 12.08.2019