Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBS csv2excel - Visual basic script export z csv i import do xls

15 Sty 2015 16:27 840 3
  • Poziom 2  
    Witam,
    Potrzebuję napisać skrypt w Visual Basic Script, który zaimportuje mi dane do excela z pliku csv.
    Plik csv wygląda nastepująco:
    1,2,3qw,ew4,5h,gfde6 - Wiersz 1
    12s,2,132,123f,as124 - Wiersz2

    Chciałbym aby te dane znalazły się każda w oddzielnej komórce (separator przecinek ","). I oczywiście w wierszach excela A i B. Nie chce by został utworzony nowy plik excel (takie rozwiązanie już posiadam). Natomiast chciałbym aby te dane skrypt wrzucił do istniejącego pliku .xls

    Plik .csv, skrypt, i plik .xls są w tym samym folderze. Więc ścieżkę plików można podać na sztywno.

    Z góry dzięki za odpowiedź.
    malintus
  • Moderator Programowanie
    Wrzuć przykładową ceesfałkę, koniecznie wygenerowaną w oryginalnym eksporcie. Jaka z tym "karuzela" wiedzą wszyscy, którzy Np próbowali przenieść kontakty z Nokii do iPoda ;)
  • Poziom 2  
    W załączniku pliki spakowane. Plik CSV (przykład.csv) potrzebuje zaimportować do pliku XLSM (VAT7_szablon) do Arkusza 1 (Dynamic Data) poczynając od wiersza 2. Separatorem powinien byc przecinek.
    Chciałbym dokładnie osiągnąc to co umożliwia Kreator importu tekstu wbudowany w excel. Wykorzystując oczywiście skrypt VBS.

    Znalazłem skrypt jak poniżej, który działa ok. Wrzuca do xlsm stałą wartoś "New Data". Teraz potrzebuje zeby zamiast wrzucania stałej wartości, wrzucał dane z pliku. Skrypt poniżej.
    Dim xlApp, xlBook, xlSht
    Dim filename, value1, value2, value3, value4

    on error resume next

    filename = "D:\FIRMY\ARP\1\1\VAT7_szablon.xlsm"

    Set xlApp = CreateObject("Excel.Application")
    set xlBook = xlApp.WorkBooks.Open(filename)
    set xlSht = xlApp.activesheet

    xlApp.DisplayAlerts = False

    'write data into the spreadsheet
    xlSht.Cells(2, 2) = "New Data"

    xlBook.Save
    xlBook.Close SaveChanges=True
    xlApp.Close
    xlApp.Quit

    'always deallocate after use...
    set xlSht = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
  • Poziom 2  
    Jak by ktoś kiedyś szukał to poniżej działający skrypcik vbs:

    Option Explicit

    Dim objUser, strExcelPath, objExcel, xlBook1, objSheet, _
    objFSO, objFile, aline, aLines, irow, icol

    Const ForReading = 1

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("D:\FIRMY\ARP\1\1\1.csv", ForReading)

    Set objExcel = CreateObject("Excel.Application")
    If (Err.Number <> 0) Then
    On Error GoTo 0
    Wscript.Echo "Excel application not found."
    Wscript.Quit
    End If
    On Error GoTo 0

    With objExcel
    .visible = false 'mm change to false
    .Workbooks.Add
    set xlBook1 = .Workbooks.Open("D:\FIRMY\ARP\1\1\VAT-7.xls")
    .Application.ScreenUpdating = False

    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
    'objSheet.Activate

    ' objSheet.Name = "Dynamic Data"
    End with

    aLines = split(objFile.ReadAll, vbnewline)
    For irow = 1 to Ubound(aLines) + 1
    aline = split(aLines(irow-1), "|")
    for icol = 1 to Ubound(aline) + 1
    objSheet.Cells(irow+1, icol).value = aline(icol-1)
    Next ' icol
    next ' irow


    objExcel.Application.ScreenUpdating = True

    '-------zamykanie pliku czytanego'-------
    xlBook1.Save
    xlBook1.Close ' SaveChanges=True
    objExcel.Quit 'mm
    'always deallocate after use...
    'set xlSht1 = Nothing
    Set xlBook1 = Nothing
    'Set xlApp1 = Nothing