| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как с помощью vba скопировать текст

как с помощью vba скопировать текст

Ответ
Поиск в этой теме
Непрочитано 29.10.2008, 19:47 #1
как с помощью vba скопировать текст
vasyavip
 
Регистрация: 09.09.2008
Сообщений: 47

Здравствуйте!
Господа форумчане, скажите пожалуйста, как в VBA, т.е. программно скопировать текст из textbox'а в текстовый файл (с именем файла по умолчанию)?
И как программно создать textbox столько раз сколько надо пользователю? и там,(имеется ввиду на форме) где надо пользователю?

Последний раз редактировалось vasyavip, 30.10.2008 в 18:52.
Просмотров: 6610
 
Непрочитано 30.10.2008, 10:21
#2
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


По первому вопросу. Можно создать вот этакую процедурку, и при необходимости вызывать ее:

Код:
[Выделить все]
...
Call Save_Arhiv("d:\temp.txt, textbox.value)
...
Public Sub Save_Arhiv(Path_Arh, ss) 'Запись файла 
  Const ForReading = 1, ForWriting = 2, ForAppending = 3
  Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
  Dim fs1, f1, ts1, s1
  Set fs1 = CreateObject("Scripting.FileSystemObject")
  fs1.CreateTextFile Path_Arh            'Create a file
  Set f1 = fs1.GetFile(Path_Arh)
  Set ts1 = f1.OpenAsTextStream(ForWriting, TristateFalse)
  ts1.Write ss
  ts1.Close
End Sub
Собственно, можно с ее помощью записывать любой текст в любой текстовой файл

Последний раз редактировалось AlexV, 30.10.2008 в 10:31.
AlexV вне форума  
 
Непрочитано 30.10.2008, 10:56
#3
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Еще, в порядке офтопа, приметил такую фичу, простой Dir работает на порядок побыстрее. Конкретно заметил при отобращении содержимого каталогов в формах.
Baldares вне форума  
 
Непрочитано 30.10.2008, 11:20
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Baldares, ты не путай контрол, помещаемый на форму, и операторы. Это принципиально разные вещи.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2008, 11:40
#5
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Ну вот смотри
Получение массива имен файлов в папке.
Код:
[Выделить все]
'через dir
   strFile = Dir(strPath & "\*.dwg")
   Do Until len(strFile) = 0
      ReDim Preserve asFiles(i)
      asFiles(i) = strFile
      i = i + 1
      strFile = Dir
   Loop
И
Код:
[Выделить все]
'через файлсистем
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(strPath)
 For Each objFile In objFolder.Files
         ReDim Preserve asFiles(i)
         asFiles(i) = objFile.Name
         i = i + 1
   Next
Это еще без обработки типа файла
Ну а потом тупо этот массив загоняю в листбокс
Код:
[Выделить все]
ListBoxFiles.List = asFiles
Разница по времени грандиозная.
Что я не так делаю с файлсистемом.
Я думаю дело в том что объет файла в файлсистем хранит много доп инфы, которая мне не нужна, вот на ее перемалывание и уходит время.
Или как?
Baldares вне форума  
 
Непрочитано 30.10.2008, 11:46
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Опа, как я все позабыл-то... Мама мия, из тем по VBA тоже пора сваливать и не позориться...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2008, 11:52
#7
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Получение массива имен файлов в папке.
То ли я не понял вопрос, то ли ваши ответы. Вроде ж vasyavip хотел текст из текстбокса записать в файл, а не получить список файлов из определенной папки?
AlexV вне форума  
 
Непрочитано 30.10.2008, 11:58
#8
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Погоди сваливать )))
Думаю это пример не целевого использования объекта (загнул сам не понял че сказал)
И что именно тебя удивило.
Можно было бы получить массив файлов из Foldera без перебора, было бы быстро )
Baldares вне форума  
 
Непрочитано 30.10.2008, 11:58
#9
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от AlexV Посмотреть сообщение
То ли я не понял вопрос, то ли ваши ответы. Вроде ж vasyavip хотел текст из текстбокса записать в файл, а не получить список файлов из определенной папки?
Это я наглым образом сменил курс )))
Baldares вне форума  
 
Непрочитано 30.10.2008, 12:13
#10
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
как программно создать textbox столько раз сколько надо пользователю
Отдельно взятый текстбокс программно можно создать так:
Код:
[Выделить все]
Dim txtb As TextBox
Set txtb = UserForm1.Controls.Add("Forms.Textbox.1", "Textbox1", True)
txtb.Left = 10
txtb.top = 20
Если надо больше, то вместо "Textbox1" что-то типа "Textbox" & i , где i меняется. Ну и значения left или top надо менять, что бы не накладывались один на один
AlexV вне форума  
 
Непрочитано 30.10.2008, 12:18
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


По основному вопросу (создания текстового файла):
Сейчас держу в руках "Visual Basic 5.0 Руководство разработчика", раздел "Работа с текстовыми файлами":
Код:
[Выделить все]
Option Explicit

Sub Test()
Dim iFreeFile As Integer
Const sFileName = "c:\test.txt"
Dim lCounter As Long

  iFreeFile = FreeFile()
  Open sFileName For Output As iFreeFile
  For lCounter = 0 To 100
    Print iFreeFile, "Line #" & CStr(lCounter)
  Next lCounter
  Close iFreeFile
End Sub
Чтение из текстового файла можно выполнять уже с использованием открытия в соответствующем режиме и соответствующим операторами (Input, Line Input)
Хотя я на своей памяти с текстовыми работал мало, в основном бинарные были.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2008, 12:19
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


AlexV, твой вариант в VBA вроде не сработает. По крайней мере у меня не получалось программно создать контрол в форме.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2008, 12:25
#13
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
AlexV, твой вариант в VBA вроде не сработает. По крайней мере у меня не получалось программно создать контрол в форме.
Не знаю, у меня вроде работает. Вот форма.
Вложения
Тип файла: rar pack.rar (885 байт, 99 просмотров)
AlexV вне форума  
 
Непрочитано 30.10.2008, 13:11
#14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


AlexV, убедил
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как с помощью vba скопировать текст

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как все поля чертежа сразу преобразовать в текст? Red Nova AutoCAD 62 18.07.2023 09:29
Как сделать текст в размере повернутым горизонтально? Red Nova AutoCAD 7 25.02.2016 06:57
Как найти текст без содержания и еще вопросы Елена AutoCAD 5 29.06.2004 14:16
Как перенести текст из AutoCAD'a в MS Word? sear_ch AutoCAD 4 12.01.2004 20:50
Подскажите как построить кривую с помощью команды SPLiNE, к boban Программирование 1 02.11.2003 19:58