我正在使用宏在多个文件夹中的工作表之间复制数据。在此示例中,文件为
\ network_drive \ Locations \ site \ network_scans \ year \ Month \ results.xlsx
我正在尝试将表从该文件复制到两个目录中的另一个工作簿。在这种情况下
\ network_drive \ Locations \ site \ network_scans \ Template.xlsx
我使用绝对路径执行此操作:
Sheets("Chart Data").Select
Selection.Copy
Workbooks.Open Filename:= _
"\\network_drive\Locations\site\network_scans\Template.xlsx"
Range("A20").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
我需要在多个位置和站点(即站点1,站点2,站点3等)上使用。我正在尝试使路径相对。如果我手动执行此操作,则将使用cd ../../,然后打开Template.xlsx。
如何在VBA中引用相对路径?
编辑
我想我掌握了语法,但是现在生成了
运行时错误'1004'
抱歉,我们找不到C:\ Users \ USER \ AppData \ Roaming \ Excel \ XLSTART扫描报告\ filename.xlsx。是否有可能将其移动,重命名或删除?
Sheets("Chart Data").Select
Selection.Copy
Workbooks.Open CStr(ThisWorkbook.Path) & "\..\..\..\network_scans\Template.xlsx"
Range("A20").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
End Sub
SNIP
它像在C驱动器而不是网络驱动器上一样对文件进行寻址。关于如何将其视为网络路径而不是本地路径的任何想法?
答案 0 :(得分:1)
将以下代码复制到Module
Function GetGrandParentFolder() As String
Dim oFSO As New FileSystemObject
With oFSO
GetGrandParentFolder = .GetParentFolderName(.GetParentFolderName(ThisWorkbook.Path))
End With
End Function
现在您可以调用此UDF来获取您的大文件夹名称
注意:您必须添加对Microsoft Scripting Runtime
的引用才能使上述UDF正常工作
答案 1 :(得分:0)
您可以使用
获取当前工作簿的文件路径的名称。this.data = [{
name: '1',
children: [{
name: '11',
children: [{
name: '111'}, {
name: '112'}]}, {
name: '12',
children: [{
name: '121'}, {
name: '122'}]}]}, {
name: '2',
children: [{
name: '21'}, {
name: '22'}]}];
从那里,您可以将字符串转换为字符串,并附加上面提到的导航:
thisworkbook.path
让您进入两个目录。
祝你好运!