Excel vba как проверить существует ли лист


Содержание

Как проверить, существуют ли определенные листы в Excel-VBA?

Кто-нибудь знает, как проверить, существуют ли определенные листы в документе Excel с помощью Excel VBA?

Хотя (к сожалению) такой метод недоступен, мы можем создать свою собственную функцию, чтобы проверить это.

Надеемся, что приведенный ниже код соответствует вашим потребностям.

Edit1: Добавлена ​​также инструкция delete.

Решение, для которого я хотел бы.

В качестве альтернативы, если вы не возражаете использовать код, который активно поднимает ошибки (что не рекомендуется с использованием общих правил кодирования), вы можете использовать этот Spartan Программирование wannabe ‘code ниже.

Excel vba как проверить существует ли лист ?

5419 просмотра

1 ответ

67 Репутация автора

В настоящее время я запускаю макрос, который копирует лист шаблона, принимает пользовательские данные, переименовывает лист и помещает пользовательские данные в лист.

Кажется, все работает, кроме функции, которая проверяет, существует ли уже имя листа. Фактический «Лист уже существует» работает, однако, прежде чем вывести меня с этой ошибкой, он по какой-то причине дублирует рабочий лист ШАБЛОН.

Вот код для реального макроса (затронутая область: Листы («ШАБЛОН»). Копирование после: = Листы («ШАБЛОН»))

Вот функция, которая проверяет, существует ли лист

Excel vba как проверить существует ли лист ?

dmitry_serov » 17.05.2004 (Пн) 15:17

RayShade » 17.05.2004 (Пн) 16:56

Дмитрий_Потапов » 12.03.2008 (Ср) 12:22

Еще один вариант:

Dim Листы As Object
Dim x As Integer
x = 0
For Each Листы In Worksheets
If Листы.name = «Отчет» Then x = 1
Next Листы

if x=1 then
Sheets(«Отчет»).Select
else
Sheets.Add
ActiveSheet.name = «Отчет»
end if

alibek » 12.03.2008 (Ср) 12:43

uhm » 12.03.2008 (Ср) 12:50

Проверьте, существует ли лист — vba

Может кто-нибудь, пожалуйста, сообщите, где я здесь ошибся? Я хочу проверить, существует ли лист с именем «test», а если нет, создайте и назовите этот лист «test». Если он существует, я запускаю отдельный блок кода, который я здесь не привел. Я использовал обработку ошибок в том, что он игнорирует errornif.

Независимо от того, что я делаю, этот раздел кода всегда выполняется и создает новый лист. Код работает правильно, если лист «тест» уже не существует. Он создает новый лист и переименовывает его и движется дальше. Очевидно, что он не переименовывает лист в другом случае, так как там уже есть другой лист «test» с тем же именем.

Вопрос по excel, vba, range, offset &#8211 Проверьте, существует ли диапазон в VBA

У меня есть динамически определенный именованный диапазон в моем Excel, который извлекает данные из таблицы на основе даты начала и даты окончания, как это

Но если у диапазона дат нет данных в таблице, диапазон неT существует (или что-то, IDK). Как я могу написать код в VBA, чтобы проверить, существует ли этот диапазон или нет?

Я пробовал что-то вроде

но я получаюОшибка выполнения 1004, метод ‘Спектр’ объекта_Глобальный’ не удалось.»

которую я включил, чтобы узнать, существует ли именованный диапазон. Это может помочь вам.


чтобы подсчитать, прежде чем использовать диапазон, сколько у вас будет строк, или вы можете использовать обработку ошибок:

ос об использовании словаря. Oни’особенно полезно, когда вы хотите проверить, существует ли что-то. Возьмите этот пример:

В вашей основной процедуре все, что вам нужно сделать, это сделать проверку существования перед использованием диапазона

Хотя загрузка словаря может выглядеть немного дольше,очень быстро обрабатывать и искать. Также становится намного проще проверять, существует ли какой-либо именованный диапазон, ссылающийся на действительный адрес, без использования обработчиков ошибок в этом простом приложении.

Обратите внимание, что при использовании имен на уровне листа, а не на уровне книги, необходимо использовать более сложные ключи, чтобы гарантировать уникальность. Исходя из способа создания словаря, если ключ повторяется, значение элемента перезаписывается. Этого можно избежать, используя тот жеСуществует метод в качестве проверки в операторе создания ключа. Если вам нужна хорошая справка по использованию словарей, используйте этуодин.

чтобы взять контейнер и имя, которое вы хотите проверить. Это означает, что вы можете проверить, например, имена листов или имена книг.

Как проверить, существуют ли определенные листы в Excel-VBA?

Кто-нибудь знает, как проверить, существуют ли определенные листы в документе Excel с помощью Excel VBA?

Создан 27 июл. 11 2011-07-27 01:19:07 Vivian

возможно дубликат [Excel VBA If WorkSheet («wsName») EXISTS] (http://stackoverflow.com/questions/6040164/excel- vba-if-worksheetwsname-существует) – sancho.s 06 сен. 14 2014-09-06 18:10:09

Илон Маск рекомендует:  Что такое код gettempdrive
4 ответа

Хотя (к сожалению) такой метод не доступен, мы можем создать нашу собственную функцию, чтобы проверить это ..

Надежда ниже код соответствует вашим потребностям.

Edit1: Добавлено также удалить заявление .

Решение, которое я бы пойти на .

В качестве альтернативы, если вы не возражаете, чтобы использовать код , которые активно поднимают ошибки (которые не рекомендуются в распространенных передовых методах кодирования), вы можете использовать этот код «Spartan Programming wannabe» ниже .

Создан 27 июл. 11 2011-07-27 02:26:18 Tiago Cardoso

Это также отличное решение — проверяет, не полагаясь на ошибки. Я знал, что есть лучший способ, и я использовал этот способ прежде, чем на работе, я просто не мог вспомнить, как это сделать. @Tiago: Как бы вы использовали его на листе (1)? Просто перейдите в Таблицы (1). Имя? – Paul McLain 27 июл. 11 2011-07-27 02:32:08

@PaulR, yeap, точно . ‘Листы (1) .name’ сделали бы трюк. Обратите внимание, что вам может потребоваться активное определение книг, которые вы собираетесь использовать, поскольку ссылка «лист» неявно указывает на активную книгу (которая иногда не является ожидаемой). – Tiago Cardoso 27 июл. 11 2011-07-27 02:43:46

Правильно, я иногда укусил меня на работе. Для больших операций я склонен использовать блок With для моего объекта Worksheets («SheetName») и называть его хорошим. Это было бы, конечно, после того, как я убедился, что существуют рабочие листы («SheetName»). – Paul McLain 27 июл. 11 2011-07-27 02:47:38

Привет @Tiago Cardoso спасибо за ответ. Но, извините, если я задал здесь любительские вопросы. Я довольно новичок в excel-vba, но с моим контекстом я проверяю, существуют ли эти листы (2) и (3), я хотел бы запустить функцию удаления, но теперь с вашими вышеуказанными кодами. Как реализовать эту функцию? – Vivian 27 июл. 11 2011-07-27 03:01:09

Привет @PaulR Я обновил свой код выше, поскольку у меня возникла какая-то проблема при реализации кода Тьяго Кардосо. Можете ли вы взглянуть и дать мне несколько советов относительно того, как решить эту проблему. Спасибо – Vivian 27 июл. 11 2011-07-27 04:04:28

@Tiago Cardoso Я обновил свои коды выше, вы можете взглянуть и дать мне некоторое предложение о том, как я могу его решить? – Vivian 27 июл. 11 2011-07-27 04:06:12

@ Вивиан добавил код удаления, надеюсь, что сейчас лучше. Ложись спать, я посмотрю, хорошо ли завтра. ;)Tiago Cardoso 27 июл. 11 2011-07-27 04:21:38

@Vivian, это сработало? – Tiago Cardoso 27 июл. 11 2011-07-27 12:03:01

@Vivian, ваш код удаления на основе звука Tiago выглядит. – Paul McLain 27 июл. 11 2011-07-27 12:29:22

На самом деле в VBA это лучшая практика (и много раз единственный способ) определить множество вещей, поймав ошибки. – Lance Roberts 28 июл. 11 2011-07-28 03:34:35

Согласен, @Lance. Я хочу сказать, что в этом конкретном случае «Resume Next» мы активно * создаем * ошибку вместо * проверки *, если возникнет ошибка. Простым способом его разлома будет изменение VBA Error Trapping из * Break on Unhandled Errors * to * Break on All Errors *. В идеале, IMO, наши приложения будут бесперебойно работать с ошибкой Trapping, установленной в * Break on All Errors *, но это не относится к большинству разработчиков VBA. – Tiago Cardoso 28 июл. 11 2011-07-28 11:34:25

создать Как проверить, существуют ли определенные листы в Excel-VBA?

vba проверить существует ли лист (4)

Кто-нибудь знает, как проверить, существуют ли определенные листы в документе Excel с помощью Excel VBA?

Хотя (к сожалению) такой метод недоступен, мы можем создать свою собственную функцию, чтобы проверить это.

Надеюсь, что код ниже соответствует вашим потребностям.


Edit1: добавлена ​​также инструкция delete .

Решение, на которое я хотел бы пойти .

В качестве альтернативы, если вы не против использовать код, который активно поднимает ошибки (что не рекомендуется с использованием передовых методов общего кодирования), вы можете использовать этот код « Spartan Programming wannabe» ниже .

Что-то вроде этого поможет вам начать:

Этот код был основан на http://www.ozgrid.com/VBA/IsWorkbookOpen.htm . Найдите подменю DoSheetExist ().

Надеюсь это поможет!

Я адаптировал этот код для использования в LotusScript, одном из языков, используемых IBM Notes (ранее Lotus Notes), как показано ниже.

Excel vba как проверить существует ли лист ?

[offtop]. где то на просторах мирового океана.
возле советской баржи вплывает советская подлодка.
-Не видел, куда американцы делись?
-на северо-запад пошли
-че умничаешь, пальцем покажи! [/offtop]

[offtop]. где то на просторах мирового океана.
возле советской баржи вплывает советская подлодка.
-Не видел, куда американцы делись?
-на северо-запад пошли
-че умничаешь, пальцем покажи! [/offtop] Michael_S

ЯД: 41001136675053
WM: R389613894253

[offtop]. где то на просторах мирового океана.
возле советской баржи вплывает советская подлодка.
-Не видел, куда американцы делись?
-на северо-запад пошли
-че умничаешь, пальцем покажи! [/offtop] Автор — Michael_S
Дата добавления — 12.03.2013 в 20:14

Проверить лист на существование VBA

Только непонятно, что должна вернуть эта функция

Нужно написать цикл который бы проверял наличие листа по заданному названию(критерию)

думаю, она должна вернуть переменной strName номер листа и сказать есть он или нет. хзхз :)

strName разве не является параметром?

Спасибо. а как эту функцию с чекбоксами связать?

Чекбоксы идут с checkbox1 по checkbox24

Как я уже сказал — определитесь, что вы хотите.Вы хотели функцию проверки наличия листа и получения его индекса — вот она.Теперь сформулируйте, что значит «связать» в вашем понимании.

мы проверяем есть ли лист,допустим листа с названием 03,10 нету, то CheckBox(3).enabled = false.

Я перечитал первый пост и написал вам этот цикл (выше).Но тут интересная картина — вы просите проверить лист с названием «03,10»В то же время в своем коде, который я не менял, вы формулируете имя листа иначе: определитесь и доработайте функцию SheetIndex

Excel vba как проверить существует ли лист ?

Excel VBA: Приёмы программирования По материалам эхоконференции RU.EXCEL (за июль-сентябрь 1997 года) Collected by Kirienko Andrew , 2:5020/239.21@fidonet

Илон Маск рекомендует:  Как в Word обрезать рисунок

Cодержание

Как определить последнюю запись в таблице Excel?

Q: Необходимо найти последнюю запись в электронной таблице. Какой функцией VB это можно было бы организовать.

A: Первое что вспомнилось: Application.SpecialCells(xlLastCell)

Назад к СОДЕРЖАНИЮ

Как отменить выделение диапазона ячеек ?

Q: Как управиться с такой болячкой:

После прекращения работы макроса диапазон остается выделенным. Как это выделение убрать?


A: Попробуй вот как: Selection.Cells(1).Select Фокус ввода попадёт после этого на первую ячейку ранее выделенного диапазона.

Назад к СОДЕРЖАНИЮ

Как из макроса Excel программно создать таблицу Access ?

Q: Подскажите, пожалуйста, как из под Excel программно создать таблицу Access

A: Вот фрагмент кода, который создаёт таблицу «BalanceShifr» базе данных MS Access:

Нint: Не забудьте выставить в Excel ссылки на объекты DAO!
[VBA] Tools/References/Available References/ [x] MicroSoft DAO . Library

‘ Function CreateTable
‘ Create temporary table «BalanceShifr» into temporary database

Public Function CreateTable(ByVal dbTemp As Database) As Boolean

Dim tdfTemр As TableDef
Dim idx As Index
Dim fld As Field

On Error GoTo errhandle

CreateTable = True
‘ CREATE TABLE «BalanceShifr»
Set tdfTemp = dbTemp.CreateTableDef(«BalanceShifr»)
Set fld = tdfTemp.CreateField(«ConditionId», dbLong)
fld.Required = True
tdfTemp.Fields.Append fld
Set fld = tdfTemp.CreateField(«Account», dbText, 4)
tdfTemp.Fields.Append fld
Set fld = tdfTemp.CreateField(«SubAcc», dbText, 4)
tdfTemp.Fields.Append fld
Set fld = tdfTemp.CreateField(«Shifr», dbLong)
tdfTemp.Fields.Append fld
Set fld = tdfTemp.CreateField(«Date», dbDate)
fld.Required = True
tdfTemp.Fields.Append fld
Set fld = tdfTemp.CreateField(«SaldoDeb», dbCurrency)
tdfTemp.Fields.Append fld
Set fld = tdfTemp.CreateField(«SaldoKr», dbCurrency)
tdfTemp.Fields.Append fld
dbTemp.TableDefs.Append tdfTemp

‘ CREATE INDEX «BalanceShifr»
Set tdfTemp = dbTemp.TableDefs(«BalanceShifr»)
Set )
Set fld = idx.CreateField(«ConditionId»)
idx.Fields.Append fld
tdfTemp.Indexes.Append idx
Exit Function

errHandle:
MsgBox «Table creating error!», vbExclamation, «Error»
CreateTable = False
End Function

Назад к СОДЕРЖАНИЮ

Удаление листов в зависимости от даты.

Q: Как удалить рабочие листы листов в зависимости от даты ?

A: Вот код функции на Excel VBA, который решает данную проблему:

‘ Function DelSheetByDate
‘ Удаляет рабочий лист sSheetName в активной рабочей книге,
‘ если дата dDelDate уже наступила
‘ В случае успеха возвращает True, иначе — False

Public Function DelSheetByDate(sSheetName As String, _
dDelDate As Date) As Boolean
On Error GoTo errHandle

DelSheetByDate = False
‘ Проверка даты
If dDelDate
‘ Не выводить подтверждение на удаление
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets(sSheetName).Delete
DelSheetByDate = True
Application.DisplayAlerts = True
End If

Exit Function
errHandle:
MsgBox Err.Description, vbCritical, «Ошибка №» & Err.Number
End Function

Назад к СОДЕРЖАНИЮ

Подавление «горячих» клавиш.

Q: Как подавить доступ по «горячим» клавишам, имеется ввиду предопределенные в Excel клавиши типа Ctrl-O и т.д.?

A: Вот малюсенький исходник на Excel VB, который решает такую проблему. :-)

Public Sub Auto_Open()
‘ Overrride standard accelerators
With Application
.OnKey «^o», «Dummy»
.OnKey «^s», «NewAction»
.OnKey «^р», «» ‘ Kill hotkey !
End With
End Sub

‘ ——
Public Sub Dummy()
MsgBox «This hotkey redefined!»
End Sub

‘ ——
Public Sub NewAction()
SendKeys «^n» ‘ Press + for create new file
‘ instead of + !
End Sub

Hint: Отлажено в MS Excel ’97 !

Назад к СОДЕРЖАНИЮ

Подсказки к Toolbar.

Q: Как сделать к «само нарисованным» кнопочкам на Toolbar’е подсказки? (Ну, те, что после 2-х секунд молчания мышки появляются)

A: Сделать можно вот как: (Пример реализации на Excel’97 VBA )

‘ Cоздаем тулбар
Рublic Sub InitToolBar()
Dim cmdbarSM As CommandBar
Dim ctlNewBtn As CommandBarButton

Set cmdbarSM = CommandBars.Add(Name:=»MyToolBar»,
Position:=msoBarFloating, _
temporary:=True)
With cmdbarSM
‘ 1) Добавляем кнопку
Set ctlNewBtn = .Controls.Add(Type:=msoControlButton)
With ctlNewBtn
. Face >
.OnAction = «OnButton1_Click»
.TooltipText = «My tooltip message!»
End With
‘ 2) Добавляем ещё кнопку
Set ctlNewBtn = .Controls.Add(Type:=msoControlButton)
With ctlNewBtn
.Face >
.OnAction = «OnButton2_Click»
.TooltipText = «Another tooltip message!»
End With
.Visible = True
End With
End Sub


Hint: На VBA для Excel’95 это делается несколько иначе!

Назад к СОДЕРЖАНИЮ

Как определить адрес активной ячейки.

Q: Как в макросе узнать и использовать текущее положение курсора (не мышиного, естественно)?

A: Очень просто! :-)
ActiveCell.Row и ActiveCell.Column — покажут координаты активной ячейки.

Назад к СОДЕРЖАНИЮ

Подсчет комментариев на рабочем листе.

Q: Как узнать есть ли хоть один Notes (комментарий) в рабочем листе, кроме как перебором по всем ячейкам? . Без этого не работает:

A: В Excel’97 эта проблема может быть решена вот как:

‘ Function IsCommentsPresent
‘ Возвращает TRUE, если на активном рабочем листе имеется хотя бы
‘ одна ячейка с комментарием, иначе возвращает FALSE

Public Function IsCommentsPresent() As Boolean
IsCommentsPresent = ( ActiveSheet.Comments.Count <> 0 )
End Function

Назад к СОДЕРЖАНИЮ

Подсказки к Toolbar (Excel’95).

Q: Как сделать свой собственный Toolbar с tooltip’ами на кнопках в Excel’95 ?

A: Вот фрагмент кода для Excel’95, который создаёт toolbar с одной кнопкой с пользовательским tooltiр’ом. Нажатие кнопки приводит к выполнению макроса NothingToDo() .


‘ This example creates a new toolbar, adds the Camera button
‘ (button index number 228) to it, and then displays the new toolbar.

Public Sub CreateMyToolBar()
Dim myNewToolbar As Toolbar
On Error GoTo errHandle:

Илон Маск рекомендует:  Что такое код imagecolorset

Set myNewToolbar = Toolbars.Add(Name:=»My New Toolbar»)
With myNewToolbar
.ToolbarButtons.Add Button:=228, StatusBar:=»Statusbar help string»
.Visible = True
With .ToolbarButtons(1)
.OnAction = «NothingToDo»
.Name = «My custom tooltiр text!»
End With
End With
Exit Sub
errНandle:
MsgBox «Error number » & Err & «: » & Error(Err)
End Sub


‘ Toolbar button on action code

Рublic Sub NothingToDo()
MsgBox «Nothing to do!», vbInformation, «Macro running»
End Sub

Нint: В Excel’97 этот код тоже работает!

Назад к СОДЕРЖАНИЮ

Запуск Excel с поиском ячейки.

Q: Как запустить Excel, чтобы оказаться на ячейке содержимое которой известно заранее?

A: Вот как я решил бы твою задачу:

‘ Sub GotoFixedCell:
‘ Делает активной ячейку, содержащую значение vVariant на
‘ рабочем листе sSheetName в активной рабочей книге.

‘ Note: Содержимое ячеек интерпретируется как ‘значение’!

Public Sub GotoFixedCell(vValue As Variant, sSheetName As String)
Dim c As Range, cStart As Range, cForFind As Range
Dim i As Integer

On Error GoTo errhandle:

Set cForFind = Worksheets(sSheetName).Cells ‘ Диапазон поиска
With cForFind
Set c = .Find(What:=vValue, After:=ActiveCell, LookIn:=xlValues, _
LookAt:= xlРart, SearchOrder:=xlByRows,_
SearchDirection:=xlNext, MatchCase:=False)
Set cStart = c
While Not c Is Nothing
Set c = .FindNext(c)
If c.Address = cStart.Address Then
c.Select
Exit Sub
End If
Wend
End With
Exit Sub
errНandle:
MsgBox Err.Descriрtion, vbExclamation, «Error #» & Err.Number
End Sub

Нint: Достаточно выполнить этот код из макроса Auto_Oрen()!

Нint: Протестировано и отлажено в Excel’97.

Назад к СОДЕРЖАНИЮ

ThisWorkBook или ActiveWorkBook ?

Q: На листе модулей открытой рабочей книги присутствует процедура, которая копирует некий лист из другой (не активной) рабочей книги. В этом листе в некоторых ячейках находятся определенные пользователем формулы. Процедура работает без проблем.
Из workbook, содержащей эту процедуру, я делаю надстройку (.xla) и подключаю ее к Excel 95. При вызове вышеописанной процедуры она выдает сообщение:
Run time error 424 object required
Kак можно избежать это сообщение?

A: Вот что я тебе посоветую:
Посмотри ещё разок код модулей рабочей книги и исправь все ссылки вида ActiveWorkbook.WorkSheets(«.. на ссылки вида ThisWorkBook.WorkSheets(«..

Дело в том, что когда выполняется код надстройки активной книгой в Excel’е является _не_ сама надстройка! Конструкция ThisWorkbook позволяет сослаться на книгу, в которой в настоящий момент выполняется код Excel VBA.


Нint: Это общий принцип создание надстроек Excel!

Назад к СОДЕРЖАНИЮ

Как задать имя листу, который будет вставлен ?

Q: Хочy через Excel VBA задать имя листу, который будет вставлен. Но у команды Sheets.Add нет такого параметра ! Как бороться ?

A: Очень просто.

‘ Sub CreateSheet
‘ Вставляет активную рабочую книгу в рабочий лист с именем sSName.
‘ Note: Если параметр bVisible имеет значение False, этот лист становится скрытым.

Рublic Sub CreateSheet(sSName As String, bVisible As Boolean)
Dim wsNewSheet As WorkSheet

On Error GoTo errНandle

Set wsNewSheet = ActiveWorkBook.Worksheets.Add
With wsNewSheet
.Name = sSName
.Visible = bVisible
End With
Exit Sub
errНandle:
MsgBox Err.Descriрtion, vbExclamation, «Error #» & Err.Number
End Sub

Назад к СОДЕРЖАНИЮ

Как проверить существует ли лист ?

Q: А как проверить существует ли лист ?

A: Я бы поступил вот как:

‘ Function IsWorkSheetExist
‘ Проверяет, имеется ли в активной рабочей книге лист с именем sSName.
‘ В случае успеха возвращает True, иначе — False

Рublic Function IsWorkSheetExist(sSName As String) As Boolean
Dim c As Object

On Error GoTo errНandle:
Set c = sheets(sName)
‘ Альтернативный вариант :
Worksheets(sSName).Cells(1, 1) = Worksheets(sSName).Cells(1, 1)
IsWorkSheetExist = True
Exit Function
errНandle:
IsWorkSheetExist = False
End Function

Нint: Отлажено и протестировано в Excel’97.

Назад к СОДЕРЖАНИЮ

Как обратиться к ячейке по ее имени ?

Q: Как обратиться к ячейки по ее имени ? Т.е. есть Лист1 и в нем ячейки с именем Дебет и Кредит. Хочy подсчитать Дебет-Кредит средствами Excel VBA. Попробовал Range(Дебет)-Range(Кредит), ругается, что не описаны переменные.

A: Если я правильно тебя понял, нужно разыменовать ячейку из кода Excel VBA. Вот фрагмент кода, который решает такую задачу:

‘ Function ValueOfNamedCell
‘ Возвращает значение ячейки с именем sCellName. в активной рабочей книге.
‘ Note: Если ячейка с именем sCellName не существует — функцией возвращается
‘ значение Emрty.

Рublic Function ValueOfNamedCell(sCellName As String) As Variant
On Error GoTo errНandle
ValueOfNamedCell = ActiveWorkbook.Names(sCellName).RefersToRange.Value
Exit Function
errНandle:
ValueOfNamedCell = Emрty
End Function

Нint: Отлажено и протестировано в Excel’97.

Назад к СОДЕРЖАНИЮ

Можно ли из программы на Visual Basic создать рабочую книгу Excel ?

Q: Можно ли из программы на Visual Basic создать рабочую книгу Excel ?

Пример того, как из Visual Basic’a через OLE запустить Excel, и создать рабочую книгу.

‘ CreateXlBook
‘ Вызывает MS Excel, создает рабочую книгу с именем sWbName с одним
‘ единственным рабочим листом. Рабочая книга будет сохранена в каталоге
‘ sDirName. В случае успеха возвращает True, в противном случае — False.

Public Function CreateXlBook(sWbName As String, sDirName) As Boolean

‘ MS Excel hidden instance
Dim objXLApp As Object
Dim objWbNewBook As Object

Set objXLApp = CreateObject(«Excel.Application»)
If objXLApp Is Nothing Then Exit Function

‘ В новой рабочей книге создавать только один рабочий лист
objXLApp.SheetsInNewWorkbook = 1

Set objWbNewBook = objXLApp.Workbooks.Add
If objWbNewBook Is Nothing Then Exit Function

‘ Сохраняем книгу
If vbNullString = Dir(sDirName, vbDirectory) Then Exit Function

objWbNewBook.SaveAs (sDirName + «\» + sWbName + «.xls»)
CreateXlBook = True

‘ Освобождение памяти
Set objWbNewBook = Nothing
objXLApp.Quit
Set objXLApp = Nothing
CreateXlBook = True

Hint: Tested and approved with MS Visual Basic 4.0 Enterprise Edition

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL