Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 创建表单以提交包含内容的csv文件_Excel_Vba_Export - Fatal编程技术网

Excel 创建表单以提交包含内容的csv文件

Excel 创建表单以提交包含内容的csv文件,excel,vba,export,Excel,Vba,Export,我有以下问题: 为了能够部署多个设备,我编辑了一些在这里和那里找到的VBA代码,现在我迷路了。。。因为我不是一个编码员,我不知道代码到底是做什么的,所以我无法找到解决方案 问题是:当我添加1台设备时,.csv文件中充斥着数据: HOSTNAMEHQ,COUNTRYCRE,HARDWARECRE,MAC,UUID,DESCRIPTION,PLATFORM LPAB00000013293,,,28:F1:0E:30:81:C1,,STOCK, #N/A,,,#N/A,,STOCK, #N/A,,

我有以下问题:

为了能够部署多个设备,我编辑了一些在这里和那里找到的VBA代码,现在我迷路了。。。因为我不是一个编码员,我不知道代码到底是做什么的,所以我无法找到解决方案

问题是:当我添加1台设备时,.csv文件中充斥着数据:

HOSTNAMEHQ,COUNTRYCRE,HARDWARECRE,MAC,UUID,DESCRIPTION,PLATFORM
LPAB00000013293,,,28:F1:0E:30:81:C1,,STOCK, 
#N/A,,,#N/A,,STOCK, 
#N/A,,,#N/A,,STOCK, 
#N/A,,,#N/A,,STOCK, 
#N/A,,,#N/A,,STOCK, 
#N/A,,,#N/A,,STOCK, 
(etc)
添加2个或更多设备时,.csv文件正常:

HOSTNAMEHQ,COUNTRYCRE,HARDWARECRE,MAC,UUID,DESCRIPTION,PLATFORM
LPAB00000013293,,,28:F1:0E:30:81:C1,,STOCK, 
LPAB00000013293,,,28:F1:0E:30:81:C1,,STOCK, 
我使用的代码是:

    Sub Button_Click()
    Call SaveWorksheetsAsCsv
    End Sub

    Sub SaveWorksheetsAsCsv()
    On Error Resume Next
    Dim i As Long
    Errorknop = vbCritical + vbOKOnly
    ThisWorkbook.Sheets("Export").Visible = xlSheetVisible
    ThisWorkbook.Sheets("Export").Activate
    Range("A1").Select
    Selection.End(xlDown).Select
    LaRo = ActiveCell.Row
    Range("A1").Select




    Range("A2").Select
    Selection.End(xlDown).Select
    LR = ActiveCell.Row
    LC = Last(4, ActiveSheet.Cells)
    LCR = LC & LR
    Range("B1:" & LCR).Copy
    ThisWorkbook.Sheets("Export").Visible = xlSheetHidden
    ThisWorkbook.Sheets("Export_2").Visible = xlSheetVisible
    ThisWorkbook.Sheets("Export_2").Activate
    Range("A1").Select
    Range("A1").PasteSpecial Paste:=xlPasteValues

    Dim LValue As Date

    LValue = Now

    Dim SaveToDirectory As String

    Dim CurrentWorkbook As String
    Dim CurrentFormat As Long

    Dim strbody As String
        Dim SigString As String
        Dim Signature As String


    CurrentWorkbook = ThisWorkbook.FullName
    CurrentFormat = ThisWorkbook.FileFormat


     SaveToDirectory = "D:\Testmap\Formulieren\"
    Worksheets("Export_2").SaveAs Filename:=SaveToDirectory & Day(LValue) & Month(LValue) & Year(LValue) & Hour(LValue) & Minute(LValue) & Second(LValue) & "_1IMPORT_TEMPLATE_NN_AD_SCCM_HP", FileFormat:=xlCSV
    ThisWorkbook.Saved = True



    Application.Quit
    End Sub

    Function Last(choice As Integer, rng As Range)
    ' 1 = last row
    ' 2 = last column (R1C1)
    ' 3 = last cell
    ' 4 = last column (A1)
        Dim lrw As Long
        Dim lcol As Integer

        Select Case choice
        Case 1:
            On Error Resume Next
            Last = rng.Find(What:="*", _
                            After:=rng.Cells(1), _
                            LookAt:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).Row
            On Error GoTo 0

        Case 2:
            On Error Resume Next
            Last = rng.Find(What:="*", _
                            After:=rng.Cells(1), _
                            LookAt:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByColumns, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).Column
            On Error GoTo 0

        Case 3:
            On Error Resume Next
            lrw = rng.Find(What:="*", _
                           After:=rng.Cells(1), _
                           LookAt:=xlPart, _
                           LookIn:=xlFormulas, _
                           SearchOrder:=xlByRows, _
                           SearchDirection:=xlPrevious, _
                           MatchCase:=False).Row
            lcol = rng.Find(What:="*", _
                            After:=rng.Cells(1), _
                            LookAt:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByColumns, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).Column
            Last = Cells(lrw, lcol).Address(False, False)
            If Err.Number > 0 Then
                Last = rng.Cells(1).Address(False, False)
                Err.Clear
            End If
            On Error GoTo 0
        Case 4:
            On Error Resume Next
            Last = rng.Find(What:="*", _
                            After:=rng.Cells(1), _
                            LookAt:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByColumns, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).Column
            On Error GoTo 0
            Last = R1C1converter("R1C" & Last, 1)
            For i = 1 To Len(Last)
                s = Mid(Last, i, 1)
                If Not s Like "#" Then s1 = s1 & s
            Next i
            Last = s1

        End Select

    End Function




    Function GetBoiler(ByVal sFile As String) As String
    'Dick Kusleika
        Dim fso As Object
        Dim ts As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
        GetBoiler = ts.readall
        ts.Close
    End Function



    Function R1C1converter(Address As String, Optional R1C1_output As Integer, Optional RefCell As Range) As String
        'Converts input address to either A1 or R1C1 style reference relative to RefCell
        'If R1C1_output is xlR1C1, then result is R1C1 style reference.
        'If R1C1_output is xlA1 (or missing), then return A1 style reference.
        'If RefCell is missing, then the address is relative to the active cell
        'If there is an error in conversion, the function returns the input Address string
        Dim x As Variant
        If RefCell Is Nothing Then Set RefCell = ActiveCell
        If R1C1_output = xlR1C1 Then
            x = Application.ConvertFormula(Address, xlA2, xlR1C1, , RefCell) 'Convert A2 to R1C1
        Else
            x = Application.ConvertFormula(Address, xlR1C1, xlA2, , RefCell) 'Convert R1C1 to A2
        End If
        If IsError(x) Then
            R1C1converter = Address
        Else
            'If input address is A1 reference and A1 is requested output, then Application.ConvertFormula
            'surrounds the address in single quotes.
            If Right(x, 1) = "'" Then
                R1C1converter = Mid(x, 2, Len(x) - 2)
            Else
                x = Application.Substitute(x, "$", "")
                R1C1converter = x
            End If
        End If
    End Function

对于程序员来说,这可能是完全合乎逻辑的,甚至是一团糟,但我真的希望有人能给我解决方案,让脚本运行,获取单元格的信息,然后在找到空单元格时停止。此时,编写.csv文件并关闭。

我使用F8逐步找到了解决方案。查找最后一行是错误所在。现在我正在使用:

Cells(Rows.Count, "A").End(xlUp).Row

我不太明白代码到底是做什么的
-你需要弄清楚它!;)通过在
saveworksheetsacsv
中设置光标并按F8键,逐行遍历代码开始。你很快就会成为一名编码员!