繁体   English   中英

如何使用路径文件打开工作簿?

[英]How to open a workbooks with the path file?

我正在努力使用 Workbooks()。 在下面的代码中,我希望用户选择文件并从对话框中获取路径文件。 所有这些步骤都有效。 但是我正在努力使用pathKeys 似乎当我编写Workbooks(pathkeys)时出现错误 9(Script our of range)。

Sub getData()

    Dim diagBoxkeys As FileDialog
    Dim pathKeys As String
    
    Set diagBoxkeys = Application.FileDialog(msoFileDialogFilePicker)
    diagBoxkeys.Title = "Keys File " & FileType
    diagBoxkeys.Filters.Clear
    diagBoxkeys.Show
    If diagBoxkeys.SelectedItems.Count = 1 Then
        pathKeys = diagBoxkeys.SelectedItems(1)
    End If
  
    MsgBox (pathKeys)
    Dim wbKeys As Workbook
    ScreenUpdating = False
 
    Set wbKeys = GetObject(pathKeys)
    Workbooks(pathKeys).Worksheets(1).Columns(2).Copy Destination:=Workbooks("Macro_PORTAL_APRR.xlsm").Worksheets(1).Columns(1)  
    wbKeys.Close Savechanges:=False
 
End Sub

但是,当我在此代码Workbooks(pathKeys)替换为Workbooks("Keys_2021-12-27_13_43_21_utf-8.csv")时,它可以完美运行。

我不明白为什么 pathKeys 不被接受为pathKeys = C:\Users\tn5809\Documents\PROJETS\PORTAL_APRR\Keys_2021-12-27_13_43_21_utf-8.csv

我究竟做错了什么?

这可能对您更有效。

'This should appear at the top of all modules.
'It forces you to declare all variables.
'Tools ~ Options ~ Require Variable Declaration.
Option Explicit

Public Sub GetData()
    
    '*** If Macro_Portal is not file containing this code: ***
    Dim MacroPortalPath As String
    MacroPortalPath = OpenFile ' or MacroPortalPath = "C:\...\...\Macro_PORTAL_APRR.xlsm"
    Dim MacroPortal As Workbook
    MacroPortal = Workbooks.Open(MacroPortalPath)
    '*** If Macro Portal is the file containing this code: ***
    'Dim MacroPortal As Workbook
    'Set MacroPortal = ThisWorkbook
    
    Dim pathKeys As String
    pathKeys = OpenFile
    
    If pathKeys <> "" Then
        Dim wrkBk As Workbook
        Set wrkBk = Workbooks.Open(pathKeys)
        
        'Best to use sheet name rather than where it is in workbook (can be moved by user).
        'You could replace MacroPortal with ThisWorkbook and remove first block of code in this procedure.
        wrkBk.Worksheets("Sheet1").columns2.Copy Destination:=MacroPortal.Worksheets("Sheet1").Column(1)
        wrkBk.Close SaveChanges:=False
        
    End If
    
End Sub

Public Function OpenFile() As String

    Dim dialogBox As FileDialog
    Set dialogBox = Application.FileDialog(msoFileDialogFilePicker)
    
    With dialogBox
        .Title = "Keys File"
        .AllowMultiSelect = False
        .InitialFileName = "C:\"
        If .Show = -1 Then
            OpenFile = .SelectedItems(1)
        End If
    End With

End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM