Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/35: Рейтинг темы: голосов - 35, средняя оценка - 4.94
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237

Проверка наличия файла

15.09.2013, 11:56. Показов 6754. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа работает с данными из листа Excel. Фрагмент кода такой:
VB.NET Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
    Dim app As Excel.Application = CreateObject("Excel.Application")
    Dim book As Excel.Workbook = app.Workbooks.Open(Application.StartupPath & "\Book.xlsx")
    Dim sh As Excel.Worksheet = book.Worksheets("Лист1")
    Dim r As Long = sh.UsedRange.Rows.Count
    Dim Poisk(r, 10) As String
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Dim x As Long
        For x = 1 To r
            Poisk(x - 1, 1) = sh.Range("A" & x).Value
            Poisk(x - 1, 2) = sh.Range("B" & x).Value
            Poisk(x - 1, 3) = sh.Range("C" & x).Value
            Poisk(x - 1, 4) = sh.Range("D" & x).Value
            Poisk(x - 1, 5) = sh.Range("E" & x).Value
            Poisk(x - 1, 6) = sh.Range("F" & x).Value
            Poisk(x - 1, 7) = sh.Range("G" & x).Value
            Poisk(x - 1, 8) = sh.Range("H" & x).Value
            Poisk(x - 1, 9) = sh.Range("I" & x).Value
            Poisk(x - 1, 10) = sh.Range("J" & x).Value
        Next
      book.Close()
      app.Quit(
    End Sub
End Class
Как мне организовать проверку наличия файла и если его нет, то создать его?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2013, 11:56
Ответы с готовыми решениями:

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

Проверка наличия файла в заданном каталоге и его подкаталогах
Здравствуйте. Мне нужно проверить наличие файла с расширением .k но точное название каталога в котором он находится я не знаю. Как можно...

Проверка наличия папки
Здравствуйте! Нужно проверить, существует ли папка по указанному пути. Пробовал: If Dir("D:\f1\J") <> ""...

16
Форумчанин.NET
 Аватар для AeroWhite
556 / 427 / 64
Регистрация: 12.02.2013
Сообщений: 834
15.09.2013, 12:07
FAQ
VB.NET Скопировано
1
MsgBox(IO.File.Exists("Path"))
0
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
15.09.2013, 12:32  [ТС]
VB.NET Скопировано
1
2
3
4
5
6
7
8
9
10
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
    Dim app As Excel.Application = CreateObject("Excel.Application")
    Dim book As Excel.Workbook = app.Workbooks.Open(Application.StartupPath & "\Book.xlsx")
    Dim sh As Excel.Worksheet = book.Worksheets("Лист1")
    Dim r As Long = sh.UsedRange.Rows.Count
    Dim Poisk(r, 10) As String
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    End Sub
End Class
Если бы всё было бы так просто...
Msg подчеркивает(требуется объявление). т.к открываю лист Excel вне какой-либо процедуры и события. Делаю я это чтоб задать размеры массвива, который я буду использовать дальше:Form1_Load, NumericUpDown1_ValueChanged, TextBox1_TextChanged. Если строчки
VB.NET Скопировано
1
2
3
4
5
6
 
    Dim app As Excel.Application = CreateObject("Excel.Application")
    Dim book As Excel.Workbook = app.Workbooks.Open(Application.StartupPath & "\Book.xlsx")
    Dim sh As Excel.Worksheet = book.Worksheets("Лист1")
    Dim r As Long = sh.UsedRange.Rows.Count
    Dim Poisk(r, 10) As String
переместить в Form_load(где я бы без проблем мог проверить наличие файла), то в остальных событиях Poisk и r подчеркиваются(не объявлен.Может быть не доступен из-за своего уровня защиты)
0
Форумчанин.NET
 Аватар для AeroWhite
556 / 427 / 64
Регистрация: 12.02.2013
Сообщений: 834
15.09.2013, 12:35
VB.NET Скопировано
1
2
3
4
5
If IO.File.Exists("Путь") Then
'Действие
Else
MsgBox("Файла нет!")
End If
...
0
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
15.09.2013, 12:44  [ТС]
Не печатается после Public Class Form1 ни If ни Try ни Msg. Все подчеркивает. (Visual Studio 2012)
0
Форумчанин.NET
 Аватар для AeroWhite
556 / 427 / 64
Регистрация: 12.02.2013
Сообщений: 834
15.09.2013, 12:49
Это писать в загрузке формы, в вашем случае так
VB.NET Скопировано
1
2
3
4
5
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If Not IO.File.Exists("Путь") Then ' Проверка файла
IO.File.Create("Путь") 'Если нет, то создать
End If
    End Sub
И в самом верху:
VB.NET Скопировано
1
Imports System.IO
0
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
15.09.2013, 13:04  [ТС]
Сделал как вы сказали. Результат: Нет доступных исходных данных.
Ошибка при создании формы. См. Exception.InnerException. Ошибка: К сожалению, нам не удалось найти файл C:\Users\admin\Documents\Visual Studio 2012\Projects\Журнал2\Журнал2\bin\Debug\ Book.xlsx. Возможно, он был перемещен, переименован или удален?
0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.09.2013, 13:27
Цитата Сообщение от Harttman Посмотреть сообщение
Ошибка при создании формы
Это может свидетельствовать о том, что идет обращение к файлу где-то в объявлениях класса формы.
В классе формы объявите переменные
VB.NET Скопировано
1
2
3
    Dim app As Excel.Application 
    Dim book As Excel.Workbook 
.....
А присваивайте им значения в загрузке, например:

VB.NET Скопировано
1
2
3
app = CreateObject("Excel.Application")
'Проверка файла, и если есть, то
book = app.Workbooks.Open(Application.StartupPath & "\Book.xlsx")
0
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
15.09.2013, 13:34  [ТС]
Повторюсь: Я открываю лист Excel в объявлениях класса формы. Делаю я это чтоб задать размеры массива, который я буду использовать дальше в Form1_Load, NumericUpDown1_ValueChanged, TextBox1_TextChanged. Если строчки
VB.NET Скопировано
1
2
3
4
5
Dim app As Excel.Application = CreateObject("Excel.Application")
* * Dim book As Excel.Workbook = app.Workbooks.Open(Application.StartupPath & "\Book.xlsx")
* * Dim sh As Excel.Worksheet = book.Worksheets("Лист1")
* * Dim r As Long = sh.UsedRange.Rows.Count
* * Dim Poisk(r, 10) As String
переместить в Form_load(где я бы без проблем мог проверить наличие файла), то в остальных событиях, массив Poisk и переменная r подчеркиваются(не объявлен.Может быть не доступен из-за своего уровня защиты) и я не могу их использавать.
0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.09.2013, 13:44
Harttman, я Вам нигде не рекомендовал эти строчки перенести в загрузку формы.
В классе Вы только делаете объявление, но ничего переменным не присваиваете. В загрузке Вы присваиваете значения уже объявленным переменным.

А Вы и объявляете и присваиваете - в одном и том же месте.
Или я что-то не догоняю?
1
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
15.09.2013, 14:00  [ТС]
Все, понял где я затупил. Спасибо за помощь! Сделал все как посоветовал Памирыч. Вот только созданный файл не открывается Ошибка:"Не удается открыть файл "Book.xlsx", так как форма или расширение этого файла являются не допустимыми." Судя по всему я не правильно создаю файл:
IO.File.Create(Application.StartupPath & "\Book.xlsx")
0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.09.2013, 14:01
Цитата Сообщение от Harttman Посмотреть сообщение
Судя по всему я не правильно создаю файл
Скорее всего. Посмотрите на его размер - вполне возможно, это файл в 0 байт, что может быть, недопустимо
0
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
15.09.2013, 14:09  [ТС]
Именно. Как корректно создать файл?
0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.09.2013, 17:00
Harttman, вроде есть какие-то программные средства для создания файлов. В моих программах файл создается не пустой, а с множеством таблиц, формул и прочего, поэтому я выгружаю его из файлов ресурсов. Если нужно просто создать новый файл - можно сделать и так, а можно подождать советов умельцев.
0
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
15.09.2013, 18:22  [ТС]
Спасибо, разбрался сам
0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.09.2013, 19:34
Harttman, расскажите и нам, вдруг кому-то понадобится
0
 Аватар для Harttman
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
15.09.2013, 21:55  [ТС]
Как-то так
VB.NET Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim i As MsgBoxResult
        If Not IO.File.Exists(Application.StartupPath & "\Book.xlsx") Then
            i = MsgBox("Файл не найден!" & vbCrLf & "Создать новый файл?", MsgBoxStyle.OkCancel, "Отсутствует файл")
            If i = MsgBoxResult.Ok Then
                app = New Excel.Application
                book = app.Workbooks.Add
                sh = book.Sheets("Лист1")
                book.SaveAs(Application.StartupPath & "\Book.xlsx")
                book.Close()
                app.Quit()
            Else
                MsgBox("Работа программы невозможна!" & vbCrLf & "Отсутствует файл!", MsgBoxStyle.Critical, "Завершение")
                Me.Close()
                Exit Sub
            End If
        End If
End Sub
Кривовато наверное, но работает..
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2013, 21:55
Помогаю со студенческими работами здесь

Проверка наличия дискеты в дисководе.
Как проверить 1. Находится ли дискета в дисководе? 2. Отформатирована ли она? Спасибо.

Проверка наличия таблицы в БД Access
При запуске программы нужно проверить есть ли в файле access определенная таблица. Это нужно что бы пользователь не заменил файл...

Проверка наличия пути в TextBox
Здравствуйте! Подскажите пожалуйста, как осуществить проверку на наличие пути в TextBox. Есть кнопка, запускающая процедуру после...

Проверка наличия папки на FTP
Всем доброго времени суток. У меня есть проблема с определением папок на FTP сервере. Задача заключается в том, что нужно проверить...

Проверка наличия записи в реестре
Для автозапуска программы внёс в реестр: Dim Start As Microsoft.Win32.RegistryKey =...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер