2012-04-13 6 views
1

Я создал кнопку макроса, чтобы открывать свои ежедневные файлы на листе производства Excel, где у меня есть вся моя кнопка макроса для определенных файлов.Excel код VBA, чтобы открыть файл

Формат для всех моих файлов обычно тот же:

  1. Businese Unit Имя: YMCA
  2. Год: 2012
  3. Месяц: Апрель
  4. Неделя: Неделя 2
  5. день: 12
  6. Имя файла: YMC Template 041212.xlsm

У меня проблема с последним расширением имени файла excel. Как добавить шаблон MyDaily и MyDateProd вместе с .xlsm. У меня есть эта -J: ..... \ & myDailyTemplate & myDateProd.xlsm ") см ниже целых имена путей файла

Sub Open_DailyProd() 

    Dim myFolderYear As String 
    Dim myFolderMonth As String 
    Dim myFolderWeek As String 
    Dim myFolderDaily As String 
    Dim myDateProd As String 
    Dim myBusinessUnit As String 
    Dim myDailyTemplate As String 

    myBusinessUnit = Sheet1.Cells(32, 2) 
    myFolderYear = Sheet1.Cells(11, 2) 
    myFolderMonth = Sheet1.Cells(12, 2) 
    myFolderWeek = Sheet1.Cells(13, 2) 
    myFolderDaily = Sheet1.Cells(14, 2) 
    myDateProd = Sheet1.Cells(15, 2) 
    myDailyTemplate = Sheet1.Cells(6, 5) 

    Application.Workbooks.Open ("J:\IAS\3CMC05HA01\IAC Clients\myBusinessUnit\myFolderYear\myFolderMonth\myFolderWeek\myFolderDaily\& myDailyTemplate & myDateProd.xlsm") 

End Sub 

ответ

5

Excel ищет файл с именем:. "J:\IAS\3CMC05HA01\IAC Clients\myBusinessUnit\myFolderYear\myFolderMonth\myFolderWeek\myFolderDaily\& myDailyTemplate & myDateProd.xlsm"

поскольку это то, что включено в кавычки, но из вашего кода у вас есть ряд переменных, которые являются частью этой строки, вам нужно вывести их из кавычек и объединить их вместе. Попробуйте что-то вроде этого:

"J:\IAS\3CMC05HA01\IAC Clients\" & myBusinessUnit & "\" & myFolderYear _ 
& "\" & myFolderMonth & "\" & myFolderWeek & "\" & myFolderDaily & _ 
"\" & myDailyTemplate & myDateProd & ".xlsm" 

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

Если вам не нужно все myBusinessUnit, myFolderYear и т.д. переменные в другом месте, я думаю, делать это в какой-то массив, а затем делает Join функцию, чтобы сцепить все. Я лично считаю, что это легче поддерживать в будущем и легче видеть иерархию в структуре папок, а не смотреть на очень длинную строку и пытаться найти, какая часть пути неверна.

Sub Open_DailyProd() 

    Dim pathParts(1 To 10) As String 
    Dim path As String 

    pathParts(1) = "J:" 
    pathParts(2) = "IAS" 
    pathParts(3) = "3CMC05HA01" 
    pathParts(4) = "IAC Clients" 
    pathParts(5) = Sheet1.Cells(32, 2) 
    pathParts(6) = Sheet1.Cells(11, 2) 
    pathParts(7) = Sheet1.Cells(12, 2) 
    pathParts(8) = Sheet1.Cells(13, 2) 
    pathParts(9) = Sheet1.Cells(14, 2) 
    pathParts(10) = Sheet1.Cells(6, 5) & Sheet1.Cells(15, 2) & ".xlsm" 

    path = Join(pathParts, "\") 

    Application.Workbooks.Open (path) 

End Sub 
+0

У меня есть выпуск с пуском = Join (pathPart, "\"). – cemg

+0

@cemg я должен был предварять его «непроверенным», поскольку я не пробовал его, прежде чем я его написал. Однако основная идея звучит. Какую ошибку вы получаете? – psubsee2003

+0

@cemg У меня была опечатка в моем коде, но она была исправлена, и я протестировал это время. Он должен работать на вас. Если это не так, то вам нужно учитывать, что либо файл, который вы запрашиваете, не существует в этом месте, либо у пути есть опечатка – psubsee2003