SQL запрос длиннее 255 символов

Автор Посетитель 20.11.2024, 19 ноября 2024, 10:15

Посетитель 20.11.2024

Доброго времени суток форумчане.
Есть проблема с макросом. Работает через раз. В ситуации с длиной строки sql запроса длиннее 255 символов макрос выдает ошибку, что логично. Но мне не понятно, как это пофиксить.
Прикладываю макрос и примеры файлов с которыми он должен работать.

Прошу прощения за новую тему. Не нашел ничего похожего по форуму. Если подскажите буду благодарен и перенесу в соответствующий раздел.

Макрос
Sub Stamp()

Dim fso As Object
Dim conn As Object
Dim fsoFile As Object
Dim folderPath As String

Application.ScreenUpdating = False

folderPath = ActiveDocument.Path

Set fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set fsoFile = fso.GetFile(folderPath & "\øòàìï.xlsx")
On Error GoTo 0
If fsoFile Is Nothing Then
MsgBox "Штамп не найден!"

Application.ScreenUpdating = True
Exit Sub
Else
folderPath = folderPath & "\штамп.xlsx"

With ActiveDocument.MailMerge
  .OpenDataSource _
    Name:=folderPath, _
    ConfirmConversions:=False, _
    ReadOnly:=False, _
    LinkToSource:=True, _
    AddToRecentFiles:=False, _
    PasswordDocument:="", _
    PasswordTemplate:="", _
    WritePasswordDocument:="", _
    WritePasswordTemplate:="", _
    Revert:=False, _
    Format:=wdOpenFormatAuto, _
    Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & folderPath & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Regis", _
    SQLStatement:="SELECT * FROM `Штамп$`", _
    SQLStatement1:="", _
    SubType:=wdMergeSubTypeAccess
  .ViewMailMergeFieldCodes = False
End With

' Восстанавливаем обновление экрана
Application.ScreenUpdating = True

MsgBox "Обновление штампа прошло успешно"

End If

End Sub
[свернуть]

Администратор

Вы в эту строку:
SQLStatement:="SELECT * FROM `Штамп$`",

вместо:
SELECT * FROM `Штамп$`

пишите другой sql-запрос, длина которого больше 255 символов?

Посетитель 20.11.2024

Нет. Код остается в таком виде, как Я его опубликовал, в некоторых случаях код работает корректно, а в некоторых выдает ошибку Run-time error `9105` длина строки превышает 255 символов. Кнопка дебаг отправляет меня в метод MailMerge.OpenDataSource. Я и подумал что вся проблема скрыта именно в sql запросе.
Я пробовал построчно запустить (F8) и посмотреть что как меняется, но не смог разобраться. Поскольку как только попадаю в MailMerge.OpenDataSource получаю ошибку.

Возможно тут скрыта иная проблема, которая мне не ведома.
Поясню, что по моей задумке активный файл ворд должен подгружать данные из файла штамп, который находится с ним в одной папке, папки лежат на общем рабочем сервере и полная длинна пути не превышает 255 символов.

К примеру:
[УДАЛЕНО, Т.К. МОЖЕТ БЫТЬ КОНФИДЕНЦИАЛЬНАЯ ИНФОРМАЦИЯ]

Администратор

Запустите макрос, дождитесь ошибки.
1. Сделайте скриншот сообщения, в котором ошибка.
2. Нажмите в сообщении кнопку "Debug", отобразится VBA и в нём будет выделена строка жёлтым. Сделайте скриншот жёлтой строки.

Посетитель 20.11.2024

Пожалуйста

Администратор

И ещё нужно скриншот сообщения.

Посетитель 20.11.2024

Вот