2012-04-13 139 views
1

我创建了一个宏按钮,可以从Excel生产表中打开我的日常文件,其中包含特定文件的所有宏按钮。Excel VBA代码打开文件

我所有的文件格式是传统上是相同的:

  1. Businese单位名称:YMCA
  2. 年份:2012
  3. 月份:四月
  4. 周:第2周
  5. 日: 12
  6. 文件名:YMC模板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" 

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

除非你需要的所有myBusinessUnitmyFolderYear等变量的其他地方,我会考虑在某种阵列的做,然后做一个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

我正在使用path = Join(pathPart,“\”)进行issuw。 – cemg 2012-04-13 18:55:05

+0

@cemg我应该以“未经测试”开头,因为我在写它之前没有尝试过。基本的想法是健全的。你遇到了什么错误? – psubsee2003 2012-04-13 18:59:52

+0

@cemg我在我的代码中有一个错字,但修复了它,我这次测试过了。它应该为你工作。如果没有,那么你需要考虑到你要求的文件在该位置不存在,或者路径有错字 – psubsee2003 2012-04-13 19:05:32