Как выбрать и скопировать различные части Excel, чтобы преуспеть в VBA? - PullRequest
0 голосов
/ 07 февраля 2019

Я новичок в работе с базой данных Excel, и я хочу иметь возможность щелкнуть по кнопке и сгенерировать из нее CSV-файл, чтобы он мог быть в формате, который можно вводить в другую базу данных SQL (а также люди будут останавливаться вручнуюкопирование и вставка из него!).

Код, созданный мной с помощью других форумов, позволяет копировать объемные данные и генерировать заголовок.

Sub Button3_Click()



Dim srminsampls_test_csv As String
Dim Minsamps As Workbook
Dim CSV As Workbook
Dim copyRng As Range
Dim rng1 As Range
Dim rng2 As Range

Application.DisplayAlerts = False
On Error GoTo err

Set Minsamps = ThisWorkbook
srminsampls_test_csv = Minsamps.Path & "\" & "CSV-Exported-File-" & VBA.Format(VBA.Now, "dd-MMM-yyyy hh-mm") & ".csv"


'to select and copy the assay data:'
    Set rng1 = Cells.Find("", [C4], xlFormulas, xlByRows, xlPrevious)
    Set rng2 = Cells.Find("", [F4], xlFormulas, xlByColumns, xlPrevious)
    If Not rng1 Is Nothing Then
        Set copyRng = Range([C4], Cells(rng1.Row, rng2.Column))
    Else
        MsgBox "sheet is blank", vbCritical
    End If

   copyRng.Copy

'create the new sheet
    Set CSV = Application.Workbooks.Add(1)
    With CSV
        .Sheets(1).Range("A12").PasteSpecial xlPasteValues

'insert the csv header
        .Sheets(1).Range("A1").Select
        .Sheets(1).Range("A1").FormulaR1C1 = "Report_No"
        .Sheets(1).Range("A2").Select
        .Sheets(1).Range("A2").FormulaR1C1 = "No_Samples"
        .Sheets(1).Range("A3").Select
        .Sheets(1).Range("A3").FormulaR1C1 = "DATE_RECEIVED"
'etc etc...there are many many lines of similar code here!

'save and generate file
        .SaveAs Filename:=myCSVFileName, FileFormat:=xlCSV, CreateBackup:=False
        .Close
    End With

err:
    Application.DisplayAlerts = True

End Sub`

Позволяет отображать заголовок DATE_RECEIVED,но я не знаю, как скопировать значение из исходного листа (Minsamps) и вставить его в ячейку рядом с DATE_RECEIVED.Все, что я делаю, либо останавливает работу заголовка и другого кода копирования / вставки, либо весь лист выходит пустым.Извините, если это очень просто, но я просто не могу разобраться.Спасибо, EJ

1 Ответ

0 голосов
/ 13 февраля 2019

Следующие изменения / дополнения должны включить желаемое выполнение программы.

В декларациях добавьте следующие строки.

Dim ws As Worksheet 'Added worksheet variable
Dim dtrep As String  'Added date string variable

установить значение переменной даты на исходном листе Range("A4") значение

    Set ws = Minsamps.Worksheets(1)
    dtrep = ws.Range("A4").Value     'set value of date variable to original sheet "A4"

Изменить следующую строку

.Sheets(1).Range("A3").FormulaR1C1 = "DATE_RECEIVED"

На

.Sheets(1).Range("A3").FormulaR1C1 = "DATE_RECEIVED" & " - " & dtrep

Кажется, все в порядке.НТН

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