標題:
[發問]
不開啟excel文件能知道這文件里有沒有名為"ABC"的sheet?
[打印本頁]
作者:
mhl9mhl9
時間:
2015-8-10 22:49
標題:
不開啟excel文件能知道這文件里有沒有名為"ABC"的sheet?
本帖最後由 mhl9mhl9 於 2015-8-10 23:01 編輯
公司資料庫改了文件格式(分各公司改的日期不統一),我要從不同格式的文件里取數據,必須先知道文件是新格式還是舊格式,現在想在取資料前先知道文件里有沒有一個名為"ABC"的sheet,因為舊文件沒有"ABC"sheet,有"ABC"sheet的就一定是新格式,能有方法知道嗎?
從文件名無法區別,因為所有文件都是01,02,03,04.....
從日期也無法區別,因為各分公司沒有統一的日期改版....
現在想到能區別新版舊版的方法就是文件里有沒有sheets("ABC").....
請各位高手幫幫我,多謝了!
知道文件路徑,文件名,sheet名和儲存格參數,有公式可以不開啟該文件而取得該指定的儲存格的值,公式出錯就是舊格式文件(因為舊格式文件里沒有sheet("Abc"),不出錯就是新格式文件,我看此方法可能行得通,但可能會拖慢程序,是不是有更簡單有效的方法區別新舊格式的文件,求高手顯靈相助.
作者:
mark15jill
時間:
2015-8-11 12:31
回復
1#
mhl9mhl9
基本架構供您參考
Sub IsSheetExist()
Dim ws As Worksheet
Dim sName As String
sName = "一月" '指定工作表
On Error Resume Next
Set ws = Sheets(sName)
If ws Is Nothing Then '指定的工作表不存在
Sheets.Add.Name = sName
Else '指定的工作表已存在
MsgBox "“" & sName & "”工作表已存在。"
ws.Activate
End If
End Sub
複製代碼
作者:
mhl9mhl9
時間:
2015-8-12 17:34
回復
2#
mark15jill
可能我陳述不清楚,我的要求是"不開啟excel文件,如何知道某文件里有某sheet存在",所以你的做法不能用,我自己寫了個function,已經用上,不太影響程序執行速度.
''''測試文件fl(fl是文件的路徑)里有沒有sheets("Test A"),而該sheet的[A1]="ABC"
Function Benew(fl$) As Boolean
Dim Fname$, Fpath$, temp$, temp2
Fname = Right(fl, Len(fl) - InStrRev(fl, "\"))
Fpath = Replace(fl, Fname, "")
On Error Resume Next
temp = "'" & Fpath & "[" & Fname & "]Test A'!R1C1"
temp2 = Application.ExecuteExcel4Macro(temp)
Benew = IIf(temp2 = "ABC", True, False)
End Function
我要從55000個文件提取資料.因為這些文件有2種不同格式,其中1種格式是文件里有張sheet,名為"Test A",而且Test A頁的[a1]="ABC"
我現在利用上面function,即時可以區分這55000文件,哪些是第一種格式,哪些是第二種格式,然後用不同的方法取資料.並不十分影響速度.
因為固定格式的資料里必定有某固定位置的值是固定的,上面取的[a1]="ABC"就是固定位的意思示意.
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)