powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с меню
35 сообщений из 35, показаны все 2 страниц
Работа с меню
    #38114214
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Открывал так когда знал путь и конкретный файл:
Код: vbnet
1.
Set xlsWb = xlsApp.Workbooks.Open("C:\Documents and Settings\User\отчет.xls")


А когда все меняется хотелось бы загружать путь сюда:
Код: vbnet
1.
Set xlsWb = xlsApp.Open("СЮДА")


Допустим вот так сделал:
Код: vbnet
1.
2.
3.
4.
fileToOpen = xlsApp.GetOpenFilename("Only these Files (*.txt;*.doc;*.xls), *.txt; *.doc; *.xls")
If fileToOpen <> False Then

End If


А как написать чтобы путь поместить куда нужно?
...
Рейтинг: 0 / 0
Работа с меню
    #38114420
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Техник55,

Set xlsWb = xlsApp.Open( fileToOpen )
?? Это основы основ
...
Рейтинг: 0 / 0
Работа с меню
    #38114422
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее так, не усмотрел что вы зачем то отбросили Workbooks. Метода Open нет у Application
Код: vbnet
1.
Set xlsWb = xlsApp.Workbooks.Open(fileToOpen)
...
Рейтинг: 0 / 0
Работа с меню
    #38114428
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так и пробовал. И не пошло...
Как раз забыл WorkBooks, вот и спросил.
...
Рейтинг: 0 / 0
Работа с меню
    #38114446
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все равно ошибку выдает
object variable or with variable not set
...
Рейтинг: 0 / 0
Работа с меню
    #38114671
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Техник55,

на какой строке ? xlsApp инициализирован ?
...
Рейтинг: 0 / 0
Работа с меню
    #38114862
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант кода:
Код: vbnet
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.
26.
27.
28.
Sub Test()
  
  Dim xlsApp As Object
  Dim xlsWb As Object
  Dim fileToOpen As Variant
  
  On Error Resume Next
  Set xlsApp = GetObject(, "Excel.Application")
  If Err Then Set xlsApp = CreateObject("Excel.Application")
  On Error GoTo exit_
  
  xlsApp.Visible = True
  
  fileToOpen = xlsApp.GetOpenFilename("Excel files (*.xls*), *.xls*")
  If fileToOpen <> False Then
    Set xlsWb = xlsApp.workbooks.Open(fileToOpen)
  End If
  
  ' ...
  
exit_:
  
  Set xlsWb = Nothing
  Set xlsApp = Nothing
  
  If Err Then MsgBox Err.Description, "Error #" & Err.Number
  
End Sub
...
Рейтинг: 0 / 0
Работа с меню
    #38114864
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все разобрался надо было в модуле объявить Dim xlsApp As Object, а активацию в событии Form_Load()
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Option Explicit
Dim xlsApp As Object
 
Private Sub Form_Load()
Set xlsApp = CreateObject("Excel.Application")
xlsApp.Visible = True
End Sub
...
Рейтинг: 0 / 0
Работа с меню
    #38114872
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVI
Код: vbnet
1.
  If Err Then MsgBox Err.Description, "Error #" & Err.Number


Должно быть так:
Код: vbnet
1.
  If Err Then MsgBox Err.Description, [color=red]16[/color], "Error #" & Err.Number

[/quot]
...
Рейтинг: 0 / 0
Работа с меню
    #38114878
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, не проверил тэги, должно быть так:
If Err Then MsgBox Err.Description, 16 , "Error #" & Err.Number
...
Рейтинг: 0 / 0
Работа с меню
    #38114885
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVIВариант кода:
Код: vbnet
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.
26.
27.
28.
Sub Test()
  
  Dim xlsApp As Object
  Dim xlsWb As Object
  Dim fileToOpen As Variant
  
  On Error Resume Next
  Set xlsApp = GetObject(, "Excel.Application")
  If Err Then Set xlsApp = CreateObject("Excel.Application")
  On Error GoTo exit_
  
  xlsApp.Visible = True
  
  fileToOpen = xlsApp.GetOpenFilename("Excel files (*.xls*), *.xls*")
  If fileToOpen <> False Then
    Set xlsWb = xlsApp.workbooks.Open(fileToOpen)
  End If
  
  ' ...
  
exit_:
  
  Set xlsWb = Nothing
  Set xlsApp = Nothing
  
  If Err Then MsgBox Err.Description, "Error #" & Err.Number
  
End Sub



ZVI,

Код: vbnet
1.
If fileToOpen <> False Then 



равносильно и проще

Код: vbnet
1.
If fileToOpen Then
...
Рейтинг: 0 / 0
Работа с меню
    #38114953
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, вот при создании допустим нового файла:
Код: vbnet
1.
Set xlsWb1 = xlsApp.Workbooks.Add


как ему имя дать?
xlsWb1="новое имя" ????
...
Рейтинг: 0 / 0
Работа с меню
    #38114971
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Техник55Подскажите, вот при создании допустим нового файла:
Код: vbnet
1.
Set xlsWb1 = xlsApp.Workbooks.Add


как ему имя дать?
xlsWb1="новое имя" ????Имя книге дается лишь при ее сохранении.
...
Рейтинг: 0 / 0
Работа с меню
    #38115016
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно, плохо. Мне просто необходимо работать с двумя файлами xls и надо с одного переходить на другой:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
xlsApp.Windows("отчет.xls").Activate
                xlsApp.Cells(R, 1).Select
                xlsApp.Selection.Copy
    
                xlsApp.Windows(???????????).Activate
                xlsApp.Cells(R, 1).Select
                xlsApp.ActiveSheet.Paste
...
Рейтинг: 0 / 0
Работа с меню
    #38115044
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Техник55Мне просто необходимо работать с двумя файлами xls и надо с одного переходить на другой:1) Мне надо дать имя файлу
2) Мне необходимо переходить с одного файла на другой
3) Мне необходимо скопировать диапазон из одной книги в другую книгу
определись, что хошь на самом деле?

для решения задачи 3) пункты 1) и 2) ни разу не требуются:
Код: vbnet
1.
workbooks("книга1").Worksheets("Лист1").range("A2").Copy workbooks("книга2").Worksheets("Лист1").range("A3")
...
Рейтинг: 0 / 0
Работа с меню
    #38115051
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и вот это еще почитай
...
Рейтинг: 0 / 0
Работа с меню
    #38115586
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да интересно была ссылка по переделке макроса:
Когда делал так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
xlsApp.Windows("1.xls").Activate
                xlsApp.Cells(R, 1).Select
                xlsApp.Selection.Copy
    
               xlsApp.Windows("2.xls").Activate
                xlsApp.Cells(R, 1).Select
                xlsApp.ActiveSheet.Paste


То из одного файла переносилось так как есть в другой. Я имею допустим были ячейки объединенные, центрирование текста итд.
А когда так:
Код: vbnet
1.
 xlsSh.Cells(R, 1).Copy xlsSh1.Cells(R, 1)


То все ужалось в одну ячейку и все, выходит копирование не равнозначное?!
...
Рейтинг: 0 / 0
Работа с меню
    #38115588
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а .Cells(R, 1) - это и есть одна ячейка. указывай диапазон
...
Рейтинг: 0 / 0
Работа с меню
    #38115601
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proдля решения задачи 3) пункты 1) и 2) ни разу не требуются:

И еще момент. У Вас указаны книги 1 и 2, а если уже какая то книга будет открыта и в этот момент я запущу прогу свою, тогда вновь созданная уже будет книга N, а у меня четко будет прописано книга1 или2?
...
Рейтинг: 0 / 0
Работа с меню
    #38115606
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто создает эту книгу? Твой код? Тогда тебе вообще пофиг как она называется, у тебя на нее прямая ссылка есть.
...
Рейтинг: 0 / 0
Работа с меню
    #38115623
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proа .Cells(R, 1) - это и есть одна ячейка. указывай диапазон
Во-первых R у меня переменная.
Во-вторых: в исходной файле были ячейки A10:J10 объединены и в итоге она получила имя A10, поэтому я и копирую А10, но объединение не переносится.
Если только перед copy объеденить массив
Код: vbnet
1.
xlsApp.Workbooks("книга1").Worksheets("книга1").Range("AR:JR").Merge


Правда он не понимает что R-переменная, где то накосячил я.
...
Рейтинг: 0 / 0
Работа с меню
    #38115626
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
xlsApp.Workbooks("книга1").Worksheets("лист1").Range("AR:JR").Merge
...
Рейтинг: 0 / 0
Работа с меню
    #38115634
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Техник55Правда он не понимает что R-переменная, где то накосячил я.
Правильно, ты же ему не объяснил, где у тебя тект, а где переменная:
Код: vbnet
1.
xlsApp.Workbooks("книга1").Worksheets("книга1").Range("A" & R & ":J" & R).Merge



Но зачем объединять-то? прямо этот Range и копируй.
...
Рейтинг: 0 / 0
Работа с меню
    #38115678
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точно не указал
правильно зачем объединять, сразу диапазаон брать. Просто думал это не правильное будет обращение, раз объединили то нужно одну ячейку указывать, ОШИБАЛСЯ...
...
Рейтинг: 0 / 0
Работа с меню
    #38115860
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите вот есть папка(дирректория) в ней файлы с имена п.1, п.2 итд. Нужно указать путь до них через как бы обзор, чтобы потом проверять наличие этих файло п.1, п.2
Код: vbnet
1.
2.
For S = 1 To 40
   If Dir("C:.........." & "\п." & Val(S) & ".*") <> "" Then


Может использовать CommonDialog1.ShowOpen, только не знаю как?
...
Рейтинг: 0 / 0
Работа с меню
    #38115881
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Техник55Может использовать CommonDialog1.ShowOpen, только не знаю как?Есть на клавиатуре такая кнопка волшебная - F1.
Там и примеры есть для всех видов диалогов.
Ну и на форуме, конечно же можно найти.

ЗЫ: Зачем тут Val() ?
...
Рейтинг: 0 / 0
Работа с меню
    #38116198
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в принципе разобрался с CommonDialogs
Код: vbnet
1.
2.
3.
CommonDialog1.ShowOpen
For S = 1 To 40
   If Dir(CommonDialog1.Initdir & "п."  & S & ".*") <> "" Then


Заходишь в директорию выбираешь любую папку и все.
Нам главное путь к дирректории CommonDialog1.Initdir.
Но одна проблемма если папка будет пуста то директория не установится, нужны любые файлы.
Видимо для выбора каталога не очень подходит. Ей хорошо открывать конкретные файлы.
...
Рейтинг: 0 / 0
Работа с меню
    #38116221
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поищи, тут где-то приводился пример с диалогом выбора папки. Ну или можно его сделать из компонентов DirListBox и DriveListBox
...
Рейтинг: 0 / 0
Работа с меню
    #38116231
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, с помощью этого решил
Код: vbnet
1.
BrowseForFolder
...
Рейтинг: 0 / 0
Работа с меню
    #38116234
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProКто создает эту книгу? Твой код? Тогда тебе вообще пофиг как она называется, у тебя на нее прямая ссылка есть.
Проблемка все таки осталась. Да мой код создает эту книгу:
Код: vbnet
1.
Set xlswb1 = xlsApp.Workbooks.Add


Вот если нет окрытых книг, то он называет новый Книга1.
Но допустим я не стал закрывать Книга1 и запустил снова код, то он создает книгу2 и как вы говорите и ссылается на нее.
А при копировании у меня четко прописано что в книгу 2 и ошибка вылазит?!
...
Рейтинг: 0 / 0
Работа с меню
    #38116236
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А при копировании у меня четко прописано что в книгу 1 и ошибка вылазит?!
...
Рейтинг: 0 / 0
Работа с меню
    #38116416
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Техник55А при копировании у меня четко прописано что в книгу 2 и ошибка вылазит?!Вам же ответили - у вас есть xlswb1 , вот через этот объект и обращайтесь, он и будет новой книгой. Откуда вы взяли, что надо именно написать "книга 2"? Патамушта "гладиолус"?
...
Рейтинг: 0 / 0
Работа с меню
    #38116463
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM Патамушта "гладиолус"?
Это точно...
...
Рейтинг: 0 / 0
Работа с меню
    #38116485
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Техник55Проблемка все таки осталась.вместо xlsApp.Workbooks("книга1") пиши xlswb1 и будет тебе щастье.
...
Рейтинг: 0 / 0
Работа с меню
    #38116503
Техник55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо разобрался.
Я до этого пробовал как Вы сказали, была ошибка.
Надо было объявить глобально:
Код: vbnet
1.
2.
3.
4.
5.
Dim xlsWb  As Object
Dim xlsSh   As Object
Dim xlsWb1  As Object
Dim xlsSh1   As Object
 Dim xlsApp As Object


И теперь мне ЧАСТЬЕ
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с меню
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]