Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 3 4 [Все]   Вниз
  Печать  
Автор Тема: VBA и WORD  (Прочитано 99054 раз)
0 Пользователей и 1 Гость смотрят эту тему.
baranich
Постоялец

ru
Offline Offline

« : 06-09-2005 11:46 » 

Такая проблема, у меня есть txt-файл и word-документ, на котором есть 50 textboxов, надо чтоб из файла первая строка перессылалась в 15 textboxов, например с номерами от 10-25, вся проблема в том что в wordе нет массивов.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #1 : 07-09-2005 05:43 » 

Вот ещё вопросик,
есть папка, в которой лежит еще несколько папок и txt-файл, в котором будут прописаны названия этих папок, можно ли сделать так чтоб на VBA прописать код с помощью которого читался бы этот txt-файл и прочитав первую строку с названием папки направлялся бы в неё и читал её содержимое(в этой папке тоже будет справочный файл, но уже с названиями word-документов)
Записан
Alf
Гость
« Ответ #2 : 07-09-2005 06:24 » 

Конечно, можно. Подключи COM-объект Microsoft Scripting Runtime, в нем есть объекты TextStream (с его помощью прочитаешь текстовый файл), а также FileSystemObject, File, Folder и т.п. для работы с файлами и директориями. Пожалуй, для данной задачи этого достаточно.

See MSDN for details.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #3 : 07-09-2005 09:19 » 

Спасибо за совет.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #4 : 08-09-2005 05:40 » 

Вопросик на засыпку, почему у меня Listbox на форме не дает вписывать информацию при загрузке формы, т.е открыли форму и я хочу вписать информацию, разве нельзя?Не понялНе понял
Записан
Alf
Гость
« Ответ #5 : 08-09-2005 06:28 » 

Что означает фраза "не дает вписывать информацию при загрузке формы"? Пример кода, пожалуйста.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #6 : 08-09-2005 07:23 » 

Кода нет, я не хочу чтобы при инициллизации формы в ListBoxе появлялся список, а надо чтобы  форма загрузилась и я кликаю мышкой и хочу внести сама туда данные, а у меня не получается. Почему? может надо копаться в свойствах  ListBox?
Записан
Alf
Гость
« Ответ #7 : 08-09-2005 07:46 » 

Насколько я знаком с ListBox'ом, копаться в его свойствах бесполезно - данный элемент управления позволяет вручную только выбирать из списка, сам список заполняется программно.

Если нужно, чтобы пользователь помимо выбора мог и сам вводить значения, нужно воспользоваться элементом управления ComboBox. В одном из режимов отображения он очень похож на ListBox, однако имеет свойство Locked; оно разрешает либо запрещает пользовательский ввод.
« Последнее редактирование: 20-12-2007 16:46 от Алексей1153++ » Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #8 : 08-09-2005 08:02 » 

А в ComboBox можно вводить списком, я ввела одну строку, а на вторую он не переходит,  это можно сделать и кстати можно такое же сделать с textbox?
Записан
Alf
Гость
« Ответ #9 : 08-09-2005 08:35 » 

По пунктам:

1.
А в ComboBox можно вводить списком, я ввела одну строку, а на вторую он не переходит, это можно сделать

Нет, списком вводить нельзя. Нужно добавлять элементы в список по одному методом AddItem.

Дело в том, что ComboBox в первую очередь ориентирован на выбор из готового списка, а не на его формирование. Поэтому особых удобств для записи в список здесь нет, придется делать программно.

2.
и кстати можно такое же сделать с textbox?

"Такое же" - это вводить несколько строк в одном окне?

Вполне. Для этого необходимо установить свойство MultiLine в True. Для удобства имеет смысл также установить свойство ScrollBars, чтобы не искать потом убежавший за пределы окошка текст.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #10 : 08-09-2005 09:15 » 

текст1
текст2
т.е я ввожу текст1 и у меня конец textbox  и следующая текст переходит на другую строку.
 Вопрос:
 введеный текст будет читаться как одна строка или как две строки?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #11 : 08-09-2005 09:34 » 

Private Sub UserForm_Initialize()
TextBox1.MultiLine = True
TextBox1.EnterKeyBehavior = True
End Sub
теперь вводиться нормально, но если я присваевую переменной

Dim q As String
q = TextBox1.Text

и если я ввожу
текст1
текст2
то q присваевается "текст1 текст2"
а надо только текст1, а текст2 другой переменной
Что делать?
Записан
Alf
Гость
« Ответ #12 : 08-09-2005 10:00 » 

Независимо от того, сколько строк отображается в окне TextBox, для программы это - одна строка (String). Экранные строки в ней разделены символами возврата каретки (десятичный код 13) и перевода строки (код 10). Если нужно выделить экранные строки, придется добавить немного кода. Совсем чуть-чуть. Например, так:

Код:
Private Sub Command1_Click()
Dim I As Integer
Dim S As String
    S = Text1.Text
    While (Len(S) > 0)
        I = InStr(S, vbCrLf)
        If (I = 0) Then I = Len(S) + 1
        Debug.Print Left(S, I - 1)
        S = Mid(S, I + 2)
    Wend
End Sub

Данная процедура выводит каждую из строчек на отладочную печать. Думаю, переделать ее по своему вкусу не составит труда.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #13 : 12-09-2005 06:32 » 

Такая проблема:
 У меня в форме при нажатие кнопки, происходит выбор тестового файла, открытие его и чтение. Дальше надо чтоб textboxы, которые находяться на документе заполнялись первой строкой, но не все, а с номера 47-57. Как это сделать подскажите?
Записан
Alf
Гость
« Ответ #14 : 12-09-2005 06:34 » 

А в чем проблема-то? Вытащить первую строку или заполнить ее содержимым TextBox?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #15 : 12-09-2005 06:40 » 

а как вытащить только первую строку, у меня  TextBoxы последовательно заполняются разными строками, а нодо только первой
Записан
Alf
Гость
« Ответ #16 : 12-09-2005 06:52 » 

Я бы для чтения файла использовал объект TextStream. В нем есть метод ReadLine, который именно это и делает.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #17 : 12-09-2005 07:04 » 

    Set file1 = Ïàïêà.GetFile("C:\òàëîíû\ñèíèå\ÎÈÒ\ÎÈÒ.txt")
    Set zx1 = file1.OpenAsTextStream(ForReading)
        ThisDocument.TextBox47.Text = zx1.ReadLine
        ThisDocument.TextBox48.Text = zx1.ReadLine
       ThisDocument.TextBox49.Text = zx1.ReadLine
          zx1.Close
И получается в TextBox47 - первая строка, в TextBox48 - вторая строка, TextBox49 - третия строка, а  надо чтоб в этих трех TextBoхах была первая строка
Записан
Alf
Гость
« Ответ #18 : 12-09-2005 07:14 » 

Само собой. Надо немного по-другому:

Код:
 
Dim firstString as String;
...
Set file1 = Ïàïêà.GetFile("C:\òàëîíû\ñèíèå\ÎÈÒ\ÎÈÒ.txt")
Set zx1 = file1.OpenAsTextStream(ForReading)
firstString = zx1.ReadLine
ThisDocument.TextBox47.Text = firstString
ThisDocument.TextBox48.Text = firstString
ThisDocument.TextBox49.Text = firstString
zx1.Close
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #19 : 12-09-2005 07:19 » 

кстати - глюк форума:

русские буквы (я так понимаю) показываются как Ïàïê&#224

или что это?
Записан

baranich
Постоялец

ru
Offline Offline

« Ответ #20 : 12-09-2005 07:40 » 

спасибо за помощь
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #21 : 12-09-2005 09:25 » 

For ii = 70 To 92
For aa = FirstOfNextMonth To EndOfNextMonth
   Деньнедели = Weekday(aa)
        If Деньнедели = 7 Then
        Поле(ii) = FirstOfNextMonth + ii - 68
        Exit For
        ElseIf Деньнедели = 1 Then
        Поле(ii) = FirstOfNextMonth + ii - 69
        Exit For
        Else
       Поле(ii) = FirstOfNextMonth + ii - 70
        Exit For
        End If
Next aa
Next ii
Помогите не пойму где происходит сбой в циклах, смысл такой когда Деньнедели = 7(суббота), то textboxу присваеватся дата = 2, т.е понедельник,  Деньнедели = 1, то textboxу присваеватся дата = 2, но у меня первые выходные убираются, а остальные не убираются.
Записан
Alf
Гость
« Ответ #22 : 12-09-2005 10:07 » 

Что должен делать этот фрагмент?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #23 : 12-09-2005 10:19 » 

у меня с 70 по 92 textbox, должны заполняться датами месяца, но надо исключить выходные, а у меня исключаются только первые выходные, но код немного кривой, если есть другие идеи буду только рада.
Записан
Alf
Гость
« Ответ #24 : 12-09-2005 11:14 » 

Я в виде псевдокода идею набросаю, перевести на VBA труда не составит, полагаю:

Код:
date = начальная_дата
for I = 70 to 92 ' цикл по всем полям
  ' пропускаем выходные
  while выходной(date)
    date = date + 1 ' пропускаем этот день
  wend
  поле(I) = date
next I

P.S. Как-то все слишком сложно получается. Если в форме больше десятка текстовых полей, это наталкивает на мысль, что интерфейс программы не подуман как следует. Действительно удобные программы имеют небольшое число элементов управления.

Придется либо добавить функцию выходной(date), либо явно вписать условие определения выходного.
« Последнее редактирование: 20-12-2007 16:48 от Алексей1153++ » Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #25 : 12-09-2005 11:34 » 

выходной(date) - эту функцию надо вводить самой, я так понимаю
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #26 : 12-09-2005 11:38 » 

Я сделала так:
For ii = 70 To 92
   Деньнедели = Weekday(FirstOfNextMonth)
        If FirstOfNextMonth = EndOfNextMonth Then
         Exit For
         Unload Me
        ElseIf Деньнедели = 7 Then
         FirstOfNextMonth = FirstOfNextMonth + 2
        Поле(ii) = FirstOfNextMonth
        ElseIf Деньнедели = 1 Then
         FirstOfNextMonth = FirstOfNextMonth + 1
        Поле(ii) = FirstOfNextMonth
        Else
         FirstOfNextMonth = FirstOfNextMonth
        Поле(ii) = FirstOfNextMonth
        End If
      FirstOfNextMonth = FirstOfNextMonth + 1
Next ii
но после того как я убрала цикл по первому и последнему дня месяца, появилось ошибка, достигнув последнего дня машина начинает заполнять даты на следующий месяц, а этого нельзя.
Записан
Alf
Гость
« Ответ #27 : 12-09-2005 11:49 » 

А зачем этот клубок городить? Чем он лучше варианта, который я предложил?

выходной(date) - эту функцию надо вводить самой, я так понимаю

Если функция нигде больше не понадобится, можно заменить ее вызов условием

Код:
(Weekday(date) = 1) or (Weekday(date) = 7)
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #28 : 12-09-2005 12:05 » 

Нет, этот код делает так что все тестбокс, получается заполнены датой=date и она постояна, а мне надо чтоб были все рабочие дни, кроме выходных.
Записан
Alf
Гость
« Ответ #29 : 12-09-2005 12:08 » 

Пардон, конечно же, пропустил последнюю строчку цикла. Нужно в конце перейти на следующую дату. Поспешил. Вот так:

Код:
date = начальная_дата
for I = 70 to 92 ' цикл по всем полям
  ' пропускаем выходные
  while выходной(date)
    date = date + 1 ' пропускаем этот день
  wend
  поле(I) = date
  date = date + 1
next I
« Последнее редактирование: 20-12-2007 16:56 от Алексей1153++ » Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #30 : 12-09-2005 12:15 » 

ну у этого кода такой же промах, он не прекращает работать когда достигает последнего дня месяца, а продолжает и последние тестбокс заполняются датами уже следующего месяца, у моего такая же проблема, надо как-то ограничить цикл
Записан
Alf
Гость
« Ответ #31 : 12-09-2005 12:41 » 

Это не промах, а ответ на вопрос:

у меня с 70 по 92 textbox, должны заполняться датами месяца, но надо исключить выходные, а у меня исключаются только первые выходные, но код немного кривой, если есть другие идеи буду только рада.

Про следующий месяц ни слова. Каков вопрос - таков ответ. Тем более если речь идет о компьютере.

А что делать с ячейками, которые попадают на следующий месяц? Оставлять пустыми?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #32 : 12-09-2005 12:59 » 

да пустыми, но я уже сделала сама, спасибо
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #33 : 13-09-2005 05:23 » 

  Documents.Open FileName:="шаблон.doc", ConfirmConversions:=False, ReadOnly _
        :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
        :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
        , Format:=wdOpenFormatAuto, XMLTransform:=""
    Selection.WholeStory
    Selection.Copy
    Documents("шаблон.doc").Close SaveChange
    Selection.TypeBackspace
    Selection.TypeBackspace
    Selection.TypeBackspace
    Selecion.PasteAndFormat (wdPasteDefault)
Данный код работает когда запускается документ файл1, смысл в том что при открытие документа файл1, открывается шаблон, выделяется и копируется все его содержание и должно быть вставлено в документ  файл1, но операция Selecion.PasteAndFormat (wdPasteDefault) вызывает ошибку Object required. Почему или может просто сделать как отдельный макрос и вызывать его при открытие файла?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #34 : 13-09-2005 06:33 » 

А вот ещё вопрос
Private Sub CommandButton1_Click()
опреции
операции
vizov
end sub
При нажатие кнопки, у меня сначало выполняется процедура vizov, а не операции, почему?
Записан
Alf
Гость
« Ответ #35 : 13-09-2005 06:44 » 

Из чего следует, что операции не выполняются? Это явно показывает отладчик, или вывод сделан косвенно по отсутствию результата их действий?

Нужно на входе в процедуру установить точку останова отладчика и пройти ее пошагово.

Если операции не условные, нет причины, по которой они бы не выполнялись. Скорее они выполняются, но делают что-то не то.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #36 : 13-09-2005 06:54 » 

Но когда закомпилируешь процедуру vizov, всё работает нормально.
Записан
Alf
Гость
« Ответ #37 : 13-09-2005 07:45 » 

Теперь совсем непонятно... Что означает фраза

Но когда закомпилируешь процедуру vizov, всё работает нормально.

применительно к VBA, который в принципе является скриптовым языком (в отличие от своего старшего собрата VB) и компилировать не умеет?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #38 : 13-09-2005 08:26 » 

пордон описка, закомментируешь.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #39 : 14-09-2005 06:36 » 

У меня проблема при копирование текста одного документа в другой, мне надо с помощью кода поднять курсив на несколько строк. Как это сделать?
Записан
Alf
Гость
« Ответ #40 : 14-09-2005 11:33 » 

Что означает "поднять курсив"? Сделать несколько строк курсивными?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #41 : 14-09-2005 12:08 » 

текст1
текст2

Курсив - это место откудо начинаем печатать текст, он напимер в конце текст2, а надо на начало текст1
Записан
Alf
Гость
« Ответ #42 : 14-09-2005 12:10 » 

Курсив - это разновидность написания шрифта. А "место откудо начинаем печатать текст" больше на курсор похоже. Я угадал на этот раз?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #43 : 14-09-2005 13:07 » 

упс, мда работа убивает все остатки ума, пордон, да конечно ты прав
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #44 : 16-09-2005 06:43 » 

Вопросик, есть такой, в Comboboxе есть список, периодически выбирается сначало одно число из Comboboxа, потом ещё одно, и надо чтоб эти числа сохранялись в массиве, как это сделать?
Записан
Alf
Гость
« Ответ #45 : 16-09-2005 06:47 » 

Массив из двух элементов?

Так и сделать - первому элементу массива присвоить первый выбранный элемент Combobox'а, второму - второй выбранный. Только, конечно, не забыть преобразовать строчку из Combobox'а в число.
« Последнее редактирование: 20-12-2007 15:15 от Алексей1153++ » Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #46 : 16-09-2005 06:59 » 

а если у меня 30 чисел и они происходит выборка случайно
Записан
Alf
Гость
« Ответ #47 : 16-09-2005 07:01 » 

Ну тогда в цикле 30 раз,что это меняет по существу?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #48 : 16-09-2005 07:04 » 

Цитата
присвоить первый выбранный элемент Combobox'а, второму - второй выбранный
а как присваивать элементы Combobox'а,?
« Последнее редактирование: 20-12-2007 15:18 от Алексей1153++ » Записан
Alf
Гость
« Ответ #49 : 16-09-2005 07:12 » 

У Combobox'а есть свойство Text.
« Последнее редактирование: 20-12-2007 15:19 от Алексей1153++ » Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #50 : 16-09-2005 07:17 » 

массив()=combobox1.text
так что ли
Записан
Alf
Гость
« Ответ #51 : 16-09-2005 07:21 » 

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

Код:
массив()=CInt(combobox1.text)

или

Код:
массив()=CLng(combobox1.text)

, смотря какой тип элементов массива.

Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #52 : 16-09-2005 07:34 » 

 а куда поместить данную операцию, в тело кнопки не получиться, там тогда всем элементам массива будет присваиваться одно и тоже значение, в тело combobox'а или куда?
« Последнее редактирование: 20-12-2007 15:21 от Алексей1153++ » Записан
Alf
Гость
« Ответ #53 : 16-09-2005 08:01 » 

Да куда душе угодно. Главное - завести переменную-счетчик текущего элемента и не забывать обновлять.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #54 : 16-09-2005 13:28 » 

Код:
for i=0 to 10
массив(i)=CInt(combobox1.text)
next i

Куда поместить в Form_Initilization(), form_click
не работает, куда?
Записан
Alf
Гость
« Ответ #55 : 16-09-2005 13:43 » 

А как должно работать в принципе?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #56 : 16-09-2005 14:08 » 

Я ввожу постепено числа, выбирая из combobox'а и нажимая на кнопку,  надо чтобы они сохранялись в массив()
« Последнее редактирование: 20-12-2007 15:29 от Алексей1153++ » Записан
Alf
Гость
« Ответ #57 : 16-09-2005 14:12 » 

Значит, в обработчике нажатия на кнопку нужно заносить очередное значение в массив, а затем инкрементировать счетчик.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #58 : 19-09-2005 05:05 » 

Что значит "инкрементировать счетчик"?
Записан
Alf
Гость
« Ответ #59 : 19-09-2005 06:53 » 

Увеличить значение счетчика на единицу.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #60 : 19-09-2005 07:08 » 

Так что ли
Private Sub CommandButton3_Click()
i = 0
Holliday(i) = CInt(ComboBox1.Text)
i = i + 1
End Sub
Записан
Alf
Гость
« Ответ #61 : 19-09-2005 07:46 » 

Не так. Счетчик не должен быть локальным в обработчике нажатия кнопки. Сейчас при каждом нажатии i обнуляется, поэтому дальше единицы дело никогда не продвинется.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #62 : 19-09-2005 08:06 » 

Поняла, а вот вопросик
ThisDocument.TextBox1.Text=FirstOfNextMonth
т.е TextBox получает дату в виде 10.01.05, а мне надо чтобы месяц был написан, т.е не 01, а январь
Записан
Alf
Гость
« Ответ #63 : 19-09-2005 08:51 » 

Нужно привести дату к нужному представлению функцией Format.

Строка формата будет что-то вроде "dd mmmm yyyy"
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #64 : 19-09-2005 10:23 » 

Вопрос
Код:
For i = 70 To 92
    While (Weekday(FirstOfNextMonth) = 1) Or (Weekday(FirstOfNextMonth) = 7)
        For oa = 0 To p
            While (FirstOfNextMonth = WDay(oa))
                a(i) = FirstOfNextMonth
                Exit For
     
            Wend
        Next oa
       FirstOfNextMonth = FirstOfNextMonth + 1
    Wend
............
............
............

FirstOfNextMonth = FirstOfNextMonth + 1

Вопрос вот в чем, можно ли на VBA сделать чтобы в цикле While (FirstOfNextMonth = WDay(oa)) после  Exit For вставить какой-нибудь оператор(я не знаю существует он или нет), который позволял бы пройти мимо операции(они показаны точками) и сразу переходил на операцию FirstOfNextMonth = FirstOfNextMonth + 1
Записан
Alf
Гость
« Ответ #65 : 19-09-2005 10:35 » 

Такой оператор существует. Это столь нелюбимый программистами оператор перехода GOTO.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #66 : 22-09-2005 05:48 » 

Такой вопрсик, есть текстовый документ, у которого такое содержание
Код:
текст1
текст2

текст3
текст4
Между текст2 и текст3 две строки пусты, как сделать  цикл, чтобы текст1 и текст3 передавались в один массив, а текст2 и текст4 в другой, т.е когда доходит до двух пустых строк цикл начинался заново?
Записан
Alf
Гость
« Ответ #67 : 22-09-2005 06:14 » 

Именно так и сделать - подсчитывать число идущих подряд пустых строк и, когда их число достигнет двух, начать новый цикл.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #68 : 22-09-2005 06:23 » 

а если такой файл
Код:
текст1
текст2

текст3
........
тукст10


текст11
текст12

текст13
........
тукст20
Между строками текст2 текст3 и текст12 текст13 - одна пустая строка, а между текст10 и текст11 две строки.
Записан
Alf
Гость
« Ответ #69 : 22-09-2005 06:26 » 

В чем суть вопроса-то? Это утверждение, а не вопрос.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #70 : 22-09-2005 06:27 » 

а как посчитать пустые строки, что то я не пойму. Жаль
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #71 : 22-09-2005 06:29 » 

текст1 и текст11 заносятся в один массив, текст2 и текст12 заносятся в другой массив, текст3-10 и текст13-20 заносятся в ещё один  массив, как это сделать?
Записан
Alf
Гость
« Ответ #72 : 22-09-2005 06:56 » 

а как посчитать пустые строки, что то я не пойму. Жаль

Точно так же, как делала бы это сама, без компьютера:

Код:
...
EmptyStringCount = 0;
...
Str = InStream.ReadLine
if Len(Str) = 0 then
  EmptyStringCount = EmptyStringCount + 1
else
  EmptyStringCount = 0
end if
...
if (EmptyStringCount >= 2) then ...
Записан
Alf
Гость
« Ответ #73 : 22-09-2005 06:58 » 

текст1 и текст11 заносятся в один массив, текст2 и текст12 заносятся в другой массив, текст3-10 и текст13-20 заносятся в ещё один массив, как это сделать?

Не уловил закономерность. По какому принципу строки распределяются по массивам?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #74 : 22-09-2005 08:24 » 

Код:
текст1
текст2

текст3
........
тукст10


текст11
текст12

текст13
........
тукст20


 с текст1 по текст10- это первый блок,  с текст11 по текст20 - это второй блок
первая строка каждого блока заноситься в один массив, вторая сторока - в другой массив, потом идет пустая строка, потом в каждом блоке идут несколько строк друг за другом их надо поместить в третий массив
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #75 : 22-09-2005 08:25 » 

между блоками идет две пустые строки
Записан
Alf
Гость
« Ответ #76 : 22-09-2005 08:33 » 

Так и сделать.

Первую строку - в первый массив, вторую - во второй, пропустить пустую, остальные заносить в третий, пока не попадется пустая. Если за ней идет еще одна пустая, закончить блок и начать заново.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #77 : 22-09-2005 09:15 » 

что означает эта строка?
EmptyStringCount = 0
Записан
Alf
Гость
« Ответ #78 : 22-09-2005 09:31 » 

Переменной по имени EmptyStringCount присвоить значение ноль.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #79 : 22-09-2005 11:03 » 

Вопросик, если у меня строка такая

Иванов Иван Иванович
Сидоров Сергей Сергеевич
в массив1 занести фамилии, в массив2 занести имена, а в массив3 занести отчества
как это сделать
Записан
Alf
Гость
« Ответ #80 : 22-09-2005 11:31 » 

Использовать функцию Split(str).

Эта функция вернет массив, заполненный отдельными словами из строки str. Дальше останется только раскидать элементы по нужным местам.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #81 : 23-09-2005 07:51 » 

У меня проблемы всё с этим текстовым файлом.
Код:
текст1
текст2

текст3
........
тукст10


текст11
текст12

текст13
........
тукст20
Можно ли посчитать количество строк в каждом блоке, я знаю как посчитать во всем файле, а как посчитать строки в блоке, т.к в разных блоках количество строк разное? помогите
Записан
Alf
Гость
« Ответ #82 : 23-09-2005 07:59 » 

Я не совсем понял насчет того, каким образом текст разбивается на блоки. Ранее говорилось, что между блоками по две пустые строки. А если одна пустая, то в этом случае блок продолжается дальше?
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #83 : 23-09-2005 08:12 » 

файл заполняется в ручную, а потм с помощью программы нформация будет перекида в базу данных, скидываю оригинальный файл
Код:
ЗАО «КорпусГрупп»
ОИТ
                                  'данную строку можно убрать
Зиновьев Иван Петрович
Чунцов Андрей Олегович

                                  'каждый отдел - это новый блок, между блоками две пустые строки, чтоб как-то отделить их друг от друга
ЗАО «КорпусГрупп»
АХО

Киркина Марина Викторовна
Комсова Ирина Валерьевна

                                      ' Количество Людей в каждом отделе разное
ООО "Сервис Клининг"
Отдел продаж

Гуров Владимир Иванович
Маков Дмитрий Владимирович
Сидоров Константин Пертович

Вот как  посчитать количество людей в каждом отделе?
« Последнее редактирование: 19-12-2007 21:30 от Алексей1153++ » Записан
Alf
Гость
« Ответ #84 : 23-09-2005 10:13 » 

Вот как посчитать количество людей в каждом отделе?

Код:
отдел = 0
счетчик_сотрудников = 0
счетчик_пустых_строк = 0
while not конец_входного файла
  отдел = отдел + 1
  счетчик_сотрудников = 0
  считать_строку(название_фирмы)
  считать_строку(название_отдела)
  do
    считать_строку(стр)
    if (пустая строка(стр)) then
      счетчик_пустых_строк = счетчик_пустых_строк + 1
    else
      счетчик_сотрудников = счетчик_сотрудников + 1
      счетчик_пустых_строк = 0
    end if
  loop until (счетчик_пустых_строк >= 2)
  вывести(название_фирмы, название_отдела, счетчик_сотрудников)
wend

Примерно так.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #85 : 23-09-2005 10:29 » 

спасибо, сейчас попробую
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #86 : 28-09-2005 06:32 » 

Спасибо, за советы они мне очень помогли, то теперь у меня вопросик как с помощью VBA  в  WORD'е можно очистить буфер обмена?
« Последнее редактирование: 19-12-2007 21:33 от Алексей1153++ » Записан
Alf
Гость
« Ответ #87 : 28-09-2005 06:52 » 

Напрямую - не знаю, но можно попробовать схитрить - выделить пустую область и сохранить ее в буфере, она должна затереть предыдущее содержание.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #88 : 28-09-2005 06:53 » 

у меня проблема именно в том, что переполняется буфер обмена и его надо очистить полностью.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #89 : 28-09-2005 10:53 » 

Возможно этот вопрос не для программистов, но очень важный вопрос.
Возможно ли увеличить в Word'е буфера обмена(у меня он 24 копирования) и поэтому когда моя программа работает и достигнув 48-ого копирования он выдает ошибку. Можно ли увеличить буфера обмена?

« Последнее редактирование: 19-12-2007 21:37 от Алексей1153++ » Записан
Alf
Гость
« Ответ #90 : 28-09-2005 11:30 » 

Увеличить - вряд ли.

Вижу два способа решения проблемы:

1. Переписать программу таким образом, чтобы буфер обмена не использовался.
2. Отключить буфер обмена MS Word и пользоваться системным, на один элемент, который никогда не переполняется.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #91 : 28-09-2005 12:45 » 

Я отключила в WORD буфер обмена и что он должен автоматически записывать в системный буфер или надо это как-то прописать.

У меня копирования в офисный буфер обмена был прописан так:
    Selection.WholeStory
    Selection.Copy
А в системный так же или по другому?
Записан
Alf
Гость
« Ответ #92 : 28-09-2005 12:49 » 

Абсолютно так же. Собственно, этот самый буфер появился на нашу голову не так давно. То ли в последней версии Офиса, то ли в предпоследней. Раньше прекрасно без него обходились, не знали даже, что такое переполнение буфера.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #93 : 28-09-2005 12:52 » 

Попробывала скопировать текст и он снова появился в офисном буфере обмена, я отключала его с помощью "Параметры" в буфере обмена, может есть др. способ его отключить?
Записан
Alf
Гость
« Ответ #94 : 28-09-2005 13:16 » 

Вот что указано на этот счет в справке:

Цитата
Отключение буфера обмена Office

  • В области задач Буфер обмена нажмите кнопку Параметры.
  • Снимите флажок Автоматическое отображение буфера обмена Office.
  • Снимите флажок Открывать буфер обмена Office при двойном нажатии Ctrl+C.


Примечание.  Чтобы скопировать элементы в буфер обмена, когда он отключен, установите флажок Собирать данные без отображения буфера обмена Office.

Я попробовал, вроде получилось.
Записан
baranich
Постоялец

ru
Offline Offline

« Ответ #95 : 28-09-2005 13:29 » 

я проделала, тоже самое, но уже при следующем копирование в окошке буфера обмена, появился мой скопированный текст, это что у меня глюк какой то что ли?
Записан
Alf
Гость
« Ответ #96 : 28-09-2005 14:03 » 

Не должно быть никакого окошка, закрыть его нужно.
Записан
Страниц: 1 2 3 4 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines