从Excel

时间:2015-10-08 12:17:10

标签: sql-server excel vba excel-vba

我正在尝试将Excel中的数据列一次粘贴到SQL Server中。列中的每个单元格都包含一个公式,如果另一个工作表中的某个单元格不为空,则输出一个SQL脚本。如果为空,则输出空白值(“”)。在将其粘贴到SQL Server中的新查询之前,我使用按钮选择并复制此数据(每个数据列都有一个按钮)。 SQL脚本提供了其他工作表中单元格的值 - 每列数据代表不同的工作表,列中的每个单元格指的是它所代表的工作表中的单个单元格值。

但是,每次粘贴数据时,它都包含空白值,显示为空格。

我已经尝试重新编程VBA中的按钮,以便它不会选择具有空白值的单元格,但到目前为止还没有任何工作。我以各种不同的方式使用了SpecialCells方法,但没有成功。

以下是我的按钮的当前代码示例:

Sub SchemeCondition_Click()
Range("E2:E201").Select
Selection.Copy
End Sub

以下是我在按钮复制的每个单元格中的公式示例:

=IF(SchemeCondition!A2<>"","USE [PRSMaster] INSERT INTO SchemeCondition
(SchemeID, ConditionTypeID, Active, Comorbidity) VALUES(" & SchemeCondition!C2 & ",
" & SchemeCondition!D2 & ", " & SchemeCondition!E2 & ", " & SchemeCondition!F2 & ")","")

我只想在粘贴时停止显示空格,这样我就不必每次都手动删除它。

1 个答案:

答案 0 :(得分:0)

Sub Tester()
    CopyNonBlanks Selection
End Sub

Sub CopyNonBlanks(rng As Range)
    Dim s, c, MyData As DataObject
    s = ""
    For Each c In rng.Cells
        If Len(c.Value) > 0 Then
            s = s & IIf(Len(s) > 0, vbNewLine, "") & c.Value
        End If
    Next c
    If Len(s) > 0 Then
        'requires reference to `Microsoft forms 2 Object Library`
        Set MyData = New DataObject
        MyData.SetText s
        MyData.PutInClipboard
    End If
End Sub