Excel VBA 7.1 comdlg - PullRequest
       3

Excel VBA 7.1 comdlg

1 голос
/ 21 апреля 2020

Это для макроса VBA 7.1 Excel. Я пытаюсь экспортировать файл в папку, и в этой части происходит сбой.

Ошибка, с которой я сталкиваюсь: «Не удается найти проект или библиотеку». Ссылка не найдена, это "comDlg". Я знаю, что это ошибка ссылки. Однако я не уверен, как ее решить.

Private Sub cmdBrowse_Click()
comDlg.Filter = "XML Files"
comDlg.DialogTitle = "Save Export File As..."
comDlg.ShowSave

txtExportFile.Text = comDlg.Filename

У меня была такая же проблема с вызовом функции UCase (), ее решил простой VBA.UCase (). Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Я считаю, что этот лист макросов / Excel был создан в более старой версии и перенесен на 64-битную Windows 10.

1 Ответ

3 голосов
/ 22 апреля 2020

Вы пытаетесь использовать элементы управления VB6, которые не поддерживаются в 64-битном хосте VBA. Попробуйте установить 32-разрядную версию Excel, но рассмотрите возможность использования Application.GetSaveAsFileName / GetOpenFileName для такого рода вещей:

Private Sub cmdBrowse_Click()
    Dim promptResult As Variant
    promptResult = Application.GetSaveAsFilename("file.xml", "XML Files (*.xml),*.xml", 1, "Save Export File As...")
    If VarType(promptResult) = vbBoolean Then Exit Sub 'prompt was cancelled
    txtExportFile.Text = CStr(promptResult)
End Sub

Что касается VBA, которая не может разрешить функцию UCase, ... дикие вещи произойдет с испорченными ссылками на проекты: я ожидаю, что они будут удалены на go после удаления из проекта устаревших 32-битных компонентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...