VB macro - ошибка времени выполнения '13' для каждого цикла - PullRequest
0 голосов
/ 28 февраля 2011

я знаю, что могли быть такие вопросы.Но я действительно незнаком с VB, поэтому мне нужна помощь, пожалуйста.Вот часть кода:

    Sub Convert_to_Digi()

    Dim SrcWkb As Workbook
    Dim csvWkb As Workbook
    Dim srcSheet As Worksheet
    Dim StartRow As Long
    Dim wkbname As Variant
    Dim xlsFiles As Variant
    Dim MyRange As Range
    Dim NewName As Variant
    Dim csvName As String

    StartRow = 2

    ' Get the workbooks to open
    xlsFiles = Application.GetOpenFilename(FileFilter:="Excel files (*.xls), *.xls", MultiSelect:=True)
    If VarType(xlsFiles) = vbBoolean Then Exit Sub

    ' Loop through each workbook and copy the data to this CSV
     For Each wkbname In xlsFiles
        Set SrcWkb = Workbooks.Open(Filename:=wkbname, ReadOnly:=False)
        Set srcSheet = SrcWkb.Worksheets("export_label_conf")

        ' Get used range on sheet
        Set MyRange = srcSheet.UsedRange
        ' Adjust to exclude top row
        Set MyRange = MyRange.Offset(1, 0).Resize(MyRange.Rows.Count - 1)

        NewName = srcSheet.Cells(2, 10) & ".csv"

        If MyRange.Row + MyRange.Rows.Count - 1 >= StartRow Then
            Set csvWkb = Workbooks.Open(Filename:="C:\DIGITAL\template.csv", ReadOnly:=False)

            ' copy column A
            MyRange.Columns(1).Copy
            ' paste into CSV template file, column I
            csvWkb.ActiveSheet.Cells(2, 9).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False

            ' and save template as new CSV with barcode as name
            csvName = "C:\DIGITAL\" & NewName
            csvWkb.SaveAs Filename:=csvName, FileFormat:=xlCSV, CreateBackup:=False
        End If

        SrcWkb.Close
    Next wkbname

End Sub

Я получаю эту ошибку на Для каждого wkbname в строке xlsFiles .wkbname пусто, в то время как xlsFiles содержит имя открываемого файла (но только 1, в то время как у него должно быть несколько ...)

и совсем недавно он работал нормально!я отменил все, что мог вспомнить, но сделал, но не решил проблему ...

1 Ответ

0 голосов
/ 28 февраля 2011

Я бы посоветовал вам сделать следующее:

  • Попробуйте скомпилировать свой код. Звучит глупо, но может указывать на проблему где-то еще, которая может повлиять на этот кусок кода.
  • Изменить имена переменных. Если по какой-либо причине возникает проблема с Excel (путаница вариантов), это может решить проблему.
  • Проверьте ссылки на проект. Если отсутствует ссылка, VBA не работает как обычно.

Просто попробовал приведенный ниже код и работал нормально ... и он почти такой же, как ваш (кроме имен переменных).

Public Sub OpenExcelFiles()

    Dim vFiles As Variant
    Dim vFile As Variant
    Dim oXLFile As Excel.Workbooks

    vFiles = Application.GetOpenFilename(FileFilter:="Excel files (*.xls), *.xls", MultiSelect:=True)

    If VarType(xlsFiles) = vbBoolean Then Exit Sub

    For Each vFile In vFiles

        Set oXLFile = Workbooks.Open(vFile)

    Next vFile

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...