Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 88

Экспорт из Access в Excel с последующим форматированием

29.07.2017, 03:46. Показов 3659. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Есть частично рабочий код экспорта и форматирования данных из Access в Excel.
Есть ошибка в коде которая возникает каждый раз когда Excel приложение было не полностью закрыто. Ошибка возникает "через раз".
--Первый раз я экспортирую таблицу, форматирую.
--Все работает.
--Затем я пытаюсь повторить операцию и ошибка возникает на первой строке процедуры форматирования.
--Я закрываю обработчик ошибок, захожу в диспетчер задач, убиваю excel процесс, вновь запуская процесс экспортирования/форматирования - все ра-ботает.

Что примечательно - если я собираюсь во второй раз экспортировать ексель и знаю же что выскочит ошибка и удаляю в диспетчере задач ексель процесс, ТО ВСЕ РАВНО ВОЗНИКАЕТ ОШИБКА в начале процедуры форматирования.

Код не корректно написан, где то есть ошибка, но я никак не могу понять где.
ПОМОГИТЕ ПОЖАЛУЙСТА КТО МОЖЕТ!!!


Вот он код (форматирование - это просто скопированный макрос из ексель-макрос-рекордера):

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Public Sub Prozedur_MB_8()
  
    'definieren ***********
                        
    Dim objExcelApp As Excel.Application
    Dim objWorkbook As Excel.Workbook
    Dim objSheet As Excel.Worksheet
    Dim strPath As String
    Dim i As Integer
    Dim r As String
    Dim N As String
                            
                        
    r = Format(Now, "yyyy.mm.dd_hh.mm")
    Forms!MAINMENU.varTime = r
    
    If Forms!MAINMENU.varBST = "M" Then
            N = "\MB-Vorschlag_SITTENSEN_" & r
            Else
    If Forms!MAINMENU.varBST = "T" Then
            N = "\TB-Vorschlag_SITTENSEN_" & r
            Else
    End If
    End If
    
    
   
    'lцschen (alte Datei), speichern(neue Datei) ***********
    
    If Dir(CurrentProject.Path & N & ".xlsx") <> "" Then
       Kill CurrentProject.Path & N & ".xlsx"
         
         DoCmd.TransferSpreadsheet transfertype:=acExport _
     , spreadsheettype:=acSpreadsheetTypeExcel12Xml _
     , TableName:="0180_xSITTENSEN", FileName:=CurrentProject.Path & N & ".xlsx"
     
    Else: DoCmd.TransferSpreadsheet transfertype:=acExport _
     , spreadsheettype:=acSpreadsheetTypeExcel12Xml _
     , TableName:="0180_xSITTENSEN", FileName:=CurrentProject.Path & N & ".xlsx"
    
    End If
        
    
        
    'цffnen ***********
        
'    Set objExcelApp = CreateObject("Excel.Application")
'    strPath = CurrentProject.Path & "\MB-Vorschlag_SITTENSEN_" & r & ".xlsx"
'    Set objWorkbook = objExcelApp.Workbooks.Open(strPath)
'    objExcelApp.Visible = False         '!!! zeigen oder ausblenden die Datei
    
    Set objExcelApp = New Excel.Application
    strPath = CurrentProject.Path & N & ".xlsx"
    Set objWorkbook = objExcelApp.Workbooks.Open(strPath)
    Set objSheet = objWorkbook.Worksheets(1)
    objExcelApp.Visible = False '!!! zeigen oder ausblenden die Datei
                        
    ' formatieren ***********
    
    With objSheet
         
             'EXCELMAKROs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          
             'Makro1 Makro ARBEITSBEREICH (START)***
 
              Columns("A:K").Select
              objExcelApp.Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
                  Formula1:="=0"
                  
               objExcelApp.Selection.FormatConditions(objExcelApp.Selection.FormatConditions.Count).SetFirstPriority
              With objExcelApp.Selection.FormatConditions(1).Font
                  .ThemeColor = xlThemeColorDark1
                  .TintAndShade = 0
              End With
 
' на этом месте продолжается процедура форматирования. она огромная, более 3000 строк поэтому я ее конечно всю не вставляю сюда...
 
 
                                 
          Range("A1:K2").Select
            ' Makro10 Makro BESCHRIFTUNGEN (STOP)****
       
            
   End With
           ' schließen ******************
  objWorkbook.Close True
  Set objWorkbook = Nothing
  objExcelApp.Quit
  Set objExcelApp = Nothing
           
                       
MsgBox "Sittensen - fertig!", , "System-Info"
 
'E-MAIL VERSCHICKEN  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
With NeueThunderbirdEMail
 
'     .EmailFormat = 2
'     .SendenVonKonto = 4
 
     .Empfaenger = "d.zhurba@tiemann-landtechnik.de"
     .KopieAn = "d.zhurba@tiemann-landtechnik.de"
       If Forms!MAINMENU.varBST = "M" Then
            .Betreff = "MONATS-Bestell-/Umlagerungsvorschlag_SITTENSEN"
            Else
    If Forms!MAINMENU.varBST = "T" Then
            .Betreff = "TAGES-Bestell-/Umlagerungsvorschlag_SITTENSEN"
            Else
    End If
    End If
     
'     .EMailText = "Hallo Kollegen<br>Im Anhang ist der Bestellvorschlag<br><br>GruЯ,<br>Dima Zhurba"
     .Anhang = CurrentProject.Path & N & ".xlsx"
 
 
End With
 
Call CreateThunderbirdEmailObject
  
 
 
 
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.07.2017, 03:46
Ответы с готовыми решениями:

Надежное удаление с последующим форматированием
Доброго времени суток, форумчане. Вынужден попросить у вас помощи в написании программы для надежного удаления информации. Её суть:...

Экспорт-импорт данных Excel-Access-Excel
Доброе время суток уважаемые форумчане. Приходит информация в экселевской таблице. Скидываю её в общую базу в Access. Для отчета...

Excel -> Access -> Excel, импорт - экспорт
Добрый день! Есть табель учета рабочего времени в таблице Excel, задача - переместить данные со всех листов книги в DB Access, позже...

30
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,973
Записей в блоге: 4
01.08.2017, 13:41
Студворк — интернет-сервис помощи студентам
вам не хватило 65000 символов, примерно 1500-2000 строк
может можно создать для повторяющихся кусков кода процедуру с параметрами?
1
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 88
01.08.2017, 13:48  [ТС]
Не хватило. Считаются ли пробелы как символы?
У меня много строк пустых и есть большая область которую я табом сместил вправо для наглядности.
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,973
Записей в блоге: 4
01.08.2017, 14:11
Цитата Сообщение от Дмитрий1905 Посмотреть сообщение
Считаются ли пробелы как символы?
и они и табы --это символы, но вряд ли это критично

комментарии --тоже символы, хотя они весьма полезны могут быть в дальнейшем

ищите код, который можно оформить функцией и обращаться к ней , применив параметры
2
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.08.2017, 14:11
Надо сделать процедуру куда параметрами передавать объекты objExcelApp, objWorkbook, objSheet. Может быть что-то еще.
Заголовок процедуры
Visual Basic
1
sub Proc1(objExcelApp as object, objWorkbook as object, objSheet as object)
Обращение к процедуре из головной программы
Visual Basic
1
Proc1 objExcelApp, objWorkbook, objSheet
2
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 88
01.08.2017, 14:45  [ТС]
Спасибо Mobile,
я напишу подробнее, а то не понимаю до конца как это провернуть:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
'это онсновная процедура,
 
Public Sub Prozedur_MB_8()
    Dim objExcelApp As Excel.Application
    Dim objWorkbook As Excel.Workbook
    Dim objSheet As Excel.Worksheet
'на этом месте производится экспорт из access, открытие эксель и самая большая процедура - форматирование в ексель
'в конце форматирование, которое с вашей помощью теперь происходит корректно, запусклся процесс
 
'call UML
'эта процедура была создана как продолжение форматирования так как в форматировании у меня не осталось места.
'здесь и находится основная проблема. програма не понимает чего я от нее хочу пытаясь выполнить какой то "with .range("bla bla") так далее.
mobile, как правильно написать Ваш код?


Visual Basic
1
2
3
Public Sub ExcelProc(objExcelApp As Object, objWorkbook As Object, objSheet As Object)
 
End Sub
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.08.2017, 15:08
Лучший ответ Сообщение было отмечено Дмитрий1905 как решение

Решение

Создайте новый модуль. Неважно с каким именем, лишь бы имя модуля не совпадало с именами процедур и библиотек. В этом модуле напишите Вашу функцию
Visual Basic
1
2
3
Public Sub ExcelProc(objExcelApp As Excel.Application, objWorkbook As Excel.Workbook, objSheet As Excel.Worksheet)
    'Текст процедуры
End Sub
В процедуре Prozedur_MB_8, там где уже достигнут предел кода (видимо там где написано Call UML) напишите
Visual Basic
1
ExcelProc objExcelApp, objWorkbook, objSheet
1
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 88
01.08.2017, 15:26  [ТС]
mobile, спасибо.
обязательно новый модуль создавать или можно в одном и том же сделать?
вот как сделал:
в том же модуле "продолжение главной процедуры размеры ктр были изчерпаны"

Visual Basic
1
Public Sub FormatSpalte_BESTELLEN_SIT(objExcelApp As Excel.Application, objWorkbook As Excel.Workbook, objSheet As Excel.Worksheet)
в конце главной процедуры:
Visual Basic
1
FormatSpalte_BESTELLEN_SIT objExcelApp, objWorkbook, objSheet
и ему опять что то не нравится...
Миниатюры
Экспорт из Access в Excel с последующим форматированием  
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.08.2017, 15:40
Нужен предок
Visual Basic
1
With objExcelApp.Range("B14")
Добавлено через 2 минуты
Или
Visual Basic
1
With objSheet.Range("B14")
1
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 88
01.08.2017, 15:50  [ТС]
только хотел написать что там With objSheet не хватало, я его во все суб и суб суб процессы записал и заработало!!!
проблема нехватки места была решена!

mobile, вы очень хорошо помогли справиться!
p.s.остались мелочи. можно я о них в этой же теме интересоваться буду?
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.08.2017, 16:00
Цитата Сообщение от Дмитрий1905 Посмотреть сообщение
остались мелочи. можно я о них в этой же теме интересоваться буду?
Это не ко мне, это вопросы модерирования. В правилах записано: один вопрос, одна тема. Но если вопросы приблизительно одного плана, то часто модераторы не возражают.
1
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 88
01.08.2017, 21:33  [ТС]
Eugene-LS, Спасибо за совет, это сработало:

важно чтобы лист на экране размещался в нужном месте, лучше в исходном состоянии то есть выделение ячейки "А1". В противном случае координаты ячейки будут не верно заданы.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Sub Freeze(objExcelApp As Object, objWorkbook As Object, objSheet As Object)
 
With objSheet
 
With .Range("A1")
.Select
End With
        With objExcelApp.Windows(1)
            .SplitColumn = 0
            .SplitRow = 13
            .FreezePanes = True
        End With
  
End With
 
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.08.2017, 21:33

Экспорт Excel в access
Подскажите пожалуйста быстрый способ экспорта таблицы Excel в базу Access с помощью ADOQuery. Желательно через OpenDialog. (Полей в...

Экспорт из access в excel
Скажите пожалуйста, как программно осуществить экспорт таблицы access в excel. всем спасибо!

Экспорт из Access в Excel
Добрый день. Есть итоговая таблица, в ней 20 поставщиков с разными параметрами , необходимо експортировать в Excel данные , только по...

Экспорт из Access в Excel
Сделал программу по разным пособиям.Она експортирует данные из excel в access,подскажете как сделать что бы после того как я сформирую...

Экспорт отчета Access в Excel
Здравствуйте, есть проблема с экспортом данных в эксель. Необходимо вывести информацию из отчета Results1 в готовый шаблон эксель...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru