Excel VBA代码打开文件

我创build了一个macrosbutton来打开我的日常文件从一个Excel生产工作表,我有我所有的macrosbutton为特定的文件。

我所有文件的格式通常是相同的:

  1. Businese单位名称:YMCA
  2. 年份:2012
  3. 月份:四月
  4. 周:第2周
  5. 第十二天
  6. 文件名:YMC模板041212.xlsm

我有最后一个Excel文件扩展名的问题。 如何添加MyDaily模板和MyDateProd以及.xlsm。 我有这个-J:….. \&myDailyTemplate&myDateProd.xlsm“)看到下面的整个文件path名称。

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 

Excel正在查找名为"J:\IAS\3CMC05HA01\IAC Clients\myBusinessUnit\myFolderYear\myFolderMonth\myFolderWeek\myFolderDaily\& myDailyTemplate & myDateProd.xlsm"

因为这是引号中包含的内容,但是从代码中,您似乎有许多variables是该string的一部分,所以您需要将它们从引号中除去并将它们连接在一起。 尝试这样的事情:

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

我在屏幕上添加了延续_使其更易读,但并不是必须的,如果您愿意,可以将所有内容放在一起。

除非你需要其他地方的myBusinessUnitmyFolderYear等variables,否则我会考虑在某种数组中执行它,然后执行Join函数来连接所有内容。 我个人认为,更容易保持前进,更容易看到文件夹结构中的层次结构,而不是查看很长的string,并试图找出path的哪一部分是错误的。

 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