Страницы: 1
RSS
VBA макрос: на сайте - ОБЗОР - диалоговое окно - выбор файла - загрузить
 
Здравствуйте!
Помогите пожалуйста с кодом...
Есть определенная веб страничка, на которой есть возможность загрузки файла "UPLOAD" ...где нажимаешь на "обзор" - открывается окно моей винды "диалоговое окно" и там я выбираю тот файл, который мне необходимо загрузить
Вот отдельная часть кода...
Код
    'Find and mark object(Datei Browse)
        Do While j < Collection1.Length
            If Collection1(j).Name = "Datei" Then
                Collection1(j).Click
                Collection1(j).Value = "C:\Users\Admin\Dropbox\SWEBGO.de\Excel Files\BA.csv"
                Exit Do
            End If

а вот целый код:
Код
Sub Import()
On Error GoTo MyErrorHandler:
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.DisplayStatusBar = True
    Application.DisplayAlerts = True
    
    Dim i, j, n, m As Integer
    Dim IE, Collection1, Collection2, Collection3 As Object
    
    ' Create InternetExplorer Object
       Set IE = CreateObject("InternetExplorer.Application")
       IE.Visible = True
            
    ' GoTo Product
       IE.navigate "https://farm01.afterbuy.de/afterbuy/im-export.aspx?DT=1"
 
    'StatusBar
       Application.StatusBar = "Loading. Please wait..."
    
    'Wait while IE loading...
        Do While IE.Busy
            Application.Wait DateAdd("s", 1, Now)
        Loop
    
    Application.StatusBar = "Search form submission. Please wait..."
            
    'Set objects
        Set Collection1 = IE.Document.getElementsByTagName("input")
        Set Collection2 = IE.Document.getElementsByTagName("select") 
        
    'Find and mark object(Daten importieren)
        j = 0
        Do While j < Collection1.Length
            If Collection1(j).ID = "artImport" Then
                Collection1(j).Click
                Exit Do
            End If
            j = j + 1
        Loop
        
    'Find and mark object(Definition)
        i = 0
        Do While i < Collection2.Length
            If Collection2(i).Name = "definition" Then
                Collection2(i).Value = "64138"
                Exit Do
            End If
            i = i + 1
        Loop
               
    'Find and mark object(Datei Browse)
        Do While j < Collection1.Length
            If Collection1(j).Name = "Datei" Then
                Collection1(j).Click
                Collection1(j).Value = "C:\Users\Admin\Dropbox\SWEBGO.de\Excel Files\BA.csv"
                Exit Do
            End If
            j = j + 1
        Loop
        
    'Find and mark object(Daten nicht neu anlegen)
        Do While j < Collection1.Length
            If Collection1(j).Name = "NoAddData" Then
                Collection1(j).Click
                Exit Do
            End If
            j = j + 1
        Loop
        
    'Find and mark object(Ausführen)
        Do While j < Collection1.Length
            If Collection1(j).Value = "Ausführen" Then
                Collection1(j).Click
                Exit Do
            End If
            j = j + 1
        Loop
        
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
    Application.DisplayStatusBar = False
    Application.DisplayAlerts = False
Exit Sub
     
MyErrorHandler:
        MsgBox "Oh no! Something has gone wrong... Check internet connetion and products variables values"
End Sub
 
Цитата
shlika написал: Есть определенная веб страничка...
Есть, открывается, выбираю....А надо-то что? Что именно из всего этого не получается? Не знаете как вызвать диалоговое окно выбора файла? Или что? Если да - то здесь вполне подробно расписывал: Диалоговое окно выбора файлов/папки
Вам останется только вместо "C:\Users\Admin\Dropbox\SWEBGO.de\Excel Files\BA.csv" подставить x или avFiles(1) - в зависимости от выбранного метода.
Диалоговое окно лучше показывать ДО перехода на сайт - чтобы путь к файлу был наготове.
Изменено: The_Prist - 09.01.2017 13:13:49
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Благодарю, что отозвались...
Теперь проблема в том куда и как подставить данный код...я его взял с Вашей ссылки
Код
Sub ShowGetOpenDialod_Single()
    Dim avFiles
    'по умолчанию к выбору доступны текстовые файлы
    avFiles = Application.GetOpenFilename _
                ("Excel files(*.csv*),*.csv*", 1, "Select Excel Files", , False)
    If VarType(avFiles) = vbBoolean Then
        'была нажата кнопка отмены - выход из процедуры
        Exit Sub
    End If
    'avFiles - примет тип String
    MsgBox "File is selected!: '" & avFiles & "'", vbInformation, "www.excel-vba.ru"
    Workbooks.Open avFiles
End Sub


и где указать тот BA.csv файл, который мне нужно всегда выбирать?

или для того, что мне нужно подойдет вот этот код?
Код
Visual Basic

Sub ShowFileDialog()
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Выбрать файлы отчетов" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xla*", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 2 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = "С:\Temp\Книга1.xlsx" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If oFD.Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
            x = .SelectedItems(lf) 'считываем полный путь к файлу
            Workbooks.Open x 'открытие книги
            'можно также без х
            'Workbooks.Open .SelectedItems(lf)
        Next
    End With
End Sub

Sub ShowFileDialog()
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Выбрать файлы отчетов" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xla*", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 2 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = "С:\Temp\Книга1.xlsx" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If oFD.Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
            x = .SelectedItems(lf) 'считываем полный путь к файлу
            Workbooks.Open x 'открытие книги
            'можно также без х
            'Workbooks.Open .SelectedItems(lf)
        Next
    End With
End Sub
Изменено: shlika - 09.01.2017 15:38:38
 
м-да...а код загрузки-то откуда взяли? Просто ощущение, что Вы сами-то не знаете что он точно делает и где чего вообще менять. Он точно загружает? Проверяли?

По идее вставить-то не проблема:
Код
Sub Import()
On Error GoTo MyErrorHandler
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.DisplayStatusBar = True
    Application.DisplayAlerts = True
     
    Dim i, j, n, m As Integer
    Dim IE, Collection1, Collection2, Collection3 As Object
    Dim avFiles    'по умолчанию к выбору доступны текстовые файлы
    avFiles = Application.GetOpenFilename _
                ("Excel files(*.csv*),*.csv*", 1, "Select Excel Files", , False)
    If VarType(avFiles) = vbBoolean Then
        'была нажата кнопка отмены - выход из процедуры
        Exit Sub
    End If
    'avFiles - примет тип String
    ' Create InternetExplorer Object
       Set IE = CreateObject("InternetExplorer.Application")
       IE.Visible = True
             
    ' GoTo Product
       IE.navigate "https://farm01.afterbuy.de/afterbuy/im-export.aspx?DT=1"
  
    'StatusBar
       Application.StatusBar = "Loading. Please wait..."
     
    'Wait while IE loading...
        Do While IE.Busy
            Application.Wait DateAdd("s", 1, Now)
        Loop
     
    Application.StatusBar = "Search form submission. Please wait..."
             
    'Set objects
        Set Collection1 = IE.Document.getElementsByTagName("input")
        Set Collection2 = IE.Document.getElementsByTagName("select") 
         
    'Find and mark object(Daten importieren)
        j = 0
        Do While j < Collection1.Length
            If Collection1(j).ID = "artImport" Then
                Collection1(j).Click
                Exit Do
            End If
            j = j + 1
        Loop
         
    'Find and mark object(Definition)
        i = 0
        Do While i < Collection2.Length
            If Collection2(i).Name = "definition" Then
                Collection2(i).Value = "64138"
                Exit Do
            End If
            i = i + 1
        Loop
                
    'Find and mark object(Datei Browse)
        Do While j < Collection1.Length
            If Collection1(j).Name = "Datei" Then
                Collection1(j).Click
                Collection1(j).Value = avFiles 'именно сюда ставим переменную с полным путем до выбранного файла "C:\Users\Admin\Dropbox\SWEBGO.de\Excel Files\BA.csv"
                Exit Do
            End If
            j = j + 1
        Loop
         
    'Find and mark object(Daten nicht neu anlegen)
        Do While j < Collection1.Length
            If Collection1(j).Name = "NoAddData" Then
                Collection1(j).Click
                Exit Do
            End If
            j = j + 1
        Loop
         
    'Find and mark object(Ausführen)
        Do While j < Collection1.Length
            If Collection1(j).Value = "Ausführen" Then
                Collection1(j).Click
                Exit Do
            End If
            j = j + 1
        Loop
         
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
    Application.DisplayStatusBar = False
    Application.DisplayAlerts = False
Exit Sub
      
MyErrorHandler:
        MsgBox "Oh no! Something has gone wrong... Check internet connetion and products variables values"
End Sub
Изменено: The_Prist - 09.01.2017 15:22:53
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, загружает только до момента открытия диалогового окна

то есть вот так?

Код
 Do While j < Collection1.Length
            If Collection1(j).Name = "Datei" Then
                Collection1(j).Click
                Collection1(j).Value = avFiles "C:\Users\Admin\Dropbox\SWEBGO.de\Excel Files\BA.csv"
                Exit Do
            End If
            j = j + 1
        Loop
Изменено: shlika - 09.01.2017 15:10:31
 
Цитата
shlika написал:
то есть вот так?
Я Вам привел готовый код. Ничего там править уже не надо. Кроме первой строки, как я сейчас вижу - надо строку On Error GoTo MyErrorHandler: перенести на новую. И двоеточие на конце убрать, оно там не надо(поправил в предыдущем сообщении).
Если в нем что-то не загружается - вполне возможно, что код загрузки тоже не очень верен. У меня произошел выбор файла, открытие IE. Но вход не был произведен и файл, естественно, не загружен.

P.S. Во всех Loop-ах очень не хватает DoEvents. Есть большой шанс словить зависание, излечимое исключительно перезагрузкой Excel.
Изменено: The_Prist - 09.01.2017 15:22:33
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, почему он путь не указывает?
C:\Users\Admin\Dropbox\SWEBGO.de\Excel Files\BA.csv
он прописан как коммент что ли?
извиняюсь, может быть за глупый вопрос
 
Кто путь не указывает? Где не указывает? В чем вопрос?
avFiles - уже содержит полный путь и имя выбранного файла. Что Вам надо еще?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, у меня файл не выбирает...просто открывает диалоговое окно и по умолчанию стоит путь моим документам
Изменено: shlika - 09.01.2017 15:57:28
 
Ну да. Появляется окно в котором ВЫ ДОЛЖНЫ УКАЗАТЬ ФАЙЛ, который надо вставить. Иначе зачем вообще окно выбора файла?

И вообще: что изначально-то надо было? Я спросил и сделал предположение - но точного ответа чего надо так и не получил...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,
Ме необходимо сделать следующее:

Автоматически загрузить в фоновом режиме файл экселевский на одном сайте
картинку я выставил...все выглядит примерно так, как будто я загружаю фотографии в соц сеть
 
И?
Приведенный Вами изначально код это делает? Или нет?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,
да только мне необходимо чтобы макрос сам вставлял тот файл, который находится по определенному пути, а не я чтобы это делал...а то диалоговое окно открывается а ничего не происходит...или я чего то не понял...
 
Поясните нормально что происходит сейчас и что надо сделать?
Как макрос поймет какой файл - ТОТ? Вы заранее знаете где он расположен и как называется? Но на сайт автоматом не загружается? Или что? Для каких целей приведен код в первом сообщении?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Да, верно!
Я знаю заранее, где этот файл будет находится...он там будет всегда
Расположен он C:\Users\Admin\Dropbox\SWEBGO.de\Excel Files\
и называется BA.csv
На сайт автоматом не загружается
то есть мне необходимо полностью автоматизировать процесс: пойти на сайт - поставить точки/галочки....- выбрать файл - и загрузить ее на сайт...
это то что и прописано в коде в первом сообщении...но проблема как раз возникла на выборе файла из диалогового окна
Изменено: shlika - 09.01.2017 17:10:39
 
Цитата
shlika написал: он там будет всегда
Цитата
shlika написал: и называется BA.csv
И зачем вам диалоговое окно, если ничего выбирать не нужно?
 
RAN, файл будет находится в определенном месте всегда...но чтобы мне его выбрать и загрузить на сайт...мне же нужно как то этот процесс через диалоговое окно организовать...
 
Цитата
shlika написал: но чтобы мне его выбрать
ЧТО ВЫБРАТЬ? 1 из 1? Спорим, что выбор всегда будет один?  :D
 
RAN, файл выбрать
 
Цитаты в #16 правильные?
Тогда через какое место ни выбирай "яблоко в корзине", всегда выберешь "яблоко в корзине". Зачем иметь возможность выбрать "Козьи Наки в корзине"?
 
Кажись Вы не от того отталкиваетесь. Опишите суть. Не надо предположений. Если файл всегда один и он всегда в одной и той же папке - его 100% не надо выбирать руками. Путь жестко прописывается в коде.
У Вас же проблема совершенно иная - надо сделать загрузку этого файла на сайт. А это уже куда сложнее. Я не смог, например, авторизоваться на сайте - нет у меня логина и пароля там. И что делать для загрузки файла я тоже не знаю. Поэтому: опишите пошагово именно тот процесс, который надо автоматизировать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,
Вроде выше в одном из сообщений я вставил картинку с последовательностью действий
http://dropmefiles.com/ - вот пример можно проделать с этим сайтом для загрузки файлов

проще объяснить никак
через макрос загрузить файл находящийся у меня на компьютере вот на этот сервис http://dropmefiles.com/
и все
 
Можно и без браузера обойтись
http://excelvba.ru/code/uploadfile
Страницы: 1
Читают тему
Наверх