2013-05-02 75 views
1

我正在設置一個宏來打開目錄中的所有文件,並將每個文件夾中的某個選項卡複製到一個組合文件(將它們合併到一個工作簿中)。我有兩個問題。首先,這些文件受密碼保護 - 因此,當我使用此行時,它會打開文件。Excel密碼和雕刻標籤名稱

Set gwkbInputdata = Workbooks.Open(gRnCT_File_Loc & gsInputFileName) 

但是,當它被密碼保護時,它會失敗。所以我加入了以下內容,但仍然失敗。

Set gwkbInputdata = Workbooks.Open(gRnCT_File_Loc & gsInputFileName),Password = "openfile" 

第二個問題 - 當我複製標籤(表),我想用他們的文件名命名他們。但是文件名太長 - 所以我想把名稱命名爲第一個空格(例如「Test file May 13」=表名「Test」)。我如何獲得此代碼的工作。

任何幫助非常感謝。

全部下面的代碼:

* gRnCT_File_Loc =目錄位置。 * gsInputFileName =文件名。

Code to date: 

Sub Pulldata() 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

Set gRwksconfigeration = Sheets(gcsConfigSheetName) 
gRnCT_File_Loc = gRwksconfigeration.Range(CT_File_Loc) 
gRnCT_Tab_Search = gRwksconfigeration.Range(CT_Tab_Search) 
gsInputFileName = Dir(gRnCT_File_Loc) 
Set gwkscurrent = ActiveWorkbook 

For Each ws In ThisWorkbook.Worksheets 
     If ws.Name <> gcsConfigSheetName Then ws.Delete 
Next ws 

Do 
    On Error GoTo err: 
     Set gwkbInputdata = Workbooks.Open(gRnCT_File_Loc & gsInputFileName) 
    On Error GoTo 0 

    On Error GoTo err1: 
     With Sheets(gRnCT_Tab_Search) 
    On Error GoTo 0 

     End With 

gsInputFileName = Dir 
Loop Until gsInputFileName = vbNullString 

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 

Exit Sub 

err: 
    MsgBox ("No files or files in incorrect format in " & gRnCT_File_Loc) 
    Application.ScreenUpdating = True 
    Application.DisplayAlerts = True 
    Exit Sub 
err1: 
    MsgBox ("Sheet " & gRnCT_Tab_Search & " doesn't exist in file " & gsInputFileName) 
    Application.ScreenUpdating = True 
    Application.DisplayAlerts = True 
    Resume Next 

End Sub 

回答

2

您的密碼後缺少:

Set gwkbInputdata = Workbooks.Open(gRnCT_File_Loc & gsInputFileName),Password = "openfile" 

應該是:

Set gwkbInputdata = Workbooks.Open(gRnCT_File_Loc & gsInputFileName,Password:="openfile") 

你可以使用split使用空格作爲定界符例如你的第二個問題

Split(str, " ")(0) 

其中str是該文件的原始名稱例如「測試文件5月13日」

+1

請包括',括號內password'部分是精確...... – 2013-05-02 14:42:49

+0

謝謝非常感謝您的支持。不勝感激。 Alistair - 當我添加缺失的「:」(我正在買眼鏡) - 我收到一個編譯錯誤:預期:此時聲明結束「,」password:=「測試」「,」似乎是問題但我看不到它。 – user1624926 2013-05-02 14:54:50

+0

+ 1 good catch :) – 2013-05-02 15:17:42

3

有關獲取文件名的第1部分的第二個問題,請嘗試:

if(instr(gsInputFileName," ") > 0 
    then short_file_name=left(gsInputFileName,instr(gsInputFileName," ")-1) 
    else short_file_name=gsInputFileName 
    endif 
+0

+ 1使用'instr' :)進行錯誤檢查 – 2013-05-02 15:18:28