Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Правильное сохранение из формы

3.7K
14 января 2005 года
blind7
56 / / 12.01.2005
Вопрос:
Как более правильно сохранить данные из формы, имея следующую ситуацию.
Форма Excel и данные из формы подставляються в шаблон в той же книге Excel. Есть необходимость сохранять данные из формы для последующего возможного редактирования.
В результате:
Первый вариант - сохранять в эту же книгу на отдельную страницу
Второй вариант - сохранять во внешнюю книгу.

Извините что вопрос не особо перекликается с кодированием.
Просто если с сохранением во внешнюю возникнут проблемы из-за незнания механизма этого сохранения.
258
14 января 2005 года
SergeySV
1.5K / / 19.03.2003
Если под форма понимается некая форма для заполнения выполнения на листе Excel, то может проще создать свой тип данных с полями и просто хранить в нем (в переменной этого типа) во время работы программы.
3.7K
14 января 2005 года
blind7
56 / / 12.01.2005
Это Хорошо, но как быть если проходит например 1 день и надо получить эти данные?
405
14 января 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by blind7
Это Хорошо, но как быть если проходит например 1 день и надо получить эти данные?



Элементарно записать в файл (проще всего - в текстовый).

3.7K
14 января 2005 года
blind7
56 / / 12.01.2005
А подскажите пожалуйста каким образом...
Просто направление дальше докопаю)
648
14 января 2005 года
Tiraspolsky
220 / / 23.07.2003
Не ломай голову - сохраняй во внешнюю книгу.
405
14 января 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by blind7
А подскажите пожалуйста каким образом...
Просто направление дальше докопаю)



Вот самый примитивный пример работы с текстовым файлом последовательного доступа (написано на VBA для Excel):

Sub NewFile()
Dim fullName As String 'Путь к файлу и его полное имя
Dim myFile As Object 'Указатель на объект файловой системы (в нашем случае - файл)
Dim pntFile As Object 'Указатель на файл, заданный в fullName
Dim myVar1, myVar2, myVar3 'Переменные, значения которых нужно сохранить
Const ForReading = 1 'Флаг открывания файла для чтения
Const ForWriting = 2 'Флаг открывания файла для записи
'========= Пример записи в текстовый файл =========
myVar1 = 1
myVar2 = Date
myVar3 = "******"
'Задаем путь к файлу и его имя
fullName = "c:\temp\fil_name.txt"
'Инициализируем переменную типа "Объект файловой системы" (FSO)
Set myFile = CreateObject("Scripting.FileSystemObject")
'Проверяем, нет ли уже такого файла
'(если файл с таким именем уже существует,
'то он будет автоматически очищен перед началом записи)
If Not (myFile.FileExists(fullName)) Then
'Открываем файл на запись
Set pntFile = myFile.OpenTextFile(fullName, ForWriting, True)
'Построчно пишем в файл все, что хотим
pntFile.WriteLine (myVar1)
pntFile.WriteLine (myVar2)
pntFile.WriteLine (myVar3)
'Закрываем файл
pntFile.Close
'Сбрасываем значения переменных типа FSO
Set myFile = Nothing
Set pntFile = Nothing
Else
MsgBox "Такой файл уже существует"
End If
'========= Пример чтения из текстового файла =========
myVar1 = 0
myVar2 = ""
myVar3 = ""
'Инициализируем переменную типа FSO
Set myFile = CreateObject("Scripting.FileSystemObject")
'Проверяем существование файла с данными
If myFile.FileExists(fullName) Then
'Открываем файл на чтение
Set pntFile = myFile.OpenTextFile(fullName, ForReading, True)
'Построчно читаем из файла
myVar1 = pntFile.ReadLine
myVar2 = pntFile.ReadLine
myVar3 = pntFile.ReadLine
'Закрываем файл
pntFile.Close
'Сбрасываем значения переменных типа FSO
Set myFile = Nothing
Set pntFile = Nothing
'Это так, для иллюстрации
MsgBox myVar1 & vbCr & myVar2 & vbCr & myVar3
Else
MsgBox "Нет такого файла"
End If
End Sub

Можно организовать и произвольный доступ, если необходимо. Но здесь все сложнее.
В качестве справочного пособия рекомендую, например, вот это:
Гарнаев А. Самоучитель VBA.- СПб.: БХВ-Петербург, 2002.

3.7K
14 января 2005 года
blind7
56 / / 12.01.2005
Сенкю, в выходные попробую дома покарпеть)
Гарнаева купиль, тока не самоучитель а Excel 2002 разработка приложений.))
Буду изучать и пробовать))
275
15 января 2005 года
pashulka
985 / / 19.09.2004
Если предыдущий код был примитивный, тогда посмотрите вот этот, попроще :

Sub WriteInputTextFile()

iNumb = 1
iDate = Date
iText = "Then End"

iNameFile = "test.txt"
iFile = "c:\test.txt"

Open iFile For Output As #1
Write #1, iNumb
Write #1, iDate
Write #1, iText
Close #1

If iNameFile = Dir(iFile) Then
Open iFile For Input As #1
Input #1, iNumb
Input #1, iDate
Input #1, iText
Close #1
MsgBox iNumb & vbCrLf & iDate & vbCrLf & iText, , ""
Else
MsgBox "Нет такого файла", , ""
End If

End Sub
405
17 января 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by pashulka
Если предыдущий код был примитивный, тогда посмотрите вот этот, попроще :

Sub WriteInputTextFile()

iNumb = 1
iDate = Date
iText = "Then End"

iNameFile = "test.txt"
iFile = "c:\test.txt"

Open iFile For Output As #1
Write #1, iNumb
Write #1, iDate
Write #1, iText
Close #1

If iNameFile = Dir(iFile) Then
Open iFile For Input As #1
Input #1, iNumb
Input #1, iDate
Input #1, iText
Close #1
MsgBox iNumb & vbCrLf & iDate & vbCrLf & iText, , ""
Else
MsgBox "Нет такого файла", , ""
End If

End Sub



Короткий код - это хорошо. Однако к этому неплохо бы кое-что добавить.

Sub WriteInputTextFile()

iNumb = 1
iDate = Date
iText = "Then End"
Dim handFile As Long

iNameFile = "test.txt"
iFile = "c:\123\test.txt"

handFile = FreeFile 'Вот это обязательно
'Ведь дискриптор #1 может быть уже занят

If iNameFile = Dir(iFile) Then 'Это тоже
'обязательно, ведь файл может быть нужен
'и не в корневом каталоге, а тот может
'и не существовать

Open iFile For Output As #handFile
Write #handFile, iNumb
Write #handFile, iDate
Write #handFile, iText
Close #handFile
Else
MsgBox "Неверный путь к файлу", , ""
End If

If iNameFile = Dir(iFile) Then
Open iFile For Input As #handFile
Input #handFile, iNumb
Input #handFile, iDate
Input #handFile, iText
Close #handFile
MsgBox iNumb & vbCrLf & iDate & vbCrLf & iText, , ""
Else
MsgBox "Нет такого файла", , ""
End If

End Sub

275
17 января 2005 года
pashulka
985 / / 19.09.2004
To Dmitrii

Я пока нахожусь в дееспособном состоянии, а посему сам буду определять, что именно должно присутствовать в моём коде, а что нет. И если бы я хотел дать клон Вашего/Гарнаева ответа, то сделал бы это самостоятельно.

А теперь, более предметно :

>Dim handFile As Long

Разве в моём коде присутствуют описания переменных, но уж если их описывать, то это надо делать грамотно, т.е.

handFile As Integer

>handFile = FreeFile 'Вот это обязательно
>'Ведь дискриптор #1 может быть уже занят

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

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

>If iNameFile = Dir(iFile) Then 'Это тоже обязательно

В следующем примере, при чтении из файла, я чётко указал, как определять наличие файла в конкретной папке, так что автор вопроса поймёт, в чём дело, я не сомневаюсь. А вот почему Вы сомневаетесь в его умственных способностях, непонятно.
405
17 января 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by pashulka
To Dmitrii

Я пока нахожусь в дееспособном состоянии, а посему сам буду определять, что именно должно присутствовать в моём коде, а что нет. И если бы я хотел дать клон Вашего/Гарнаева ответа, то сделал бы это самостоятельно.

А теперь, более предметно :

>Dim handFile As Long

Разве в моём коде присутствуют описания переменных, но уж если их описывать, то это надо делать грамотно, т.е.

handFile As Integer

>handFile = FreeFile 'Вот это обязательно
>'Ведь дискриптор #1 может быть уже занят

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

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

>If iNameFile = Dir(iFile) Then 'Это тоже обязательно

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



Извините, уважаемый pashulka. Попытаюсь исправиться:
- буду писать "дескриптор";
- не буду предлагать никому своих глупых советов.

275
17 января 2005 года
pashulka
985 / / 19.09.2004
Я этого слова не употреблял и тем более никогда не утверждал, что Ваши советы таковыми являются.

Кстати, по поводу орфографических ошибок, это была шутка, это ведь не форум русского языка и словесности, хотя они конечно присутствовали.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог