Tag: chdir

设置目录和If Len(Dir(…语句在VBA中

我有一个文件存在这个path下: //path/folder1/folder2/datafile.gdp 它是以这种方式从vba调用的外部程序的input: Sub RunProgram() Dim wsh As Object SetCurrentDirectory "\\path\" ChDir "\\path\folder1\folder2\" 'Set Directory Set wsh = VBA.CreateObject("WScript.Shell") check = CurDir Statusnum = wsh.Run(Command:="program.exe ""\\path\folder1\folder2\datafile.gdp""", WindowStyle:=1, waitonreturn:=True) 但是在最后一行中,包括\ path \ folder1 \ folder2 \在input文件名之前似乎会导致外部程序想要将某些文件写入不存在的重复目录,从而导致错误。 在由外部公司更新.exe之前,它曾经以这种格式工作。 它现在想在这里写一些文件,所有文件的前缀都是我的input文件的名称: \\path\folder1\folder2\PATH\FOLDER1\FOLDER2\ 希望能解决这个问题,我把代码的最后一行改成了这个,接着在SO上的一个post上写了一些评论: Statusnum = wsh.Run(Command:="program.exe ""datafile.gdp""", WindowStyle:=1, waitonreturn:=True) 由于在调用.exe之前目录设置正确,我认为删除input文件的path可以解决问题。 该程序现在启动,但似乎没有加载input文件,不再在后台自动运行计算。 相反,它会启动,并且主要的.exe窗口会popup给用户,就好像它刚刚启动来设置一个新项目一样,计算不会自动发生。 要检查哪个目录的VBA代码试图拉我的datafile.gdp,我直接在调用.exe之前创build这些循环: If Len(Dir("\\path\folder1\folder2\datafile.gdp")) = 0 Then FileIsMissing1 […]

使用当前目录检索数据而不打开Excel工作簿(智能select性导入w / VBA)

(Excel 2010)我试图从各种“目标”工作簿中的不同但相似的文件夹中抓住特定的行。 我发现,当源代码(“LM”,代码正在执行的工作簿以及我想要将数据提取到的目标)和目标工作簿位于同一个文件夹中时,我无法打开目标工作簿,但是当他们在不同的地点(因为他们将在实践中),我收到一个“下标超出范围”的错误 LM.Worksheets("Sheet1").Range("B" & i + 1 & ":G" & i + 1).Value = _ Workbooks(filename).Worksheets("Sheet1").Range("B6:G6").Value 线。 我努力了: 使用path名,dirname和文件名等的每个变体和组合作为后者Workbooks()的参数。 我也有MsgBox我的片断和整个path名和文件名看,这是没有错误的。 replace后面的工作簿(文件名)与工作簿variables(让我们称之为Targ),如LM(工作正常) 用ChDir和ChDrive改变path(&我已经确认CurDir()实际上是运行时的目标目录)并且执行上述操作 使用ThisWorkbook而不是LM进行通话 基本上每一个上述想法的排列 这是一个简洁的(因为机密的东西在那里)版本的代码(这工作正常,如果我解雇Workbooks.Open和Workbooks.Close,但我想要一个更有效的方法,因为这是一个繁忙的networking和人民这些文件一直在进出。事实上,我可以做到这一点,而无需打开文件,如果他们在同一个文件夹告诉我,我正在… …) Sub Import() Dim directory As String, fileName As String, LM As Workbook, i as Integer Set LM = Workbooks("LM.xlsm") i = 1 Dim DirArray As Variant 'this is […]