使用VBA宏将.csv导入.xls工作簿(不只是一个工作表)

时间:2014-01-21 10:35:47

标签: excel vba excel-vba csv

我是VBA& Excel中的宏因此有一个问题。

我有一个Excel工作簿,其中一个主要工作表名为“BASE”。这里有一列填充值。这些值有两种类型:

  1. 标量值,只能直接在此工作表中输入。

  2. 值数组。因此,工作簿中存在指向其他工作表的超链接,其中将填充此类数组。 我有一个包含这些值的.csv文件,我必须使用VBA宏填充.xls文件中的值。谁能告诉你怎么做?

  3. 将main.xls视为具有4个输入,其中2为标量,2为数组(因此,链接到工作簿的其他工作表)。因此,当读取.csv文件时,在BASE工作表上插入单个值,并在同一工作簿中使用BASE工作表上的超链接填充两个表(对于.csv文件中的数组输入)。

1 个答案:

答案 0 :(得分:0)

以下内容将解析数据(仅当以分号分隔时 - 您必须更改设置为' true'为您的数据):

Sub Parse_Setup()

DoEvents

Application.StatusBar = "Parsing Data"
Application.DisplayAlerts = False
If ActiveSheet.Range("C1").Value = "" Then 'this makes sure the destination cells are empty
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
        )), TrailingMinusNumbers:=True
End If
Application.DisplayAlerts = True
End Sub

这样的东西会选择一个文件:

Sub SelectFile()

Dim Fname As String

Application.StatusBar = "Getting FileName from User"
ActiveSheet.Range("C3") = ""

Dim iFileSelect As FileDialog
Set iFileSelect = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
    If iFileSelect.Show = -1 Then
        For Each vrtSelectedItem In iFileSelect.SelectedItems
            MsgBox "The path is: " & vrtSelectedItem
            Range("C3") = vrtSelectedItem
        Next vrtSelectedItem
    End If
Set iFileSelect = Nothing

Fname = Range("C3")

Application.ScreenUpdating = False

Workbooks.Open Filename:=Fname

Application.StatusBar = "File Opened"

End Sub

我建议你使用这样的东西,然后根据需要设置你的数据。随意更新您的问题。你说某些数据的表格部分没有多大意义,至少在摘要中没有。发布一些代码!