求助:如何使用vba实现,在不打开已知路径的excel文件的情况下,将里面的sheet1中的内容复制到当前excel

如何使用vba实现,在不打开已知路径的excel文件的情况下,将里面的sheet1中的内容复制到当前excel文件的sheet中?
最终想实现双击文本框选取一文件,点击【读入】,将信息拷贝到当前sheet中。
哪位大侠帮忙解决下?

不打开文件的情况似乎只有数据库访问方式才可以,把要访问的excel文件作为一个数据库。这样的话你要动态链接数据库,很麻烦
一般人都用欺骗的方式吧,就是不刷屏,并把打开的excel隐藏,读取后再关闭,和没有打开看起来是一样的追问

欺骗的方法听说过,怎么实现能写出代码吗?谢谢!!!显示选择文件的路径和读入拷贝文件到当前sheet是两个单独操作。

追答

一下代码把新打开的文件的sheet1copy到始终打开的excel中的sheet4.你可以在双击文本框对应的sub中调用getfilename,在“读入”对应的sub中调用copysheet
Option Explicit
Private filename As String
Sub test()
getfilename
copysheet
End Sub

Sub getfilename()

Dim lngCount As Long

' Open the file dialog
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show

filename = .SelectedItems(1)
End With

End Sub
Sub copysheet()
Dim openedWorkbook As Workbook
Application.ScreenUpdating = False
Set openedWorkbook = Workbooks.Open(filename)
openedWorkbook.Sheets(1).UsedRange.copy Destination:=Workbooks("始终打开的excel文件.xls").Sheets(4).Range("A1")
openedWorkbook.Close savechanges:=False
Set openedWorkbook = Nothing
Application.ScreenUpdating = True
End Sub

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-21
Option Explicit
Sub 取值(路径 As String, 文件 As String, 工作表, 单元格 As String)
On Error Resume Next
Dim rng As Range
Sheets("Sheet1").UsedRange.Clear
[a1].Activate
Set rng = ActiveCell.Resize(Range(单元格).Rows.Count, Range(单元格).Columns.Count)
If Err <> 0 Then
MsgBox "请调整区域,当前区域不足以存放引用区域的值" _
& Chr(10) & "建议选择A1再执行程序", 64, "提示"
Exit Sub
End If
'将目标区域复制到以当前表活动单元格为左上角的相同大小的区域中
With ActiveCell.Resize(Range(单元格).Rows.Count, Range(单元格).Columns.Count)
'在指定区域输入公式,该公式引用指定路径下的工作表数据,可以是单元格也可以是区域
.FormulaArray = "='" & 路径 & "\[" & 文件 & "]" & 工作表 & "'!" & 单元格
'将公式转换成值
.Value = .Value
End With
End Sub

Sub 提取数据()
取值 ThisWorkbook.Path & "\文件", "附件1.xls", "新发生", "A1:B50"
'文件,附件1,新发生 等信息可自行修改成自己需要的
End Sub

VBA如何在不打开工作簿的情况下引用工作簿中的单元格(关键在于不打开...
Public excelapp As New Excel.ApplicationDim fd As FileDialogDim Filepath As Stringdim arr(1 to 100) as integerfilepath=你引用的那个文件的全部路径名称+文件名称Set Workbook = excelapp.Workbooks.Open(Filename:=filepath)With excelapp.Application'---你要引用什么就写下面,比如 我把目标文...

EXCEL求VBA代码,点击按钮实现从未打开的EXCEL表sheet1文件复制内容到当 ...
附件是例子,自己根据情况自行修改

excel VBA在不打开工作薄情况下提取单元内容
Application.ScreenUpdating = False Set xap = GetObject("N:\\Fab\\Marking\\Cutting\\Data.xls") '我要得到的文件的的路径是:N:\\Fab\\Marking\\Cutting\\Data.xls arr = xap.Sheets("Sheet2").[B2:Q1000] '选择的区域是: Sheet2 , B2: Q1000 xap.Close False ThisWorkbook.Sheets("sheet1").[...

利用VBA程序,如何在不打开另一工作表的情况下,引用另一工作表中的批注...
假设两文件夹分别1和2,可以在A表中写如下宏:sub 批注引用()dim strS as string workbooks.Open Filename:=ThisWorkbook.Path & "\/..\\2\\B.xls", ReadOnly:=True strS = workbooks("B.xls").Sheets("Sheet1").Range("A1").Comment.Text workbooks("B.xls").Close Range("A1") = str...

如何用VBA将一个excel中一个sheet转到另一个excel中的一个sheet?
workbooks("excel2.xls").sheets("sheet1").cells(1,1)value=workbooks("excel1.xls").sheets("sheet1").cells(1,1)value 如果要指的话,可以用cells(i,j).value,套两个for

excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决
1、点击Excel界面左下角的录制宏按钮录制宏。2、在【宏名】处输入一个有意义的名称,帮助以后识别该宏的功能。本例按照默认名称命名。选择将宏录制在【个人宏工作簿】并点击【确定】按钮。3、马上点击Excel界面左下角的停止录制宏按钮停止宏的录制。4、按Alt+F11打开VBE界面,如下图。5、在代码部分...

excel 如何通过vba将sheet1中的操作写入到sheet2中
可以采用如下方法:1、假如要把Sheet1工作表中A1单元格的数据写入Sheet2工作表的A1单元格中。2、可以执行以下语句:sub test() sheets("Sheet2").range("A1").Value=sheets("Sheet1").range("A1").Valueend sub3、语句解释:range("A1")代表A1单元格,.Value代表是单元格的值属性。

excelVBA在不打开工作薄情况下提取单元内容excelvba不打开表格读取数据...
Sub 不打开工作薄提取内容()Sheet18.Range(\\"CL14\\").FormulaR1C1=\\"='F:\\\\SINO管理学\\\\NWE \\\\工作文档\\\\[统计50.xls]审核表'!R[-6]C[-87]\\"End Sub

如何通过VBA代码将N个EXCEL表的文件中SHEET1的A列数据汇总到一个...
一、首先把你的那几个EXCEL文件复制到同一个目录下,全选,按F2,把第一个文件重命名为 (0).xls,这样你所有的文件就都变为这个形式的了 (0).xls,(1).xls,(2).xls,(3).xls,...二、新建一个excel文档,录制一个宏,什么都不做就结束录制,然后把这个宏的代码改成如下样子:Sub Macro...

Excel VBA 不打开问价提取数据指定区域修改成(该sheet使有使用的单 ...
aim_rng$) On Error Resume Next With ActiveCell.Resize(Range(aim_rng).Rows.Count, Range(aim_rng).Columns.Count) .Formula = "='" & path & "\\[" & file_name & "]" & sheet_name & "'!" & aim_rng .Value = .Value End WithEnd Sub ...

相似回答