2011-05-04 138 views
3

我使用的是Excel VBA。我想按下一个按钮,直接打开另一个文件,而没有“选择文件窗口”的效果。打开文件不调用文件路径

这是当前的代码:

Sub loadFile_click() 
Workbooks.Open("C:\Users\GIL\Desktop\ObsReportExcelWorkbook.xlsx") 
End Sub 

在这种情况下,该文件是在同一文件夹作为主要文件。

有没有办法做到这一点,而无需输入文件路径?

回答

17

如果文件名是固定的,你可以使用ActiveWorkbook.Path函数返回当前工作簿的路径:

Dim FileName as string FileName = ActiveWorkbook.Path & "\myfile.xlsx

检查是否需要额外的斜杠。

+1

谢谢,其工作 – 2011-05-04 18:37:10

+1

@Gil Peretz:考虑如果我的答案不符合你的需要。 – 2011-05-04 18:38:31

2

如果是在同一个文件夹,然后

Workbooks.Open("ObsReportExcelWorkbook.xlsx") 

Workbooks.Open(".\ObsReportExcelWorkbook.xlsx") 

应该工作。我只是在Excel VBA中尝试过,并取得了成功。

+1

我只是尝试在VBA中,我得到错误“400”... – 2011-05-04 18:35:27

6

如果该文件是在同一文件夹中包含VBA宏的文档,使用

ThisWorkbook.Path 

例如:

Workbooks.Open(ThisWorkbook.Path & "\ObsReportExcelWorkbook.xlsx") 

(这个工程即使文档不处于活动状态或者你改变了当前目录)。

+0

如何打开文件夹位置而不是工作簿? – DeerSpotter 2015-08-21 16:15:28

+1

@MaximTeleguz:通过“打开文件夹位置”定义你的意思,或者在SO上发布一个问题,并明确说明你的想法。 – 2015-08-21 16:42:41

+0

请参阅下面的答案。我想我解决了它。 – DeerSpotter 2015-08-21 16:56:20

-1

语境下的打开文件夹ActiveWorkBook

Sub OpenFolderofProject() 
Dim strMsg As String, strTitle As String 
Dim sFolder As String 

sFolder = ThisWorkbook.Path 

    strMsg = "Open WorkBook Folder Location? " 
    strTitle = "Folder Location:" & sFolder 

     If MsgBox(strMsg, vbQuestion + vbYesNo, strTitle) = vbNo Then 
     Else 
      Call Shell("explorer.exe " & sFolder, vbNormalFocus) 
     End If 
End Sub 

: 通常你对你的项目持续发生改变,或者修改有automaticially产生的工作簿与动态名。无论如何。这将知道您的工作簿路径位置,并询问您是否要打开该特定文件夹。

这对我来说非常有用,当我动态地在工作簿的同一个文件夹中以编程方式保存了一堆Excels。因为不是关闭/最小化工作簿以进入资源管理器。我可以专注于这个项目,而不是失去思路。

+1

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – Tunaki 2015-08-21 17:42:11

+0

嘿,你能告诉我如何在评论部分发布代码,以便它可读。 此外,我被引导到谷歌这个特定问题的这个页面。更多的人会像我一样被带到这里。为了节省时间,他们会看到我的回应。 – DeerSpotter 2015-08-21 17:58:19