С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
1

Как создать и отредактировать рамку в документе xls из VBA

21.10.2009, 11:11. Показов 4152. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужен пример создания и редактирования рамок в ячеек в документе Екселя из программного модуля VBA.Заранее благодарен тем, кто чем нибудь поможет...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2009, 11:11
Ответы с готовыми решениями:

Можно ли создать подобие формулы в документе Word средствами VBA?
На скрине пример документа, где всегда значения в тексте должны быть равны значениям в таблице....

VBA сохранить файл как xls 2003
Доброе утро. Есть код, который выгружает запрос в шаблон файла экселя. В конце процедуры нужно...

Как отредактировать c использованием VBA записи в запросе?
Здравствуйте! У меня есть запрос Access, который выводит для пользователя в подчиненную форму...

Как с использованием VBA обратиться ко всем .xls файлам в определённой папке?
Просьба понимающих помочь в следующей ситуации: к примеру в каталоге "Мои документы" есть две...

17
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
22.10.2009, 04:26 2
несколько непонятно, что именно тебе нужно. Создание рамок?
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
With ActiveWorkbook.Worksheets('Ðóêàâèöû')
    cell1 = 'A6'
    cell2 = 'H' & strr
    Range(cell1, cell2).Borders(xlDiagonalDown).LineStyle = xlNone
    Range(cell1, cell2).Borders(xlDiagonalUp).LineStyle = xlNone
    With Range(cell1, cell2).Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range(cell1, cell2).Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range(cell1, cell2).Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range(cell1, cell2).Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range(cell1, cell2).Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range(cell1, cell2).Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Do Until .Cells(strr, 2).Value = ''
        .Rows(strr).Delete
    Loop 
end with
Например так.... кусок вырван из моего кода
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
22.10.2009, 13:30  [ТС] 3
Спасибо за помощь, но ентого мне делетанту не достаточно. Попробую уточнить суть задания из модуля MS Access открыть файл MS Excel и в первом поле присвоить значение выделив его в жирную рамочку. Присоединить и установить значенние я могу, но сжелать женту чертову рамку нет... если подскажешь как буду благодарен..
0
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 6
25.10.2009, 17:03 4
Попробуй такое: На новом пустом листочке поставь число в какую надо ячейку. Затем в меню СервисМакросНачать запись. Начнет записываться макрос с именем, которое ты ему присвоишь. Делай что тебе надо, хоть рамочки, хоть гробики и листочки (цеточки и т.д.) рисуй, все запишеться в макрос. А затем посиди и поизучай получившийся в макросе код. Очень помогает :-D
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
25.10.2009, 18:59  [ТС] 5
Спасибо за совет, ентим реинжениренгом я уже поздалбался заниматься,но зато подчерпнул много нового, легче не стало, просто от одной проблемы перешел к другой... рамки рисую-ю-ю просто зашибись...
толь файл *.xls после сохранения почему-то становиться невидимым..
говорят решение есть создав файл с нуля, но где надыбать примерчик..??? конечно, я немного еще помучаюсь, угроблю время на прочтенение мануала, чтобы понять, что где-то неправлино поставил запятую... блин, а че делать-то?! придется трахаться...)))) Все равно, ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ..
0
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
26.10.2009, 04:53 6
честно говоря не совсем поняла проблемы, мож я и торможу, не исключено, но все-таки, об'ясни поподробней, чего ты хочешь добиться и в чем проблема..... чем смогу- помогу
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
26.10.2009, 08:36  [ТС] 7
Суть проста: из модуля VBA создать файл Excel-я записать в него значение и сохранить на диск.
0
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
26.10.2009, 09:44 8
...Если я правильно поняла, то тебе нужно что-то вроде этого:
Visual Basic
1
2
3
4
5
6
7
Sub Book_Create()
Workbooks.Add
With ActiveWorkbook.Worksheets('Лист1')
   .Cells(1, 1).Value = 'Вот такая вот фигня :)'
End With
ActiveWorkbook.SaveAs Filename:='C:Мои документыПроба.xls', FileFormat:=xlNormal
End Sub
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
26.10.2009, 10:14  [ТС] 9
Да, именно это, мне и нужно, только не из модуля Excel-ля, а из модуля MS Access с опсанием семейств и переменнных. Есть еще небольшие различия в синтаксе, например 'xlNormal' - Access почему-то не воспринимает х.з. почему...
Спасибо..
0
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
28.10.2009, 03:24 10
ну, надеюсь, разобрался в конце концов? мне интересно
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
28.10.2009, 10:03  [ТС] 11
о!Да! Как я мог не разобраться?! Если человек в 3:47 утра переживал, как я там бедненький с excel-ком... )))) Разобрался... Счастлив был до....
T@sh + sun77 = генерация любых програмных кодов со скоростью 300 знаков в минуту.. нет в секунду... нет мухоментально....)))))))
0
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
28.10.2009, 10:07 12
ну? и в чем была проблема? чего не говоришь то???? ))
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
28.10.2009, 10:49  [ТС] 13
Лана, вот что в итоге получилось...
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
Function xls_new()
Dim path_out, file_spr
Dim mytable As Recordset
Dim wrdApp As Object
Set mydb = DBEngine.Workspaces(0).Databases(0)
 
file_spr = 'C:GWS2Woutсправка_' & Format(Now(), 'dd.mm.yy') & '.xls'
Set wrdApp = CreateObject('Excel.Application')
'подготовка выборки
DoCmd.SetWarnings (False)
DoCmd.OpenQuery 'spr_01'
DoCmd.OpenQuery 'spr_02'
     
Set radd = mydb.OpenRecordset('spr_03')
 
Dim pn As Integer
Dim prcl As String
Dim top As Integer
 
wrdApp.Workbooks.Add
With wrdApp.Worksheets('Лист1')
'заполнение шапки справки
.cells(1, 2).Value = 'Справка по глинозему ' & Format(Now(), 'dd.mm.yy')
.cells(1, 2).Font.name = 'Comic Sans MS'
.cells(1, 2).Font.Size = 14
.cells(1, 2).Font.Italic = True
.cells(2, 2).Value = '№№'
.cells(3, 2).Value = 'п/п'
.cells(2, 3).Value = 'Назначение маршрута после'
.cells(3, 3).Value = 'отгрузки'
.cells(2, 4).Value = 'вес'
.cells(3, 4).Value = 'нетто'
.cells(2, 5).Value = 'к-во'
.cells(3, 5).Value = 'ваг.'
.cells(2, 6).Value = 'контроль'
.cells(3, 6).Value = '№'
.cells(2, 7).Value = 'Ст.'
.cells(3, 7).Value = 'операции'
.cells(2, 8).Value = 'назначение'
.cells(3, 8).Value = 'после выгруз.'
.cells(2, 9).Value = 'опер'
.cells(2, 10).Value = 'дата'
.cells(2, 11).Value = 'Время'
'ширина столбцов
.Columns('A:A').ColumnWidth = 2
.Columns('B:B').ColumnWidth = 4.2
.Columns('C:C').ColumnWidth = 36.7
.Columns('D:D').ColumnWidth = 6.1
.Columns('E:E').ColumnWidth = 4.1
.Columns('F:F').ColumnWidth = 7.4
.Columns('G:G').ColumnWidth = 17
.Columns('H:H').ColumnWidth = 13.3
.Columns('I:I').ColumnWidth = 4.4
.Columns('J:J').ColumnWidth = 8.1
.Columns('K:K').ColumnWidth = 8.1
'рамки заголовка
For j = 2 To 11
 For i = 1 To 3
  .cells(2, j).Borders(i).LineStyle = 1
 Next i
Next j
For i = 2 To 12
 .cells(3, i).Borders(1).LineStyle = 1
Next i
'заполнение многострочной части справки
radd.MoveFirst
pn = 1
For top = 4 To radd.RecordCount
     If prcl <> radd![Клиент] Then
      .cells(top, 2).Value = pn
      .cells(top, 3).Value = radd![Клиент]
      .cells(top, 2).Font.Size = 8
      .cells(top, 3).Font.Size = 8
      pn = pn + 1
      .cells(top, 3).Borders(3).LineStyle = 1
      .cells(top, 2).Borders(3).LineStyle = 1
     End If
      .cells(top, 4).Value = radd![Sum-Вес]
      .cells(top, 5).Value = radd![Count-№]
      .cells(top, 6).Value = radd![First-№]
      .cells(top, 7).Value = radd![Ст]
      .cells(top, 8).Value = radd![СтН]
      .cells(top, 9).Value = radd![Опер]
      .cells(top, 10).Value = Format(radd![First-ДатаВремя], 'dd.mm.yy')
      .cells(top, 11).Value = Format(radd![First-ДатаВремя], 'hh:nn')
      For i = 2 To 11
      .cells(top, i).Font.Size = 8
       If (i <> 3) And (i <> 2) Then
        For j = 1 To 4
         .cells(top, i).Borders(j).LineStyle = 1
        Next j
       End If
      
      Next i
     .cells(top, 2).Borders(1).LineStyle = 1
     .cells(top, 3).Borders(1).LineStyle = 1
     prcl = radd![Клиент]
     radd.MoveNext
     
Next top
'прорисовка рамки последней строки
i = top - 1
.cells(i, 3).Bo
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
28.10.2009, 10:55  [ТС] 14
Конечно немного корявенько, но мне ентого в самый раз.. главное работает, сегодня немного оптимизирую и заброшу в сценарий...
only for T@... stodst@newmail.ru
0
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
28.10.2009, 10:55 15
Ну ты... разошелся... )))) спасибо )) мне хватило бы и трех строк:
Visual Basic
1
2
3
wrdApp.Worksheets('Лист1').SaveAs FileName:=file_spr
'wrdApp.Visible = True
wrdApp.Workbooks.Close
))) спасибо
0
0 / 0 / 0
Регистрация: 21.05.2009
Сообщений: 101
28.10.2009, 11:11 16
Объясните, а зачем такие сложности?
Почему нельзя зарание подготовить шаблон рабочей книги, когда надо открывать его, бросать туда данные и сохранять под другим именем?
Я, конечно, понимаю, что таких людей как мы хлебом не корми, дай код написать, но все-таки, время всегда дорого.
0
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
28.10.2009, 11:15 17
свежая идея! ура! я просто понять не могла, почему книга нефвидимая получается.....
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 19
28.10.2009, 11:49  [ТС] 18
изначально так и предпологалось сделать, но возникли проблемы:
1. если просто присоединить шаблон excel-ля как recordset и закидать туда данные то теряется возможность оформления рамками (см. рамка замороченная)
2. Открыть отредактировать и сохранить под другим именем - самое нормальное решение, но возникла проблема после редактирования и сохранения рабочая книга становится не видна, надо лезть в меню и говорить отобразить. енту проблему решить не удалось.. х.з. почему,
может из-за неправлиного синтаксиса или из-за ошибки передачи параметров при сохранении (убил часа три на эксперементы).
3. Приведенный пример оказался для меня самым работоспособным
ну конечно код распух но не намного, отрисовка заголовка таблицы на как на два польца пи-пи, все таки я потратил несколько часов на изучение данной темы...
вот сообственно так.. а потом я думаю что после оптимизации енто все будет гораздо легче..

PS:
с возрастом у программера растет живот и диагональ монитора, а должен расти челен и банковский счет...
0
28.10.2009, 11:49
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2009, 11:49
Помогаю со студенческими работами здесь

Как посредством VBA узнать открыт XLS файл или нет
Как посредством VBA можно узнать открыт ли файл (Excel) или нет?

Отредактировать разнотипную информацию в многостраничном документе MS Word
Дано: Большой документ MS Word страниц, скажем 60. Требуется: Изменить некоторую информацию в этом...

Не получается отредактировать форму движения регистра в документе
Имеются два регистра накопления: взаиморасчеты и остаток товара, оба закреплены за нужными...

Как заполнить Combobox в документе Word из программы, написанной на VBA-Access
При работе с VBA на Аксцессе столкнулся с ситуацией (думаю, не я один). Приходится формировать...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru