VBA - отправить команду, которая в ячейках CMD для запуска - PullRequest
0 голосов
/ 28 апреля 2018

Вот моя ситуация: нам нужно создать папку и предоставить разрешение на папку для новых сотрудников каждый день, и я создаю Excel с VBA Macros. Я хочу сделать так, чтобы после ввода идентификатора пользователя команда (используйте его в CMD) была сгенерирована в другой ячейке (например, D6 - D10, зависит от того, сколько новых сотрудников в этот день), и когда я нажимаю кнопку, папка с созданным именем пользователя с идентификатором. И я хочу добавить сообщение о том, что папка была создана без ошибок.

Вот превосходство: https://i.stack.imgur.com/bBDPZ.png

что я хочу сделать, это сделать кнопку, нажать ее и создать папку, я пробовал в течение 2 дней и получил много результатов

  1. папка, созданная с именем XXXXXXmd (md - команда для CMD, я не знаю, почему она стала именем файла.
  2. создана успешно, но в CMD выдается сообщение об ошибке (см. Рис.) https://i.stack.imgur.com/AYmEk.png
  3. кнопка не будет работать, если есть ячейки без значения.

вот мой код, диапазон в Excel от D6 до D55, вот только то, что я тестирую:

Sub Button8_Click()

Dim strBaseCmd As String
Dim r1 As Range
Dim r2 As Range
Dim r3 As Range
Dim r4 As Range
Dim r5 As Range
Dim strParameter As String
Dim strCmd As String


' base command
strBaseCmd = "CMD /K"

' get a cell from a sheet in this workbook
Set r1 = ThisWorkbook.Worksheets("Create Users Home Drive").Range("d6")
Set r2 = ThisWorkbook.Worksheets("Create Users Home Drive").Range("d7")
Set r3 = ThisWorkbook.Worksheets("Create Users Home Drive").Range("d8")
Set r4 = ThisWorkbook.Worksheets("Create Users Home Drive").Range("d9")
Set r5 = ThisWorkbook.Worksheets("Create Users Home Drive").Range("d10")
strParameter = r1.Value & "              " & r2.Value & "              " & r3.Value & "              " & r4.Value & "              " & r5.Value

 ' add parameter to command
strCmd = strBaseCmd & strParameter

' run command
Shell strCmd, vbNormalFocus

End Sub

У вас есть идеи по этому поводу, большое спасибо за помощь.

1 Ответ

0 голосов
/ 28 апреля 2018

Проблемы возникают из-за способа передачи параметров. Я не вижу пробела между /K и первым параметром, который вы отправляете в cmd. Я считаю, что ваша первая команда выглядит так:

CMD /Kmd \\myPath

Я бы предложил вам следующее:

Либо прокрутите ваши ячейки с помощью while или do while и выполните команду CMD для каждой ячейки, у которой есть значение. Если вам не нравятся несколько окон CMD, вы можете создать файл bat и выполнить его.

Или используйте функцию mkdir, которая является частью VBA, вместо команды CMD. Документация Mkdir .

Dim I as integer
I = 6 'Start with D6
While ThisWorkbook.Worksheets("Create Users Home Drive").Cells(I,4).Value <> ""
    MkDir ThisWorkbook.Worksheets("Create Users Home Drive").Cells(I,4).Value
    I = I + 1
Wend
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...