首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建全局文件路径

创建全局文件路径
EN

Stack Overflow用户
提问于 2018-06-05 02:32:54
回答 2查看 508关注 0票数 1

目标:使用open function允许用户在多个函数中选择打开的任何文件上运行命令(路径在公共函数中)。

这是提示用户选择文件的初始函数。该文件路径保存在变量" path“中。我公开了这个函数,目的是在多个领域(全球化)中使用"path“。

代码语言:javascript
复制
Public Function OpenFile1() As String
    On Error GoTo Trap

    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    With fd
        .Title = "Open Sterling Shipment History" 'Name for file
        .Filters.Clear
        .ButtonName = " Open "
        .AllowMultiSelect = False
    End With

    If fd.Show <> 0 Then OpenFile1 = fd.SelectedItems(1)

Leave:
    Set fd = Nothing
    On Error GoTo 0
Exit Function

Trap:
    MsgBox Err.Description, vbCritical
    Resume Leave
    Dim path As String
path = OpenFile1() 'Calls in file

If path <> vbNullString Then Debug.Print path
Workbooks.Open (path)


'rename the path variable for each function
'so that I can call in different files with that name
End Function

这是第二个函数的摘录,该函数试图从变量" path“调用文件路径,使用它打开工作簿并更改工作簿。

代码语言:javascript
复制
Sub Shipment_History()
Call OpenFile1
Dim sshist As Workbook
Set sshist = Workbooks.Open(path)
Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

我也试过了:

代码语言:javascript
复制
  Sub Shipment_History()
  Call OpenFile1
  Workbooks.Open(path)

我的问题是它不允许我打开“路径”。

错误状态

“运行时错误'1004':对不起,我们找不到。它是否可能已被移动、重命名或删除?”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-05 15:18:06

由于该函数返回一个字符串( path ),并且它是公开可用的,因此您不需要公共变量来存储路径。

在本地声明path变量并将其值设置为函数返回的值(path):

代码语言:javascript
复制
Sub Shipment_History()

    Dim path as string
    path = OpenFile1()

    If path <> vbNullString Then Workbooks.Open(path)
End Sub

附注:删除Resume Leave之后除End Function语句之外的所有内容。

票数 1
EN

Stack Overflow用户

发布于 2018-06-05 02:59:17

path必须在任何函数或Subscript外部声明为公共字符串,函数不需要是公共的,它是变量。

在一个模块上尝试以下内容:

代码语言:javascript
复制
Public path As String

Function setPathValue(ByVal dataPassed As String)
    path = dataPassed
End Function

Sub givePathVal()
    setPathValue ("This is path value")
End Sub

Sub showPathVal()
    MsgBox path
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50686754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档