我想通过vba宏将两个csv合并到一个新的csv文件中,但是在访问两个文件的值时遇到问题。 我可以使用Workbooks.Open()打开第一个文件,但无法通过File1.ActiveSheet.Cells(1,1)或File1.ActiveSheet.Range(1,1)等访问其任何值。 问题是,我必须通过第一个文件中包含的路径打开第二个文件。
文件如下:
File1
File2
对于File1中的每个ID,都有一个File2,其中大约有30000-60000个条目需要映射在一起。
我的想法是将File2复制到新文件中,然后为每一行添加ID。 我不能只在其中更改File2和广告ID,因为我对它们所在的文件夹没有任何写权限。
文件立即插入Struktur:
WorkingDir
|
| ___ File1
| ___宏
| ___ allFile2
......... | ____ File2_1
......... | ____ File2_2
是否有更好的方法? 我是vba编程的新手,几乎没有实践经验,如果有人可以帮助我或者有一定的文学知识可以帮助我,我将非常感激。
答案 0 :(得分:1)
我将创建另一个可以用作导入媒介的工作表。您将要做的是创建一个宏,该宏使您能够从打开的文件窗口中选择另一个文件,然后再另一个宏将复制并粘贴所需的数据范围。如果要创建将其集成到其他文件中的宏,也可以这样做。
以下是如何构造文件选择代码的示例:
Sub GetFile()
'Dim the variables
Dim FileSelect As Variant
Dim wb As Workbook
Dim i As Integer
'on error statement
On Error GoTo errHandler:
'hold in memory
Application.ScreenUpdating = False
'locate the file path
FileSelect = Application.GetOpenFilename(filefilter:="Excel Files,*.xl*", _
MultiSelect:=False)
'check if a file is selected
If FileSelect = False Then
MsgBox "Select the file name"
Exit Sub
End If
'send the path to the worksheet
Sheet8.Range("C4").Value = FileSelect
'open the workbook
Set wb = Workbooks.Open(FileSelect)
'add the sheet names to the workbook
'close the workbook
wb.Close False
Application.ScreenUpdating = True
Exit Sub
这将是您的导入代码的示例:
Public Sub GetRange()
'Dim variables
Dim FileSelect As Variant
Dim wb As Workbook
Dim Addme As Range, _
CopyData As Range, _
Bk As Range, _
Sh As Range, _
St As Range, _
Fn As Range, _
Tb As Range, _
c As Range
'on error statement
On Error GoTo errHandler:
'hold values in memory
Application.ScreenUpdating = False
'check neccessary cells have values
For Each c In Sheet8.Range("C4,F4,G4,H4")
If c.Value = "" Then
MsgBox "You have left out a value that is needed in " & c.Address
Exit Sub
End If
Next c
'set the range reference variables
Set Bk = Sheet8.Range("C4") 'file path of book to import from
Set Sh = Sheet8.Range("G4") 'Worksheet to import
Set St = Sheet8.Range("G4") 'starting cell reference
Set Fn = Sheet8.Range("H4") 'finishing cell reference
'set the destination
Set Addme = Sheet8.Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
'open the workbook
Set wb = Workbooks.Open(Bk)
'set the copy range
Set CopyData = Worksheets(Sh.Value).Range(St & ":" & Fn)
'copy and paste the data
CopyData.Copy
Addme.PasteSpecial xlPasteValues
'clear the clipboard
Application.CutCopyMode = False
'close the workbook
wb.Close False
'return to the interface sheet
Sheet8.Select
End With
Application.ScreenUpdating = True
Exit Sub
'error block
errHandler:
MsgBox "An Error has Occurred " & vbCrLf & "The error number is: " _
& Err.Number & vbCrLf & Err.Description & vbCrLf & _
"Please notify the administrator"
End Sub
这只是您通常如何构造它的一个示例。您需要为代码中列出的变量所需的引用构建excel工作表。
可以在以下网站上找到有关该主题的大量资源:http://www.onlinepclearning.com/import-data-into-excel-vba/
希望这会有所帮助!