【问题标题】:Use ChDrive & Chdir for Excel via Word VBA project通过 Word VBA 项目使用 ChDrive & Chdir for Excel
【发布时间】:2014-04-26 03:54:08
【问题描述】:

所以,我在让 ChDrive 和 ChDir 与 Excel.Application.GetOpenFilename 一起正常工作时遇到了一些问题。当我在 Excel VBA 项目中使用命令时,它工作正常:

drive = Split(ActiveDocument.Path, ":")(0)
loc = Split(ActiveDocument.Path, ":")(1)
ChDrive drive
ChDir loc
exfile = exApp.GetOpenFilename("Microsoft Excel (*.xl*),*.xl*")
Set exBk = exApp.Workbooks.Open(exfile)

但是,当我从 Word 项目执行此操作时,它仍会访问默认文件夹 (MyDocuments)。

我尝试在运行 ChDrive/ChDir 命令之前打开 excel 实例并使其可见(如下所示),但无济于事 - GetOpenFilename 仍默认为 MyDocuments。

Dim exApp As Excel.Application
Dim exBk As Excel.Workbook
Set exApp = CreateObject("Excel.Application")

select_workbook:

    'user defines Excel workbook to paste into
Word.Application.Activate
    'Set exBk = exApp.Workbooks.Add
    drive = Split(ActiveDocument.Path, ":")(0)
    loc = Split(ActiveDocument.Path, ":")(1)
    exApp.Visible = True
    ChDrive drive
    ChDir loc
    MsgBox CurDir
   '    CurDir() = ActiveDocument.Path
    exfile = exApp.GetOpenFilename("Microsoft Excel (*.xl*),*.xl*")

关于如何从 Word VBA 项目中为 Excel 设置 CurDir 有什么想法吗?

提前感谢您的任何建议。

【问题讨论】:

  • 也只是尝试在 ChDrive 和 ChDir 命令之前添加“Set exBk = exApp.Workbooks.Add Excel.Application.ActiveWorkbook.Activate”,结果相同,或者没有任何结果,而是跨度>

标签: excel vba ms-word


【解决方案1】:

ChDriveChDir 都为 Word 应用程序调用,而不是 Excel 应用程序。

我建议使用不同类型的对话框 - FileDialog 而不是 GetOpenFileName

尝试这样的事情(未完全测试,可能需要一些更改):

Dim FD As FileDialog
    Set FD = exApp.FileDialog(msoFileDialogFilePicker)
    With FD
        .InitialFileName = ActiveDocument.Path
        .Show
    End With
    Dim exFile As String
    exFile = FD.SelectedItems(1)

【讨论】:

  • 太棒了!绝对可以,感谢您的帮助 - 我以前没有见过 FileDialog 命令树。看不到通过 VBA 为 .show 过滤结果的方法,但处理它肯定比浏览文件夹更容易。当我有代表权时会投票赞成......
猜你喜欢
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
相关资源
最近更新 更多