我在另一个工作簿路径中对工作簿进行了一些更改。但问题是我需要检查工作簿是否已经打开。如果不是,我需要将该打开的实例转换为工作簿变量。
以下是用于检查工作簿是否打开的代码,然后是用于打开
的代码example.com/job/details/software-engineer
因此,如果文件打开,我需要将该工作簿放入该wb变量。
答案 0 :(得分:3)
我有一个解决方案
public void addMarker(LatLng latlng, final String title) {
markerOptions.position(latlng);
markerOptions.title(title);
final String TimeNot = markerOptions.getTitle();
这是在循环中遍历所有工作簿,如果它在那里采用该引用..
答案 1 :(得分:1)
要将工作簿引用到工作簿集合,应将其打开 -
Workbook对象是Workbooks集合的成员。 Workbooks集合包含当前在Microsoft Excel中打开的所有Workbook对象。
因此,如果您的工作簿位于同一个Excel实例中,请尝试这样:
Public Sub TestMe()
Dim wb As Workbook
Set wb = Workbooks("12.xlsx")
End Sub
如果它不在同一个实例中,则GetObject
应该有效:
Public Sub TestMe()
Dim wb As Workbook
Set wb = GetObject("C:\path\12.xlsx")
Debug.Print wb.Worksheets(1).Name
End Sub
这是同一实例中的3个工作簿的样子:
这是2个工作簿在2个不同实例中的样子:
使用多个实例(Source answers.microsoft.com)的优点和缺点:
<强>赞成强>
如果您有32位Excel,则每个实例最多可使用3 GB内存。如果您有一台功能强大的计算机,非常繁重的文件和32位Excel,则每个Excel实例都可以使用3 GB。所以用例如2个Excel.exe实例,你可以说Excel的总内存可以使用三元组。 (请注意,64位Excel不需要这样做,因为它不受每个实例3 GB内存的限制)
如果你想拥有一个单独的Undo链,那么每个Undo只在当前活动的工作簿中撤消,那么单独的实例确实会实现这一点。
<强>缺点强>
如果您希望所有打开文件共享一个共同的撤销链,那么使用多个实例将无法实现此目的。
如果您希望能够例如按Ctrl + F6快速在打开的文件之间跳转,然后使用多个实例将无法实现此目的。
Paste Special在实例之间不起作用。有关详细信息,请参阅此内容。
单击不能在单独运行的实例中创建2个文件之间的工作簿链接,并且不会实时更新。
代码看起来不错,只需使用Set
关键字:
If fo = False Then set wb = Workbooks.Open(filename:=cf)
答案 2 :(得分:1)
我希望这个帮助
Dim dict As Dictionary
Function OpenFile(fileFullName As String) As Workbook
If (dict.Exists(fileFullName)) Then
OpenFile = dict.Item(fileFullName)
End If
dict.Add "fileFullName", Workbooks.Open(Filename:=fileFullName)
OpenFile = dict.Item(fileFullName)
End Function
Application.ActiveWorkbook = OpenFile(fileFullName)
答案 3 :(得分:0)
这是一个快速函数,如果它尚未打开,将打开工作簿:
Function GetWorkBook(ByVal sFullName As String, Optional ReadOnly As Boolean) As Workbook
Dim sFile As String: sFile = Dir(sFullName)
On Error Resume Next
Set GetWorkBook = Workbooks(sFile)
If GetWorkBook Is Nothing Then Set GetWorkBook = Workbooks.Open(sFullName, ReadOnly:=ReadOnly)
On Error GoTo 0
End Function