Как написать VBA с переменной в пути - PullRequest
0 голосов
/ 16 мая 2018

Это мой второй пост на этом сайте, и я относительно новичок в VBA.

Мой сегодняшний вопрос:

Как добавить значение ячейки в строку пути для обозначенияпапка, в которой я хотел бы сохранить рабочую книгу.

Dim Path As String
Dim FileName1 As String
Dim FileName2 As String

Path = "D:\folder1\folder2\Projects\The FILES\theFILES\"FileName1"\

FileName1 = Range("B6")
FileName2 = Range("A1")

ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

Заранее спасибо!

Ответы [ 4 ]

0 голосов
/ 16 мая 2018

Ответ на поставленный вопрос

Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\" 

Также см. дополнительную обратную связь и исправленный код для других отзывов.


Длинное объяснение ответа

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

string = "This is my string value."

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

string = "This is my really, really, really long string value. I am making this " _
    & "as long as I can, while also having something to write."

Если вы удалите _ и переместите все в одну строку, это будет выглядеть так:

string = "This is my really, really, really long string value. I am making this " & "as long as I can, while also having something to write."

Обратите внимание, что любая строка, присваиваемая переменной, может быть разбита таким образом:

string = "This is" & " my " & "string value."

' Returns the same result as:
string = "This is my string value."

Кроме того, если у меня есть строковая переменная str_val = " my ", я мог бы использовать подстановку, чтобы записать приведенный выше пример как:

string = "This is" & str_val & "string value."

Дополнительные отзывы

В настоящее время порядок вашего кода (см. оригинальный код ниже):

  1. Определить переменные
  2. Назначить значение пути
  3. Назначить значение FileName1
  4. Назначить значение для FileName2
  5. Сохранить файл

К сожалению, это следование этому порядку означает, что на шаге 2) значение FileName1 является пустой строкой, "", так как ему еще не присвоено значение.

Следовательно, порядок, в котором вы должны следовать:

  1. Определение переменных
  2. Назначить значение FileName1
  3. Назначить значение FileName2
  4. Назначить значение пути
  5. Сохранить файл

Дополнительные переменные в строке

Был ответ, временно опубликованный @Davesexcel (затем измененный), в котором предполагалось, что folder1 и folder2 в вашей строке также являются переменными. Я приложил альтернативный код , если это действительно так.


Оригинальный код

Dim Path As String
Dim FileName1 As String
Dim FileName2 As String

Path = "D:\folder1\folder2\Projects\The FILES\theFILES\"FileName1"\

FileName1 = Range("B6")
FileName2 = Range("A1")

ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

Исправленный код

Dim Path As String
Dim FileName1 As String
Dim FileName2 As String

FileName1 = Range("B6")
FileName2 = Range("A1")

Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\"    

ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

Альтернативный код

Dim Path As String
Dim FileName1 As String
Dim FileName2 As String

FileName1 = Range("B6")
FileName2 = Range("A1")

Path = "D:\" & folder1 & "\" & folder2 & "\Projects\The FILES\theFILES\" & FileName1 & "\"    

ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
0 голосов
/ 16 мая 2018

Вы удалили несколько знаков амперсанда, также вы должны назначить значение переменных, прежде чем использовать их:

Dim Path As String
Dim FileName1 As String
Dim FileName2 As String

FileName1 = Range("B6").Value
FileName2 = Range("A1").Value

Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\"

ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
0 голосов
/ 16 мая 2018

Эта строка неверна: Path = "D: \ folder1 \ folder2 \ Projects \ The FILES \ theFILES \" FileName1 "\

..., поскольку она содержит 3" метки.Я не уверен, каким должен быть ваш фактический путь, потому что имена путей в операционной системе в любом случае не будут содержать символов ". Однако в строковом присваивании VBA строка должна быть заключена только между двумя" символами:

"like this"

Если вам нужно включить символ "буквально в строку, то вы должны удвоить кавычку. Так, например, чтобы присвоить строку переменной, которая читает" Эта строка содержит«символ», вам нужно написать:

Str = "This string contains a "" character"

Обратите внимание на удвоение.

Проверьте строки и повторите попытку.

0 голосов
/ 16 мая 2018

Код запускается строка за строкой, сначала нужно указать правильную строку.

Dim Path As String
Dim FileName1 As String
Dim FileName2 As String

FileName1 = Range("B6").Value
FileName2 = Range("A1")
 Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...