2011-01-14 53 views
2

我的問題是我需要使用VBA打開一些excel文件(用於excel 2007)並提取數據。我想要打開的所有文件都稱爲「January.xlsx的利潤」,「February.xlsx的利潤」等等,僅更改月份名稱,所以我想打開一個名爲「profit for *」的文件。文件夾中有另一個名爲「total revenue.xlsx」的文件,我不想打開它。如何使用vba打開具有通用名稱的文件中的某些excel文件夾

如果可能,我需要代碼從文件夾中的文件中提取數據,無論文件夾在哪裏,因爲我將此代碼發送給我的同事放入其自己的文件夾中,這些文件夾具有相同的文件名格式但是不同的路徑。

我有代碼提取數據,它的工作原理,但它可以導入文件夾中的所有數據或根本沒有!

任何對此的幫助將非常感謝,因爲我是一個實習生,試圖讓他的腳在門口,這對我來說將是一個很大的突破!

更多信息

到目前爲止,我有下面的代碼(因爲我覺得他們可能是不必要的我沒有將昏暗的?),這是我從其他網站抽取。我也發現,在試圖打開文件夾中的所有文件時,它試圖打開它自己!如果任何人都可以建議如何改善這一點,我會非常感激。我一直沒有使用VBA,並且一直在找這份工作非常艱難!

出現的錯誤框有時會說我需要一個'object'作爲變量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 

回答

0

你現在在用什麼?對於文件夾中的每個文件?

可能性包括

  • FileSystemObject的
  • 風向
  • 對於i = 1至12
    MONTHNAME(ⅰ)

EDIT

Sub import_data() 

    sPath = ThisWorkbook.Path 
    sTemplate = "\profit for qqq.xls" 

    For i = 1 To 12 
     sFileName = Replace(sTemplate, "qqq", MonthName(i)) 

     ''Just checking 
     If Dir(sPath & sFileName) <> "" Then 
      Workbooks.Open Filename:= _ 
       sPath & 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 
0

所以發r我有下面的代碼(我沒有包含暗淡的東西,因爲我覺得它們可能是不必要的),我從其他網站上得到這些代碼。我也發現,在試圖打開文件夾中的所有文件時,它試圖打開它自己!如果任何人都可以建議如何改善這一點,我會非常感激。我一直沒有使用VBA,並且一直在找這份工作非常艱難!

出現的錯誤框有時會說我需要一個'object'作爲變量sfilename,並且我不確定如何做到這一點而不會搞亂另一部分代碼。

非常感謝和親切的問候, 馬克

子進口數據()

CHDIR的ThisWorkbook。路徑

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 

末次

+0

嗨,馬克在SO,這個區域是保留給答案。我將編輯您的文章以包含此部分,並且您可以請求將其刪除。好的? :) – Fionnuala 2011-01-14 16:20:47

相關問題