Ошибка (Нижний индекс вне интервала) в Excel (Macros-Vda)

Моя проблема - следующая. Я стараюсь делать кнопку с которым:

  1. Ищите Файл excel
  2. Выбрав это, скопировав только поля с данными о ранге A
  3. Что закрыл для себя файл
  4. Что прикрепил данные в настоящем excel deode, у меня есть макрос

Мы это используем, но меня бросает ошибка (Subindice fuera de intervalo) и я не могу soluccionarlo.

 'VBA Excel'
 Sub Prueba()

 Dim ss As Workbook
 Dim archivo As Workbook
 Dim nombreArchivo As Variant

 Set ss = ActiveWorkbook
 nombreArchivo = Application.GetOpenFilename(FileFilter:="Excel Files,*.xl*;*.csv*")

 If nombreArchivo = False Then
     Exit Sub
 Else
     With Application
         .ScreenUpdating = False
         .EnableEvents = False
     End With
 End If

 Set archivo = Workbooks.Open(nombreArchivo)

 Dim AA As String
 AA = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row

 archivo.Sheets("Hoja1").Range("A1:A" & AA).Copy: ss.Sheets("Hoja1").Range("A1").PasteSpecial xlPasteValues

 Application.GoTo ss.Sheets("Hoja1").Range("A1")


  For Each celda In Range("A1:A" & AA)
       celda.Value = Replace(celda.Value, "|", ",")
    Next


 archivo.Close
 End Sub

Если оно я функционировало с этим, но когда это файл .csv, он получается ту же ошибку, но ли он excel нормально нормально я coje (Нижний индекс вне интервала)

introducir la descripción de la imagen aquí

но одновременно он состоял в том, чтобы менять ее "|" в"," это, если оно я функционирует tambie, хотело меняния формата csv, который общий в текст, так как он бросает меня с запятыми и только выходит хорошо с форматом текста

2
задан 28.05.2019, 15:51
1 ответ

Ошибка Subíndice fuera de intervalo случается из-за ошибки адресации, когда мы пробуем соглашаться, с Г-ndice, на объект, который не существует. Эта ошибка может давать себе в любой lГ-nea cГіdigo, что у него был intenciГіn соглашения на лист в особенности и она не была расположенной напротив. Смоги быть, потому что имя или nГєmero листа они не совпадают. Если мы обращаем внимание, в тебе cГіdigo ты звонишь во все листы Hoja1 , но в главной книге лист, кажется, называется:

PadresHijos_Base_201712051632

En этот cГіdigo заменили имена листов "Hoja1" на 1. Мы будем должны изменять наше cГіdigo для того, чтобы он приспособился к нашей книге.

изменил конечную часть, которую он обнаруживает, если или нет carГЎcter separaciГіn и actГєa как следствие. Конечно принимают файлы .scv и .xlsm

Файл, открытый, чтобы получать данные, может закрыться однажды мы скопировали данные без необходимости вынуждать изменение книги с

Application.GoTo ss.Sheets("Hoja1").Range("A1")

Все эти изменения верьте в один cГіdigo mГЎs читабельно и они улучшают результат как например удалять ELSE вслед за нею lГ-nea

If nombreArchivo = False Then Exit Sub

LГіgicamente, если nombreArchivo не является фальшивым (существует) все cГіdigo последующий в if serГЎ выполненный а следовательно использовать else не необходимо.

'Vba'
'Ejemplo con carácter de separación ";"'
Sub Prueba()

Dim ss As Workbook
Dim archivo As Workbook
Dim nombreArchivo As Variant
Dim AA As String
Dim pos As Integer

    Set ss = ActiveWorkbook
    nombreArchivo = Application.GetOpenFilename(FileFilter:="Excel Files,*.xl*;*.csv*")

    'No hace falta ELSE'
    If nombreArchivo = False Then Exit Sub

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set archivo = Workbooks.Open(nombreArchivo)
    AA = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
    archivo.Sheets(1).Range("A1:A" & AA).Copy: ss.Sheets(1).Range("A1").PasteSpecial xlPasteValues
    archivo.Close
    For Each celda In ss.Sheets(1).Range("A1:A" & AA)
        'Aquí pones el simbolo separador, en tu caso "|"'
        v_pos = InStr(1, celda, ";") - 1
        'Esta línea detecta si hay carácter de separación o no'
        If v_pos < 1 Then v_pos = Len(celda)
        celda.Value = Left(celda, v_pos)
    Next
End Sub

, Оказанные, когда этот скроллирует cГіdigo на файлах .scv и .xlsm Resultado del código

1
ответ дан 03.12.2019, 02:00