And*_*Ion 15 excel vba excel-vba
伙计们这就是我想要做的事情,我在做这件事时遇到了一些麻烦.我有1个工作簿,我想从不同的文件中收集数据.
Do While THAT_DIFFERENT_FILE_SOMEWHERE_ON_MY_HDD.Cells(Rand, 1).Value <> "" And Rand < 65536
then 'I will search if the last row in my main worksheet is in this file...
End Loop
Run Code Online (Sandbox Code Playgroud)
如果它是我将退出While循环,如果它不是我将复制一切.实际上这不会像我想的那样工作,但我找不到合适的算法也不会有问题.
我的问题是我不知道如何访问不同的工作簿.
JMa*_*Max 14
将数据从工作簿复制到另一个工作簿的最佳(也是最简单)方法是使用Excel的对象模型.
Option Explicit
Sub test()
Dim wb As Workbook, wb2 As Workbook
Dim ws As Worksheet
Dim vFile As Variant
'Set source workbook
Set wb = ActiveWorkbook
'Open the target workbook
vFile = Application.GetOpenFilename("Excel-files,*.xls", _
1, "Select One File To Open", , False)
'if the user didn't select a file, exit sub
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile
'Set targetworkbook
Set wb2 = ActiveWorkbook
'For instance, copy data from a range in the first workbook to another range in the other workbook
wb2.Worksheets("Sheet2").Range("C3:D4").Value = wb.Worksheets("Sheet1").Range("A1:B2").Value
End Sub
Run Code Online (Sandbox Code Playgroud)
你可能会喜欢GetInfoFromClosedFile()函数
编辑:由于以上链接似乎不再起作用,我正在添加备用链接1 和备用链接2 +代码:
Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
wbName As String, wsName As String, cellRef As String) As Variant
Dim arg As String
GetInfoFromClosedFile = ""
If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""
If Dir(wbPath & "" & wbName) = "" Then Exit Function
arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)
On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)
End Function
Run Code Online (Sandbox Code Playgroud)
您是否正在寻找打开它们的语法:
Dim wkbk As Workbook
Set wkbk = Workbooks.Open("C:\MyDirectory\mysheet.xlsx")
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用wkbk.Sheets(1).Range("3:3")(或您需要的任何东西)
小智 5
没有理由不在Excel中打开多个工作簿.关键行代码是:
Application.EnableEvents = False
Application.ScreenUpdating = False
Run Code Online (Sandbox Code Playgroud)
...然后在代码运行时您将看不到任何内容,并且不会运行与第二个工作簿的打开相关联的代码.然后还有......
Application.DisplayAlerts = False
Application.Calculation = xlManual
Run Code Online (Sandbox Code Playgroud)
...以便阻止您获得与第二个文件的内容相关联的弹出消息,并避免任何缓慢的重新计算.确保在编程结束时重新设置为True/xlAutomatic
如果打开第二个工作簿不会导致性能问题,您也可以这样做.实际上,如果某些辅助文件不符合预期的格式,那么在尝试调试代码时,让第二个工作簿打开会使它非常有用
以下是使用多个Excel文件的一些专家指导,概述了可用于引用数据的不同方法
扩展问题是如何循环遍历同一文件夹中包含的多个文件.您可以使用Windows文件夹选择器:
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
If .Selected.Items.Count = 1 the InputFolder = .SelectedItems(1)
End With
FName = VBA.Dir(InputFolder)
Do While FName <> ""
'''Do function here
FName = VBA.Dir()
Loop
Run Code Online (Sandbox Code Playgroud)
希望上面的一些将是有用的