Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662

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

22.06.2017, 17:03. Показов 4370. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru