Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA SaveCopyAs,带有来自变量的文件路径_Vba_Excel - Fatal编程技术网

VBA SaveCopyAs,带有来自变量的文件路径

VBA SaveCopyAs,带有来自变量的文件路径,vba,excel,Vba,Excel,我不是很擅长VBA,我想知道是否有人能帮助我。这是我的问题 我不想将工作簿另存到文件夹中,但路径会根据用户的不同而变化。因此,为了解决这个问题,我创建了以下代码: Public Function MyDocsPathS() As String MyDocsPathS = Environ$("USERPROFILE") & "\" & "OneDrive\Soumission" End Function 这很有效。但是,我不知道如何在SaveCopyAs函数中编写它。我尝

我不是很擅长VBA,我想知道是否有人能帮助我。这是我的问题

我不想将工作簿另存到文件夹中,但路径会根据用户的不同而变化。因此,为了解决这个问题,我创建了以下代码:

Public Function MyDocsPathS() As String
    MyDocsPathS = Environ$("USERPROFILE") & "\" & "OneDrive\Soumission"
End Function
这很有效。但是,我不知道如何在SaveCopyAs函数中编写它。我尝试过这种方法和其他方法,但没有成功:(见**之间的部分)


谢谢你的帮助

您的代码应该如下所示:

Public Function MyDocsPathS() As String
    MyDocsPathS = Environ$("USERPROFILE") & "\" & "OneDrive\Soumission"
End Function

Sub Soumission()
    Sheets("Modèle Soumission").Visible = True
    ActiveWorkbook.SaveCopyAs MyDocsPathS() & "\S0000x.xlsm"
    Sheets("Modèle Soumission").Visible = False
    Workbooks.Open MyDocsPathS() & "\S0000x.xlsm"
End Sub

从理论上讲,您可以使用
MyDocsPathS()&“\s000x.xlsm”
,也可以只使用
MyDocsPathS&“\s000x.xlsm”
(即不使用
()
),但我认为最好在其中放上括号,以便更清楚地表明它是正在调用的函数,不仅仅是一个变量。

@YowE3K函数MyDocsPathS的意义是什么?它不获取变量,也不进行任何特殊计算。您只需声明一个名为
MyDocsPathS
的变量,该变量获取
Environ$(“USERPROFILE”)&“\”和“OneDrive\Soumission”
@ShaiRado的值,我个人会在自己的代码中使用一个全局变量,并在主代码开始时对其进行初始化。但是拥有一个函数有很多优点(代码重用性方面),这也是OP选择的方式。解释如何以我喜欢的方式做事超出了OP当前问题的范围。@YowE3K看看这里你熟悉使用
MSXML2.XMLHTTP
object吗?@ShaiRado-对不起,我一生中可能用过一次,也许两次。(更可能的是永远不会——我不记得我会用它做什么。)我浏览了代码,看看是否有什么明显的东西对我突出(有时明显的东西会被专家忽略,直到一个对它一无所知的人说“嘿,这样或那样有意义吗?”),但我什么也没看到。
Public Function MyDocsPathS() As String
    MyDocsPathS = Environ$("USERPROFILE") & "\" & "OneDrive\Soumission"
End Function

Sub Soumission()
    Sheets("Modèle Soumission").Visible = True
    ActiveWorkbook.SaveCopyAs MyDocsPathS() & "\S0000x.xlsm"
    Sheets("Modèle Soumission").Visible = False
    Workbooks.Open MyDocsPathS() & "\S0000x.xlsm"
End Sub