2015-10-08 2 views
-1

Я пытаюсь вставить столбцы данных за один раз из Excel в SQL Server. Каждая ячейка в столбце содержит формулу, чтобы сказать, что если некоторая ячейка на другом листе не пуста, выведите SQL-скрипт. Если он пуст, выведите пустое значение (""). Я выбираю и копирую эти данные с помощью кнопки (у меня есть кнопка для каждого столбца данных), прежде чем вставлять ее в новый запрос в SQL Server. Сценарий SQL получает значения ячеек в других листах - каждый столбец данных представляет собой другой лист, и каждая ячейка в столбце относится к отдельным значениям ячеек в представленном им листе.Стоп SQL Вставка пробела из Excel

Однако каждый раз, когда я вставляю данные, он содержит пустые значения, которые отображаются как пробелы.

Я попытался перепрограммировать кнопку в 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 & ")","") 

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

+0

Напишите сценарий загрузки VBA для SQL. Подобным образом вы можете «переводить» во время загрузки (также известный как [ETL] (https://en.wikipedia.org/wiki/Extract,_transform,_load)). Я даже не уверен, чего вы ожидаете вместо белых. Вы хотите, чтобы Excel копировал вместо NULL? – Ralph

+0

Пожалуйста, покажите нам свой существующий код. – Calum

+0

@Ralph Я не хочу, чтобы пространство было заменено. Мне нужно их удалить. Они представляют ячейки, содержащие пустое значение, поэтому я не нуждаюсь в них в моем запросе. – Freya

ответ

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 
Смежные вопросы