excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决

2024-11-06 23:13:58
推荐回答(4个)
回答1:

1、点击Excel界面左下角的录制宏按钮录制宏。

2、在【宏名】处输入一个有意义的名称,帮助以后识别该宏的功能。本例按照默认名称命名。选择将宏录制在【个人宏工作簿】并点击【确定】按钮。

3、马上点击Excel界面左下角的停止录制宏按钮停止宏的录制。

4、按Alt+F11打开VBE界面,如下图。

5、在代码部分输入或者粘贴执行某项特定功能的代码。

6、在功能区(Ribbon)上鼠标右键,选择【自定义快速访问工具栏】。

7、向窗体中拖动一个“标签”和一个“按钮”,右击“按钮”,从其扩展菜单中选择“属性”项。

8、双击“获取Excel数据”按钮,在打开的代码编辑窗口中,输入以下代码。

9、双击“Sheet1”工作表,在弹出的代码编辑窗口中输入如下代码。

10、返回Excel表格,激活Sheet1工作表,就可以看到窗口弹出,同时点击“获取Excel数据”按钮,就可以读取Excel中的数据啦。

回答2:

此题是vba代码运用的问题。这里不想给出代码,而是给出方法,授人以渔。
excel的vba确实能给人方便,提高效率。但它的内置规则、控件引用确实挺考人记忆力。我们不是百科全书,如何不记忆代码规则实现编程?
答案是用excel的宏。你可以测试一下,在工作簿1中录制宏,在a1乱打字,然后点击另外一个工作簿,在b1乱打字,结束录制。
当打开这个宏的时候,是不是多了一段。
Windows("×××.xls").Activate
Range("A1").Select
……
这个是不是满足你需要解决的问题。

回答3:

Dim wb As Workbook
Application.ScreenUpdating = False
Set wb = Workbooks.Open(要调用的工作薄的路径及名称)
‘路径及名称格式如下 ThisWorkbook.Path & "\Back.xlsx")
With wb.Sheets("表名 不是工作薄名").range(要调用的单元格)
对调用单无格的操作
End With
wb.Close 1
Application.ScreenUpdating = True

回答4:

录制宏的用法只能测试出一些初级VBA用法,很多VBA功能无法通过此种方法测试。比如更改单元格字体,比如调用其他工作簿数据。虽然是挖坟,但我必须指出!请别在这种问题下,用此种回答误导后人!

以下是我一段调用其他工作簿的代码,你可以参考下,但是我坦言,这个方法并不快速。

    Dim myApp As New Application
    Dim sh As Worksheet
    Dim Temp As String
    Dim arr
    Temp = ThisWorkbook.Path & "\被引用工作簿名称.xls"
    myApp.Visible = False
    Set sh = myApp.Workbooks.Open(Temp).Sheets("被引用工作表名称")
    ThisWorkbook.Sheet1.Range(****)=sh.Range(****)
    Set sh = Nothing
    Set myApp = Nothing