0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662

Запуск файла CSV и запись данных

22.06.2017, 17:03. Показов 4417. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята подскажите пожалуйста, что я не так делаю с этим файлом:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Dim XLM As Object
Set XLM = CreateObject("Excel.Application")
FileName = App.Path & "\BD\Сотрудники.CSV"
XLM.Visible = False
For Each X In XLM.Worksheets("Сотрудники").Range("A1:A5").Value 'ругается на "Х" в xl работает нормально! 
    ComboBox1.AddItem X
Next
  XLM.ActiveWorkbook.save
XLM.ActiveWorkbook.Close
XLM.Quit
 Set XLM = Nothing
Добавлено через 2 часа 4 минуты
Пробовал так открывать файл открывает а вот передать в комбо ни как:
Visual Basic
1
2
3
4
Dim F As Long
F = FreeFile
Open App.Path & "\BD\Сотрудники.CSV" For Input As #F
...........
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.06.2017, 17:03
Ответы с готовыми решениями:

Запись в БД из файла csv
Доброго времени суток! Начинающий. Изучаю php. Помогите, пожалуйста разобраться с проблемкой. Нужно записать данные из csv в базу. файл...

Запись csv файла
Ребят, знаю что тема заезжанная, но всё-таки. Вообщем, я пытаюсь записать tableWidget в csv файл. У меня всё работает, и получается...

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

28
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.06.2017, 17:13
ASSEI, csv можно открыть и вытащить оттуда данные не используя Excel. Откройте его блокнотом, и посмотрите где находятся нужная Вам информация.
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
22.06.2017, 17:19  [ТС]
с открытием разобрался файл открывает вот в комбо ни как не передать :
Visual Basic
1
2
3
4
5
6
7
Dim F As Long
F = FreeFile
Open App.Path & "\BD\Сотрудники.CSV" For Input As #F
...........
For Each X In XLM.Worksheets("Сотрудники").Range("A1:A5").Value 'ругается на "Х" 
    ComboBox1.AddItem X
Next
или там какие о другие строки если я его как xl открою?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.06.2017, 17:49
Цитата Сообщение от ASSEI Посмотреть сообщение
вот в комбо ни как не передать
Потому что Вы сами не знаете, что делаете.

Можете этот файл сюда прикрепить?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
23.06.2017, 04:02
или там какие о другие строки если я его как xl открою?
естественно!
фал открыт как текстовой и работать с ним надо как с текстом. Для начала разбить на строки например так:
Visual Basic
1
arr = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\Temp\список.txt", 1).ReadAll, vbCrLf)    'массив строк текста целиком
получишь массив строк. потом в цикле перебирая строки надо разбивать каждую строку на
элементы по разделителю
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 09:08  [ТС]
вот этот файл
Вложения
Тип файла: rar Контрагенты.rar (135 байт, 5 просмотров)
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 09:16  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
надо как с текстом
так когда открываю как xl не получается все равно передать методом xl в комбо:
Visual Basic
1
2
3
4
5
6
7
Dim XLM As Object
Set XLM = CreateObject("Excel.Application")
FileName = App.Path & "\BD\Сотрудники.CSV"
XLM.Visible = False
For Each X In XLM.Worksheets("Сотрудники").Range("A1:A5").Value
    ComboBox1.AddItem X
Next
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
23.06.2017, 09:36
ASSEI, вот так можно, но в файле у Вас всего одна строка, а не пять.
Visual Basic
1
2
3
4
5
6
7
8
9
10
    Dim ff As Integer, s As String, i As Integer
    ff = FreeFile
    'Open App.Path & "\BD\Сотрудники.CSV" For Input As #ff  '   Какое все-таки имя файла?
    Open App.Path & "\BD\Контрагенты.CSV" For Input As #ff  '   Какое все-таки имя файла?
        Do Until EOF(ff) Or i >= 5  '   или до конца файла, или первые пять строк
           Input #ff, s
           Combo1.AddItem Split(s, ";")(0)  '   Как у Вас называется комбобокс ? ComboBox1 ? А у меня просто Combo1
           i = i + 1
        Loop
    Close #ff
1
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 09:44  [ТС]
т.е все таки практичнее открывать этот файл с подобным расширение просто как текстовый файл?

Добавлено через 5 минут
поругался вот на это
Visual Basic
1
s As String,
удалил все заработало
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
23.06.2017, 09:49
Лучший ответ Сообщение было отмечено ASSEI как решение

Решение

Цитата Сообщение от ASSEI Посмотреть сообщение
с подобным расширение просто как текстовый файл?
Да, и это хорошо, так как Вы не будете привязаны к Excel . И скорость работы этого кода соответственно будет высокой.

Добавлено через 1 минуту
Цитата Сообщение от ASSEI Посмотреть сообщение
удалил все заработало
Странно, а у меня и с ним работает. А в чем Вы пишите ?
1
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 09:56  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
чем Вы пишите
VB6
а не может быть что у меня где то уже объявлена такая переменная при чем глобально?
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 09:59  [ТС]
ошибка!
Миниатюры
Запуск файла CSV и запись данных  
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
23.06.2017, 10:02
Цитата Сообщение от ASSEI Посмотреть сообщение
не может быть что у меня где то уже объявлена такая переменная при чем глобально?
Нет, глобальное объявление не помешало бы работе кода. Только если в этой же процедуре уже где-то объявлена s, но тогда лучше изменить имя переменной.

Добавлено через 1 минуту
Цитата Сообщение от ASSEI Посмотреть сообщение
ошибка!
Да, значит в этой процедуре уже есть объявление s . В таком случае просто используйте другое имя для переменной.
1
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 10:15  [ТС]
да нашел у меня в комбо2 объявлена переменная "s". спасибо огромное!

Добавлено через 3 минуты
подскажите а как считать данные из ячейки этого файла или те данные которые надо после запятой?


я наверное понял
Visual Basic
1
ComboBox1.AddItem Split(z, ";")(0)
Visual Basic
1
Text1.AddItem Split(z, ";")(2)
в текстовое поле 1, 2 символ после запятой, верно?

Добавлено через 4 минуты
т.е полный код такой?
Visual Basic
1
2
3
4
5
6
7
 Dim ff As Integer, z As String, i As Integer
    ff = FreeFile
    Open App.Path & "\BD\Сотрудники.CSV" For Input As #ff
                  Input #ff, z
           Text1.AddItem Split(z, ";")(2)
             Loop
    Close #ff
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
23.06.2017, 10:45
Цитата Сообщение от ASSEI Посмотреть сообщение
данные которые надо после запятой?
У Вас там числа с запятой ? Тогда лучше читать строки полностью, вот так
Visual Basic
1
Line Input #ff, s
Цитата Сообщение от SoftIce Посмотреть сообщение
Combo1.AddItem Split(s, ";")(0)
Вот этот 0 - это номер столбца, то есть 1-й . Поставьте 1 - это будет 2-ой столбец.
Ну а со строками, надеюсь все понятно.

Добавлено через 24 минуты
Можно для удобства написать функцию. Например

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Explicit
Private Sub Command1_Click()
 
    Dim ff As Integer, z As String, i As Integer
    ff = FreeFile
    Open App.Path & "\BD\Сотрудники.CSV" For Input As #ff
        z = Input(LOF(ff), #ff)           'считывам весь файл
    Close #ff
    
    MsgBox GetValue(z, 1, 1) ' значение в первой строке и первом столбце
    
End Sub
 
Function GetValue(st As String, row As Integer, column As Integer) As String
    On Error Resume Next
    GetValue = Split(Split(st, vbCrLf)(row - 1), ";")(column - 1)
End Function
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 11:06  [ТС]
Visual Basic
1
GetValue
ругается "Sub or Function@
Цитата Сообщение от SoftIce Посмотреть сообщение
Function GetValue(st As String, row As Integer, column As Integer) As String
* * On Error Resume Next
* * GetValue = Split(Split(st, vbCrLf)(row - 1), ";")(column - 1)
End Function
поясните это пожалуйста!
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
23.06.2017, 11:14
Цитата Сообщение от ASSEI Посмотреть сообщение
ругается "Sub or Function@
покажите скрин.
1
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 12:31  [ТС]
нет нет все нормально! это мой косяк, "голова чайник не внимательный"

Добавлено через 1 час 13 минут
помогите правильно организовать поиск на основе вашего кода, а то у меня не получается:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Command10_Click()
Dim ff As Integer, z As String
Dim Family  As String, q
  ff = FreeFile
Open App.Path & "\BD\Сотрудники.CSV" For Input As #ff
        Family = InputBox("Введите Фамилию сотрудника!.", "Поиск сотрудника")
      q = GetValue(z, 0, 0)
     z = Input(LOF(ff), #ff)
 
  If q = "" Then
    MsgBox "Уточните критерии поиска", 48, "СООБЩЕНИЕ"
Else
    If Family = q Then
      Text1(7).Text = GetValue(z, 1, 7) 
            End If
            End If
               Close #ff
End Sub
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
23.06.2017, 12:56
Цитата Сообщение от ASSEI Посмотреть сообщение
организовать поиск на основе вашего кода
А что программа должна выдавать если такая фамилия найдена ?
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
23.06.2017, 12:59  [ТС]
что то вроде этого:
Цитата Сообщение от ASSEI Посмотреть сообщение
MsgBox "данные найдены", 48, "СООБЩЕНИЕ"*
Text1(7).Text = GetValue(z, 1, 7)
....
....
далее мои данные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2017, 12:59
Помогаю со студенческими работами здесь

Запись данных из массива в файл *.csv
В процессе доработки макроса, вытягивающего из страницы excel номера телефонов столкнулся с проблемой. Все работает как задумывалось, в...

Запись данных из БД в эксель или csv
Привет всем. Данную функцию записи использую, но можно ли записывать данные в файл эксель или csv не в строку с разделителями, а отдельно в...

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

Создание и запись данных в CSV файл - перевод с C#
Привет) Помогите плиз перевести проект из С# в С++. Я на С# то написал все это с гуглом, а получается так, что к понедельнику эту прогу...

Запись данных в csv файл по приходу в COM порт
Уже поднимал подобный вопрос, перерыл много информации, но так и не нашел ответа. Необходимо записывать данные в csv файл. Сначала хотел...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru