標題:
關於:VBA Function的問題
[打印本頁]
作者:
play9091
時間:
2011-7-27 10:36
標題:
關於:VBA Function的問題
我在網路上找到一個可以取得檔名的VBA,但是它是用Function寫的!!!
如下……
'Description:取得活頁簿目錄或底下目錄的全部(指定)檔案名稱集合 - Ver. 1.05
'Parameters:wb 活頁簿、strSplitChar 分隔字元、strFolderPath 活頁簿底下目錄的路徑、strExtension 指定的副檔名
'Retrun:String
'Package:
'Reference:Microsoft Scripting Runtime
'Creater:Darren.NET - 2009/04/17
'Modify:
Public Function F_File_GetFileNameArry(wb As Workbook, strSplitChar As String, strFolderPath As String, strExtension As String) As String
Dim fsoFiles As Scripting.FileSystemObject
Dim fsoExtension As Scripting.FileSystemObject
Dim files As Scripting.files
Dim file As Scripting.file
Dim strCompletePath As String
Set fsoFiles = New Scripting.FileSystemObject
Set fsoExtension = New Scripting.FileSystemObject
'判斷路徑(strFolderPath 是否有值),若不為空完整路徑為活頁簿所在路徑+底下目錄路徑,
' 若是空代表為完整路徑即為活頁簿所在路徑
If strFolderPath <> "" Then
strCompletePath = wb.Path & strFolderPath
Else: strCompletePath = wb.Path
End If
'取得完整路徑目錄下的全部檔案集合
Set files = fsoFiles.GetFolder(strCompletePath).files
'判斷是否有指定副檔名(strExtension 是否有值),若不為空(有指定)則須過濾檔案,
' 若是指定的副檔名才加入字串;若為空表示全部檔案名稱加入字串
If strExtension <> "" Then
For Each file In files
If UCase(fsoExtension.GetExtensionName(file.Name)) = UCase(strExtension) Then
If F_File_GetFileNameArry <> "" Then
F_File_GetFileNameArry = F_File_GetFileNameArry + strSplitChar + file.Name
Else: F_File_GetFileNameArry = file.Name
End If
End If
Next
Else
For Each file In files
If F_File_GetFileNameArry <> "" Then
F_File_GetFileNameArry = F_File_GetFileNameArry + strSplitChar + file.Name
Else: F_File_GetFileNameArry = file.Name
End If
Next
End If
Set fsoFiles = Nothing
Set fsoExtension = Nothing
Set files = Nothing
Set file = Nothing
End Function
複製代碼
小弟第一次看到這種東西,請教一下
一、Function的用途是什麼??
二、Function如何使用?
三、什麼樣子的情況下會用到Function?
作者:
GBKEE
時間:
2011-7-27 10:54
回復
1#
play9091
Function: 函數 ,Excel 已建立許多的函數 , 可自訂 Function 可依個人需求量身訂做 ,來使用
例: 在一般模組 (Module) 內有
Function
Play9091()
'''''
'''
End
Function
可在如圖使用
[attach]7146[/attach]
作者:
play9091
時間:
2011-7-27 11:49
回復
2#
GBKEE
剛剛試用了一下的確是可以用的,又學到一招了……
另外,關於昨天請教先進的「貼上值的」問題,今天又遇到了,我真的不知道是哪裡有問題也……把圖貼出來給您看一下!
作者:
GBKEE
時間:
2011-7-27 13:40
本帖最後由 GBKEE 於 2011-7-27 13:43 編輯
回復
3#
play9091
陣列索引超出範圍
的意思是找不到
檢查 WorkBooks(
Main
).Sheets(
Re
). Cells(
NoR
) ....的變數是否正確
作者:
play9091
時間:
2011-7-27 14:20
本帖最後由 play9091 於 2011-7-27 14:25 編輯
回復
4#
GBKEE
是我粗心……沒有打對正確的變數……
想再請教……如果開啟檔案的時候會問,更新連結。那個視窗有沒有辦法不讓它出現……
作者:
GBKEE
時間:
2011-7-27 14:28
本帖最後由 GBKEE 於 2011-7-27 15:30 編輯
回復
5#
play9091
Option Explicit 陳述式 在模組層次中強迫每個在模組�堛瘍僂くㄔ眸楨�確的宣告。
如此 變數打錯立刻知道
如圖
[attach]7150[/attach]
作者:
oobird
時間:
2011-7-27 14:30
看起來Sheets(Re). 工作表名不合法。為什麼有問號產生?
作者:
GBKEE
時間:
2011-7-27 16:09
回復
5#
play9091
更新連結。那個視窗有沒有辦法不讓它出現……
DEE連結 =
Excel|aa.xls!aa
沒辦法
公式連結='D:\試算表\aa.xls'!aa
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
複製代碼
[attach]7152[/attach]
作者:
play9091
時間:
2011-7-27 16:54
回復
8#
GBKEE
哈!還是不行,我叫他們自已按「不要更新」好了!!!
作者:
Hsieh
時間:
2011-7-27 18:41
回復
9#
play9091
Workbooks.Open Filename:=路徑,UpdateLinks:=False
作者:
play9091
時間:
2011-7-28 00:43
回復
10#
Hsieh
的確可以了……感謝超版……留下收長…學習以後用!!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)