2012-07-19 73 views
1

我最近從PC更改爲Mac。我運行了很多宏,其中99%運行正常,但我有一個在Mac上無法運行。傳輸特定於Windows的宏以在Mac上運行Excel

它在文件中的所有工作簿上運行一組其他宏。要做到這一點,它使用的字符串是這樣的:

Function BrowseFolder(Title As String, _ Optional InitialFolder As String = vbNullString, _ Optional InitialView As Office.MsoFileDialogView = _ msoFileDialogViewList) As String

當我嘗試在Mac其上運行該回來了一個錯誤:

"compile error: variable not defined"

我不知道是否有人能幫助我端起這個宏在Mac上運行。它建立在Excel 2007 Windows上,我試圖在Excel 2011 Mac上運行它。

Option Explicit 

Function GetFolder(Optional strPath As String) As String 
Dim fldr As FileDialog 
Dim sItem As String 
Set fldr = Application.FileDialog(msoFileDialogFolderPicker) 
With fldr 
    .Title = "Select a Folder" 
    .AllowMultiSelect = False 
    If Not IsEmpty(strPath) Then 
     .InitialFileName = strPath 
    End If 
    If .Show <> -1 Then GoTo NextCode 
    sItem = .SelectedItems(1) 
End With 
NextCode: 
GetFolder = sItem 
Set fldr = Nothing 
End Function 

Private Sub test() 
Dim v As Variant 

'V = GetFolder() 
v = BrowseFolder("Select folder") 
End Sub 

Function BrowseFolder(Title As String, _ 
     Optional InitialFolder As String = vbNullString, _ 
     Optional InitialView As Office.MsoFileDialogView = _ 
      msoFileDialogViewList) As String 
    Dim v As Variant 
    Dim InitFolder As String 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     .Title = Title 
     .InitialView = InitialView 
     If Len(InitialFolder) > 0 Then 
      If Dir(InitialFolder, vbDirectory) <> vbNullString Then 
       InitFolder = InitialFolder 
       If Right(InitFolder, 1) <> "\" Then 
        InitFolder = InitFolder & "\" 
       End If 
       .InitialFileName = InitFolder 
      End If 
     End If 
     .Show 
     On Error Resume Next 
      Err.Clear 
      v = .SelectedItems(1) 
      If Err.Number <> 0 Then 
       v = vbNullString 
      End If 
     End With 
    BrowseFolder = CStr(v) 
End Function 
+0

「當我嘗試在Mac上運行它時,它返回一個錯誤」...並且該錯誤將是...? – LittleBobbyTables 2012-07-19 19:58:04

+0

我得到的錯誤是「編譯錯誤:變量未定義」 – sam 2012-07-19 19:59:43

+0

上面代碼中的哪一行表示錯誤? – LittleBobbyTables 2012-07-19 20:01:15

回答

1

msoFileDialogViewList指的是Windows標準文件對話框的特定視圖。 Mac標準文件對話框沒有等效模式;我的猜測是InitialView參數要麼不存在,要麼在Mac平臺上被忽略。

我建議或者完全去除所述參數或使用等效的整數值(1)代替的符號名。