使用Dir循环打开文件

时间:2019-07-12 14:17:14

标签: excel vba

我想打开一个文件,从中复制然后粘贴到另一个文档中,然后从该副本复制并粘贴回到打开的文档中。

我将文件名转换为字符串,并且可以识别,但表示它们不存在。

Dim StrFile As String

'Debug.Print "in LoopThroughFiles. inputDirectoryToScanForFile: ", inputDirectoryToScanForFile

StrFile = Dir("H:\Open Work book" & "\" & "*.xlsx")
Do While Len(StrFile) > 0
    StrFile = Dir

    'Opens The File In The folder
    Workbooks.Open StrFile

这应该循环打开文件。它说

  

对不起,我们找不到CTM服务Reach.xlsx。是否有可能将其重新命名或删除?

2 个答案:

答案 0 :(得分:1)

执行时

 StrFile = Dir("H:\Open Work book" & "\" & "*.xlsx")

strfile充满了与模式匹配的第一个文件。您检查是否返回了东西

Do While Len(StrFile) > 0

但是随后您将strfile更改为符合模式的下一个文件-丢弃第一个文件的名称

 StrFile = Dir

然后您尝试在不指定文件位置的情况下打开文件

  Workbooks.Open StrFile

你应该做的是

StrFile = Dir("H:\Open Work book" & "\" & "*.xlsx")
Do While Len(StrFile) > 0
   Workbooks.Open "H:\Open Work book" & "\" & StrFile
   StrFile = Dir
Loop

答案 1 :(得分:0)

我知道,您有解决方案,但是,就像罗马人曾经说过的:variatio delectat。这是执行此操作的另一种方法:

  $chart['coef'] = array(
    '#type' => 'chart_data',
    '#title' => t('Coefficient'),
    '#data' => $data,
    '#decimal_count' => 2,
  );