Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
uum
Member

Откуда:
Сообщений: 65
Wawan2005
...Подредактируйте пожалуйста, я уже закипаю-((

;) предохранительный клапан найдете в той теме, где Вы начинали - https://www.cyberforum.ru/post15871276.html
23 ноя 21, 17:29    [22399813]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 465
uum,

У меня офис 2007, выше боюсь наши (бюджетные) компы не потянут.
23 ноя 21, 17:33    [22399817]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
uum, можно и так

К сообщению приложен файл (QRкодКвит_2.1.7z.001 - 146Kb) cкачать
23 ноя 21, 20:11    [22399925]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
одним, к сожалению, не влезло

К сообщению приложен файл (QRкодКвит_2.1.7z.002 - 146Kb) cкачать
23 ноя 21, 20:12    [22399926]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
Панург
uum, можно и так
за основу взята БД по ссылке выше 22399813
можно открыть несколько форм квитанций (для каждой записи) - у каждой свой код. Не делал ограничения на количество квитанций (они естественно одинаковые) для одной записи.

Не тестировалось на разных версиях. Делалось на Access 2010 32

Сообщение было отредактировано: 23 ноя 21, 20:23
23 ноя 21, 20:15    [22399931]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
+ таскать ничего не нужно, всё внутри, библиотека какая нужна та и выгрузится.
Не используется ни буфер, ни внешние растры.

Сообщение было отредактировано: 23 ноя 21, 20:22
23 ноя 21, 20:18    [22399936]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 465
Панург,

База QRкодКвит_2.1 вообще не открывается 2007, пишет - "нераспознанный формат базы данных", хотя та по ссылке хотя бы открывалась, не работала правда, ругалась на несовместимость, но распознавалась-)))
А можно её сохранить как для 2007 ????

Сообщение было отредактировано: 23 ноя 21, 22:05
23 ноя 21, 22:04    [22399970]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
vmag
Member

Откуда: MP
Сообщений: 4229
Панург
+ таскать ничего не нужно, всё внутри, библиотека какая нужна та и выгрузится.
Не используется ни буфер, ни внешние растры.


Пример офигительный, всем примерам - пример!
На А2010(32) + W10(64) полет нормальный
На А2010(64) + W10(64) всё работает, ошибок нет, но QR кода нет, пустота, по двойному клику тоже
и там и там выковыривается нужная библиотека...

Сообщение было отредактировано: 23 ноя 21, 23:35
23 ноя 21, 23:32    [22399980]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
vmag
Member

Откуда: MP
Сообщений: 4229
тут упрощенная версия, которая работает от 2002-2003 и выше, с пофиг какой разрядностью...
прописываем пути 4 раза или допиливаем сами как у Панурга...
24 ноя 21, 01:12    [22399999]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
vmag
На А2010(64) + W10(64) всё работает, ошибок нет, но QR кода нет, пустота
это самое главное и было. Но у меня нет А2010(64), потому увы...
24 ноя 21, 04:24    [22400010]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 465
Панург,

Со штрихом разобрался,помогите, пожалуйста, с ПДФ

Вот как у меня сейчас

+
Option Compare Database
Option Explicit
Public ZB1 As String, ZB9 As String, ZU1 As String, ZU9 As String, ZBU1 As String, ZBU9 As String, ZI1 As String, ZI9 As String, _
       ZUI1 As String, ZUI9 As String, B1 As String, qwer1, qwer2, B2 As String, Summ_pr As String, _
       stCriteria As String
Private Const sLibPath$ = "c:\Windows\quricol32.dll"
Private Enum TErrorCorretion
    QualityLow
    QualityMedium
    QualityStandard
    QualityHigh
End Enum

#If VBA7 Then
    Private Declare PtrSafe Sub GenerateBMP _
                Lib "c:\Windows\quricol64.dll" _
                Alias "GenerateBMPW" (ByVal FileName As LongPtr, ByVal Text As LongPtr, _
                ByVal Margin As Long, ByVal Size As Long, ByVal Level As TErrorCorretion)

    Private Declare PtrSafe Sub GenerateBMPToClipboard _
                Lib "c:\Windows\quricol64.dll" _
                Alias "GenerateBMPToClipboardW" (ByVal Text As LongPtr, ByVal Margin As Long, _
                ByVal Size As Long, ByVal Level As TErrorCorretion)
#Else 'For 32-bit office
    Private Declare Sub GenerateBMP _
                Lib "c:\Windows\quricol32.dll" _
                Alias "GenerateBMPW" (ByVal FileName As Long, ByVal Text As Long, _
                ByVal Margin As Long, ByVal Size As Long, ByVal Level As TErrorCorretion)
                
    Private Declare Sub GenerateBMPToClipboard _
                Lib "c:\Windows\quricol32.dll" _
                Alias "GenerateBMPToClipboardW" (ByVal Text As Long, ByVal Margin As Long, _
                ByVal Size As Long, ByVal Level As TErrorCorretion)
#End If
Private Sub cmdIncetrQRCod_Click()
    GenerateBMPToClipboard StrPtr(Me.П_Уважаем1), 3, 5, QualityLow
    Me.objQRCod.Action = acOLEPaste
End Sub
Private Sub Кн_ПечатьPDF_Click()
Dim stDocName As String, path
On Error GoTo Err_
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 'Не знаю, что делает эта команда
    stCriteria = [Код] & "_" & [ФИО]
    DoCmd.OpenForm "Ф_QR_Платёжка", acViewPreview, , stCriteria 'Вывод в отчет закомментарен
    path = CurrentProject.path & "КвитанцииPDF\" & stCriteria & ".pdf"   'Путь к папке размещения
    ExportFormToPDF path & stCriteria & ".pdf"           'Выполнить экспорт в пдф
    DoCmd.OutputTo acOutputForm, acFormatPDF, path  ' acFormatPDF   "Ф_QR_Платёжка"
Exit_:
    Exit Sub
Err_:
    MsgBox Err.Description
    Resume Exit_
End Sub


Ветка 64 бит выделяется красным, хотя всё работает, но я не об этом проблема с созданием файла пдф, помогите исправить, где я накосячил.

Сообщение было отредактировано: 24 ноя 21, 14:23
24 ноя 21, 14:20    [22400198]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 465
Вот конечный результат для единичной распечатки квитанциии

+
Option Compare Database
Option Explicit
Public ZB1 As String, ZB9 As String, ZU1 As String, ZU9 As String, ZBU1 As String, ZBU9 As String, ZI1 As String, ZI9 As String, _
       ZUI1 As String, ZUI9 As String, B1 As String, qwer1, qwer2, B2 As String, Summ_pr As String, _
       stCriteria As String
Private Enum TErrorCorretion
    QualityLow
    QualityMedium
    QualityStandard
    QualityHigh
End Enum
#If VBA7 Then
    Private Declare PtrSafe Sub GenerateBMP _
                Lib "c:\Windows\quricol64.dll" _
                Alias "GenerateBMPW" (ByVal FileName As LongPtr, ByVal Text As LongPtr, _
                ByVal Margin As Long, ByVal Size As Long, ByVal Level As TErrorCorretion)

    Private Declare PtrSafe Sub GenerateBMPToClipboard _
                Lib "c:\Windows\quricol64.dll" _
                Alias "GenerateBMPToClipboardW" (ByVal Text As LongPtr, ByVal Margin As Long, _
                ByVal Size As Long, ByVal Level As TErrorCorretion)
#Else 'For 32-bit office
    Private Declare Sub GenerateBMP _
                Lib "c:\Windows\quricol32.dll" _
                Alias "GenerateBMPW" (ByVal FileName As Long, ByVal Text As Long, _
                ByVal Margin As Long, ByVal Size As Long, ByVal Level As TErrorCorretion)
                
    Private Declare Sub GenerateBMPToClipboard _
                Lib "c:\Windows\quricol32.dll" _
                Alias "GenerateBMPToClipboardW" (ByVal Text As Long, ByVal Margin As Long, _
                ByVal Size As Long, ByVal Level As TErrorCorretion)
#End If
Private Sub cmdIncetrQRCod_Click()
    GenerateBMPToClipboard StrPtr(Me.П_Уважаем1), 3, 5, QualityStandard
    Me.objQRCod.Action = acOLEPaste
End Sub
Private Sub Кн_ПечатьPDF_Click()
Dim stDocName As String, path
On Error GoTo Err_
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 'Не знаю, что делает эта команда
    DoCmd.OutputTo acOutputForm, "Ф_QR_Платёжка", acFormatPDF, _
    CurrentProject.path & "\КвитанцииPDF\" & [Код] & "_" & [ФИО] & ".pdf", False
Exit_:
    Exit Sub
Err_:
    MsgBox Err.Description
    Resume Exit_
End Sub
25 ноя 21, 19:10    [22400885]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
Wawan2005
Вот конечный результат для единичной распечатки квитанциии
25 ноя 21, 19:44    [22400910]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 465
Панург,

пока да, для массовой печати надо думать, и просить, гуру, о помощи -)
25 ноя 21, 21:23    [22400945]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
vmag
Member

Откуда: MP
Сообщений: 4229
Wawan2005,

#If VBA7 Then 

вообще-то определяет версию VBA...
VBA7 появилось начиная с версии акцесса 2010
#If Win64 Then 

Определяет адаптацию VBA к 64 битным системам...
Примеры можно посмотреть тут
Так что не особо доверяй комментариям в чужом коде...
25 ноя 21, 23:54    [22400985]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
vmag
Примеры можно посмотреть тут
очень так себе ссылка - херни там понаворочено. Всё это нужно смотреть прямо на сайте-источнике. Кстати, ссылку я уже давал раньше 22399491.

+
#If Win64 Then
    #If VBA7 Then    ' Windows x64, Office 2010
        Declare PtrSafe Function ...
 'недостижимый код
    #Else    ' Windows x64,Office 2003-2007
        Declare Function...
    #End If
#Else
...


Сообщение было отредактировано: вчера, 05:48
вчера, 05:42    [22401038]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
vmag
Member

Откуда: MP
Сообщений: 4229
Панург,

Почему недостижимый код?
Туда будет залетать, например, офис 2007 64 бита:
Win64 - Да (вход в первый If)
VBA7 - Нет (вход в Else второго If)
Я ту ссылку специально привел, чтоб показать откуда растут ноги трабла из этого топика и его причину...
- Игнорирование Win64 и опускание до VBA7 допустимо только для встроенных 32-разрядных API функций...
- В данном топике речь о вызове внешних 64-разрядных dll, а не API, по этому без использования Win64 никак нельзя обойтись...
Игнорирование Win64 и опускание до только VBA7 в данном случае приведет к:
1. 64 разрядная dll будет вызываться в любом офисе старше 2007, даже в 32 разрядном, хотя и не будет в нем работать.
2. 32 разрядная библиотека будет вызываться в любом офисе младше 2010, даже в 64 разрядном и тоже всё туманно...
вчера, 10:26    [22401109]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
vmag
Туда будет залетать, например, офис 2007 64 бита:
глобальные изменения произошли с 2010. Таким образом хватит
#IF VBA7 then
    'тут декларация одинаковая для 32-64 начиная с 2010
    #If WIN64 then
        'тут декларация специфичная для 64 начиная с 2010
    #Else
        'тут декларация специфичная для 32 начиная с 2010
    #End If
#Else
    'тут декларация одинаковая для всех с 2000 до 2007 включительно
#End If


читайте документацию и ничего не нужно придумывать

Сообщение было отредактировано: вчера, 11:32
вчера, 11:29    [22401143]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
vmag
вызове внешних 64-разрядных dll, а не API
а какая разница?
вчера, 11:31    [22401145]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
vmag
Я ту ссылку специально привел,
а по той ссылке очень "удивится" Access 2007 когда обнаружит тип LongLong
хотя он туда конечно никогда не попадёт

vmag
Туда будет залетать, например, офис 2007 64 бита:
Win64 - Да (вход в первый If)

https://docs.microsoft.com/ru-ru/office/vba/language/concepts/getting-started/64-bit-visual-basic-for-applications-overview
Написание кода, который работает как в Office 2010 (32-разрядный или 64-разрядный пакет), так и в предыдущих версиях Office
Чтобы написать код, работающий как в новой, так и в старой версиях Office, можно использовать комбинацию новых условных констант компилятора VBA7 и Win64...
Новых, Карл! Access 2007 об этих константах ничего не знает

Сообщение было отредактировано: вчера, 11:45
вчера, 11:35    [22401148]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
vmag
Member

Откуда: MP
Сообщений: 4229
Панург
читайте документацию и ничего не нужно придумывать

хорошо, не будем ничего придумывать...
1. Есть офис 2007 32 бита и есть офис 2007 64 бита и есть внешние dll 32 бита и 64 бита, которые нужно дергать из этих офисов соответственно...
2. Судя по вашему коду мы подаем сразу в любом случае с этими dll в Else первого IF ибо 2007 это не VBA7 и чо?
еще раз лепим #If WIN64 then ?
вчера, 11:48    [22401160]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
кстати, я даже не помню есть ли Access 2007 х64. Если и есть, то это такая же редкость, как WinXP x64

Сообщение было отредактировано: вчера, 11:52
вчера, 11:51    [22401163]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 5359
vmag
еще раз лепим #If WIN64 then ?
нет, читай внимательней 22401148
вчера, 11:53    [22401165]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
vmag
Member

Откуда: MP
Сообщений: 4229
Панург
vmag
вызове внешних 64-разрядных dll, а не API
а какая разница?


разница в том, что адаптации API под 64 достаточно перед Function поставить PtrSafe, и если есть в конце As Long, то заменить его тупо на As LongPtr и всё взлетит ибо это одна и та же dll...
а внешние dll 32 и 64 это разные файлы и чаще всего по разному обзываются...
вчера, 11:57    [22401169]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, адаптировать код из VBA Excel в VBA Access  [new]
vmag
Member

Откуда: MP
Сообщений: 4229
Панург,

Ладно, спор затянулся, мы уже и так почти всех запутали...
- У меня лично с этим вопросом проблем нет, кроме - одной приходится таскать два дистрибутива (под 32 и 64)
- У тебя похоже тоже проблем нет (как и офиса 64)


Сообщение было отредактировано: вчера, 12:04
вчера, 12:02    [22401173]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить