【发布时间】:2011-06-09 01:45:54
【问题描述】:
我的问题是我需要使用 VBA(对于 excel 2007)打开一些 excel 文件并提取数据。我要打开的所有文件都称为“profit for January.xlsx”、“profit for February.xlsx”等等,只是月份名称发生了变化,所以我想打开一个名为“profit for*”的文件.文件夹中还有一个我不想打开的名为“total income.xlsx”的文件。
如果可能,我需要代码来从文件夹中的文件中提取数据,无论文件夹在哪里,因为我将此代码发送给我的同事以放入他们自己的文件夹中,这些文件夹具有相同的文件名格式等但不同的路径。
我有提取数据的代码,它有效,但它要么导入文件夹中的所有数据,要么根本不导入!
我们将不胜感激任何帮助,因为我是一名试图让他踏上大门的实习生,这对我来说将是一个很大的突破!
更多信息
到目前为止,我有下面的代码(我没有包括昏暗的,因为我觉得它们可能没有必要?),这是我从其他网站上提取的。我还发现,在尝试打开文件夹中的所有文件时,它正在尝试打开自己!如果有人能建议如何改进这一点,我将不胜感激。我已经很久没有使用 VBA 了,并且发现这个任务非常困难!
有时出现的错误框说我需要一个变量 sfilename 的“对象”,但我不确定如何在不弄乱代码的另一部分的情况下做到这一点。
sub import data ()
ChDir ThisWorkbook.Path
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set sfolder = objFSO.GetFolder(ThisWorkbook.Path)
For Each sfilename In sfolder.Files
If sfilename <> "Total Revenue.xlsx" Then
Workbooks.Open Filename:= _
sfilename *'open the file*
Set sfilename = ActiveWorkbook *'set the file name as sfilename, so the single piece of code will work with the copy-loop*
b = Sheets.Count *'for the data-import loop*
Call ImportData *'call in the loop*
sfilename.Close *'close the file*
End If
Next
end sub
【问题讨论】: