2017-11-08 8 views
0

変数を使用してパスを書き込まずにExcel xlsxファイルを開きたいとします。私は理由を知っていませんが、うまくいきません。私は、メインのブックと、xlsxを開く別の1つのフォルダを持っています。私はそれをUnionWBと名づけたい。私は誰かが助けることができればすばらしいだろう。Excel VBA xlsxファイルをフォルダから書き込みパスなし

Private Sub cmdStartMonth_Click() 
    'Optimize Macro Speed 
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 
    'Analyze month by selecting 
    Dim myPath As String 
    Dim myFile As String 
    Dim UnionWB As Workbook 
    Dim MonthName As String 
    MonthName = ListMonth.Value 
    myExtension = "*.xlsx*" 
    Set UnionWB = Workbooks.Open(ThisWorkbook.Path & myExtension) 

    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
    End Sub 

設定UnionWB = Workbooks.Open(ThisWorkbook.Path & myExtension)

+0

コンピュータ上のファイルはどこですか?動的でなければ、フォルダパスを宣言すると何が問題になりますか? – Luuklag

+0

私はそれが動的になりたい。フォルダ名は英語ではないので、コードで使用することはできません。 @Luuklag –

+0

@Luuklagあなたは編集の意味を理解しましたか? –

答えて

2

ここで役立つかもしれないいくつかの例を示します。

最初は、正しいファイルを選択するように求め、その後、それを開きます:

Public Sub Test() 

    Dim sWrkbkPath As String 
    Dim UnionWB As Workbook 

    sWrkbkPath = GetFile(ThisWorkbook.Path) 
    If sWrkbkPath <> "" Then 
     Set UnionWB = Workbooks.Open(sWrkbkPath) 
     MsgBox UnionWB.Name 
    End If 

End Sub 

Function GetFile(Optional startFolder As Variant = -1) As Variant 
    Dim fle As FileDialog 
    Dim vItem As Variant 
    Set fle = Application.FileDialog(msoFileDialogFilePicker) 
    With fle 
     .Title = "Select your Union Workbook" 
     .AllowMultiSelect = False 
     .Filters.Add "My Union Workbook", "*.xlsx", 1 
     If startFolder = -1 Then 
      .InitialFileName = Application.DefaultFilePath 
     Else 
      If Right(startFolder, 1) <> "\" Then 
       .InitialFileName = startFolder & "\" 
      Else 
       .InitialFileName = startFolder 
      End If 
     End If 
     If .Show <> -1 Then GoTo NextCode 
     vItem = .SelectedItems(1) 
    End With 
NextCode: 
    GetFile = vItem 
    Set fle = Nothing 
End Function 

第2の方法は、あなただけはThisWorkbookと同じフォルダ内の単一のxlsxファイルを持っていると仮定し、最初に見つかったファイルを開きます:

Public Sub OpenOnlyXLSXInFolder() 
    Dim sWrkbkPath As String 
    Dim UnionWB As Workbook 
    sWrkbkPath = Dir$(ThisWorkbook.Path & "\*.xlsx") 

    'Only expecting a single file so no need to loop. 
    If sWrkbkPath <> "" Then 
     Set UnionWB = Workbooks.Open(ThisWorkbook.Path & "\" & sWrkbkPath) 
     MsgBox UnionWB.Name 
    End If 

End Sub 
+0

2番目のサブが私の必要とするものですが、何とかそれは正しい名前のファイルを見つけることができず、フォルダ内の唯一のxlsxファイルです –

+0

" "bla bla"を見つけてください。削除、名前変更、削除が可能ですか? –

+0

これらの2つのファイルはフォルダ内の唯一のファイルですが、それでもフォルダ内のxlsxファイルを見つけることができないマッサージボックスが表示されます。 –

関連する問題