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

Сохранение текущего листа Excel в отдельный файл

01.10.2008, 17:38. Показов 30525. Ответов 9
Метки нет (Все метки)

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

Помогите справиться с небольшой проблемкой.
Есть файл Excel с несколькими листами. Сделал ToolBar с кнопками. Как реализовать кнопку "Сохранить как" только для текущего листа. т. е. чтобы при нажатии на кнопку можно было выбрать директорию и имя файла, и текущий лист сохранялся бы в отдельный файл (.html .txt .xls)

Спасибо

P.S. Желательно с примером кода.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2008, 17:38
Ответы с готовыми решениями:

Сохранение текущего листа с сохранением имени листа и присвоением новой книге имени текущего листа
Sub Save_as() With Application.FileDialog(msoFileDialogSaveAs) .InitialFileName =...

Сохранение листа в из книги как отдельный файл.xls
Процедура по нажатию кнопки-сохранить к примеру лист3 из текущей книги как отдельный файл.xls с...

Сохранение листа книги в отдельный файл в альбомном виде
Добрый день! Есть данный макрос, он сохраняет лист из книги в отдельный файл, но не совсем так как...

Макрос сохранение активного листа книги в отдельный файл
Код сохраняет файл, но с пустым содержанием. Подскажите, в чем может быть проблема? With...

9
Частенько бываю
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
01.10.2008, 19:34 2
Сохранение листа в формате вэб страницы:
Visual Basic
1
ActiveWorkbook.PublishObjects.Add(xlSourceSheet, "C:\temp\777.htm", "Лист1").Publish
0
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
02.10.2008, 15:50 3
чтобы при нажатии на кнопку можно было выбрать директорию и имя файла
Пример из API-Guide
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
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
 
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
 
Dim OFName As OPENFILENAME
 
Private Function ShowSave() As String
    OFName.lStructSize = Len(OFName)
    OFName.hwndOwner = Hwnd
    OFName.hInstance = Application.hInstance
    OFName.lpstrFilter = "html (*.html)" + Chr$(0) + "*.html" + Chr$(0)
    OFName.lpstrFile = Space$(254)
    OFName.nMaxFile = 255
    OFName.lpstrFileTitle = Space$(254)
    OFName.nMaxFileTitle = 255
    OFName.lpstrInitialDir = "C:"
    OFName.lpstrTitle = ""
    OFName.flags = 0
    If GetSaveFileName(OFName) Then
        ShowSave = Trim$(OFName.lpstrFile)
    Else
        ShowSave = ""
    End If
End Function
ну и собственно само сохранение
Visual Basic
1
2
3
4
5
6
7
Private Sub CommandButton1_Click()
    Dim sFile As String
    sFile = ShowSave
    If sFile <> "" Then
        ActiveWorkbook.ActiveSheet.SaveAs Filename:=sFile, FileFormat:=xlHtml 'формат html
    End If
End Sub
ну само собой для .txt FileFormat:=xlText ну и OFName.lpstrFilter = "txt (*.txt)" + Chr$(0) + "*.txt" + Chr$(0) тоже изменить надо будет. И так для всех интересующих форматов.
0
Частенько бываю
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
02.10.2008, 18:42 4
2 Abu:
GetSaveFileName - из пушки по воробьям!

Из хэлпа по VBA:
GetSaveAsFilename Method
Displays the standard Save As dialog box and gets a file name from the user without actually saving any files.
К тому же испрошено было -
...только для текущего листа..
А метод SaveAs предложенный тобой сохраняет всю книгу..

Имхо самый оптимальный вариант это копировать необходимый лист в новую книгу и уже её сохранять в заданном формате.
0
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
02.10.2008, 20:21 5
Цитата Сообщение от Vlanib Посмотреть сообщение
GetSaveFileName - из пушки по воробьям!
так вроде спрашивалось
Цитата Сообщение от IpS Посмотреть сообщение
чтобы при нажатии на кнопку можно было выбрать директорию и имя файла

Мне диалог в голову и пришёл

P.S. сохраняет и вправду всю книгу, но других вариантов чё то не придумалось
0
Частенько бываю
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
03.10.2008, 02:12 6
Так я и говорю, в Excel есть прекрасный метод для получения имени файла с помощью диалога сохранения: Application.GetSaveAsFilename
0
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
05.10.2008, 18:05 7
Ой! Правда работает! Йа шляпа!
0
dikand
03.11.2008, 14:04 8
Имееться книга, как сделать чтобы необходимые листы сохранялись в отдельную книгу (например лист счет, догово и ТН-2) при этом название новой книги бралось с номера счета и наименованя плательщика (когда откроете книгу поймете о чем я) Пароль на VBA- 123
Вложения
Тип файла: rar Отгрузка оптовая.rar (229.0 Кб, 390 просмотров)
dikand
04.11.2008, 16:03 9
Вобщем вроде как проблему с одним листом смог осилить следующим способом
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
Private Sub Несохранять()
Dim №СФ As Variant
    Sheets("СчФ").Select       'Открытие листа "СчФ"
    Application.ScreenUpdating = False  'Отключение отображения результатов на экране
With ActiveSheet                        'Переменным присваиваются введенные в бланк данные
    №СФ = .Range("ном").Value
End With
    Sheets("СчФ").Copy Before:=Sheets(1)
    Range("Дат").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Interior
        .ColorIndex = 2
        .Pattern = xlSolid
    End With
    Range("Поставщик").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Interior
        .ColorIndex = 2
        .Pattern = xlSolid
    End With
    Range("Плательщик").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Interior
        .ColorIndex = 2
        .Pattern = xlSolid
    End With
    Range("суммНДС").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Interior
        .ColorIndex = 2
        .Pattern = xlSolid
    End With
    Range("суммсНДС").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Interior
        .ColorIndex = 2
        .Pattern = xlSolid
    End With
        'копирование ТН-2 ?
'
'
'
'
'
'
'
 Sheets("СчФ (2)").Select
    Sheets("СчФ (2)").Move
    Sheets("СчФ (2)").Select
    Sheets("СчФ (2)").Name = "СчФ"
    Range("A1").Select
    SavedName = Application.GetSaveAsFilename(InitialFileName:="СчФ_" & №СФ & ".xls", _
    FileFilter:="Рабочие книги (*.xls),*.xls")
    If SavedName = False Then End
    ActiveWorkbook.SaveAs SavedName
    ActiveWindow.Close
    Sheets("СчФ").Select       'Открытие листа "СчФ"
    Application.ScreenUpdating = True
End Sub
Но как в существующую книгу вставить лист "ТН-2"
NEtKLiN
07.03.2009, 22:40 10
Код не мой, я только редактировал немного.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub wshSave()
  Dim WbMain As Workbook
    Dim Wb As Workbook
    Dim sh As Worksheet
    Dim DateString As String
    Dim FolderName As String
    Application.EnableEvents = False
    Set WbMain = ActiveWorkbook
    FolderName = WbMain.Path & "\Archive"
    On Error Resume Next
    MkDir FolderName
    If ActiveSheet.Visible = -1 Then
            ActiveSheet.Copy
            Set Wb = ActiveWorkbook
            Wb.SaveAs FolderName _
                      & "\" & Wb.Sheets(1).Name & ".xls"
            Wb.Close False
    End If
    MsgBox "Лист " & ActiveSheet.Name & " в виде отдельного файла сохранён в папку " & FolderName
    ActiveWindow.SelectedSheets.Delete
    Application.EnableEvents = True
End Sub
07.03.2009, 22:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2009, 22:40
Помогаю со студенческими работами здесь

Проверить название текущего листа Excel
Здравствуйте Такая ситуация , как в Exel проверить название листа ? То есть проверить текущий...

Полное закрытие Excel, а не текущего листа
Если я последней строкой макроса делаю ActiveWindow.Close ' или ActiveWorkbook.Closeто остается...

сохранение в отдельный файл *.dbf
Привет всем !!! У меня такая проблема подключаю базу Foxpro в Delphi делаю выборку по полю ...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru