Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Excel ja ulkoiset tiedot

crimsonglory [12.03.2010 14:50:25]

#

Olen yrittänyt Tuo ulkoiset tiedot -komennolla tuoda Excel-tiedostoon dataa toisesta Excel-tiedostosta. Periaatteessa homma pelittää, mutta nyt huomasin, että jostain syystä osa muuttujista tulee tyhjänä. Mulla on taulukossa kolme saraketta (AiheID, Aika ja Arvo). AiheID on esim. 1 kaikilla arvoilla. Aika voi olla vuosisarja (1990, 1991,...) tai kuukausisarja (1990:01, 1990:02,...). Arvot ovat desimaalilukuja. AiheID jää aina tyhjäksi ja samoin Aika-mja, jos se on vuosisarja. Aika-mja tulee ihan ok, jos se on kuukausisarjamuotoa. Mistähän tässä mahtaa olla kyse?

neau33 [12.03.2010 17:03:35]

#

Moikka crimsonglory!

Kun tuot ulkoisia tietoja toisesta excel-tiedostosta niin tutki mitä tapahtuu, kun painat Tietojen tuominen-ikkunassa Ominaisuudet-nappia ja muutat Säilytä sarakkeiden lajittelu, suodatus ja asettelu ja/tai Säilytä solujen muotoilut-asetuksia.

voit myös siirtää tietoja työkirjasta toiseen yksinkertaisen makron avulla (oheinen esimerkki), kätevää on myös liittää makro mukautettuun valikkokomeentoon tai nappulaan.

Sub TuoTiedot()

    Application.ScreenUpdating = False

    Dim fd As FileDialog, _
    thisPath As String, _
    thisName As String, _
    xlFile As Variant, _
    FullPath As String

    thisPath = ActiveWorkbook.FullName
    thisName = ActiveWorkbook.Name

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    With fd
        .AllowMultiSelect = False
        .Filters.Add "Laskentataulukot (*.xls)", "*.xls", 1
        .FilterIndex = 1
        If .Show = -1 Then
           For Each xlFile In .SelectedItems
              FullPath = xlFile
           Next
        Else
           Exit Sub
        End If
    End With

    Set fd = Nothing

    Dim wk As Workbook
    For Each wk In Workbooks
        With wk
            If .FullName = FullPath Then
                Exit Sub
            End If
        End With
    Next

    Workbooks.Open (FullPath)
    Dim thatName As String
    thatName = ActiveWorkbook.Name

    Workbooks(thatName).Sheets("Taul1"). _
    Range("A1:C20").Copy Destination:= _
    Workbooks(thisName).Sheets("Taul1").Range("A1")
    Workbooks(thatName).Close

    Application.ScreenUpdating = True

End Sub

crimsonglory [12.03.2010 17:34:43]

#

Kiitti vastauksesta :-) Tutkin asiaa!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta