office 365 excel 開啟數個"獨立"的活頁簿

匿名
2019-02-22T02:39:56+00:00

以前win7使用office 2010版的excel檔,不同的活頁簿可以獨立開啟來使用

這樣各個活頁簿裡的vba程式碼不會互相影響

但現在換了win 10,租用office 365家庭版,開啟了excel,要開不同的活頁簿時

卻無法獨立開啟不同的活頁簿,所以只要其中一個活頁簿在使用,另一個活頁簿就會****擾而停止動作

這造成我在工作上有很大的困擾

請問office 365是否能像office 2010 一樣,可以獨立開啟數個活頁簿嗎?

我真的很需要這方面的協助,謝謝。

Microsoft 365 與 Office | Excel | 家用版 | Windows

鎖定的問題。 此問題已從 Microsoft 支援服務社群移轉。 您可以對其是否有幫助進行投票,但無法對問題新增註解或回覆,或進行追蹤。

0 則留言 沒有留言

11 個回答

排序依據: 最實用
  1. 匿名
    2019-03-04T03:36:46+00:00

    你把 ActiveSheet 改掉就可以了。

    前面說過,Active 需觸發 Focus ,是全 Windows 的事件,跟 VBA 沒關係。我從 Excel 5.0 就開始寫 VBA ,那時候就這樣,跟 Office 365 沒關係。

     不好意思,那請問我該改成什麼呢?

     是把 With ActiveSheet 改成 With ThisWorkbook.Sheets(sSheetName) 

     這樣嗎?謝謝。

    此回答有幫助嗎?

    0 則留言 沒有留言
  2. 匿名
    2019-02-27T12:12:26+00:00

    你把 ActiveSheet 改掉就可以了。

    前面說過,Active 需觸發 Focus ,是全 Windows 的事件,跟 VBA 沒關係。我從 Excel 5.0 就開始寫 VBA ,那時候就這樣,跟 Office 365 沒關係。

    此回答有幫助嗎?

    0 則留言 沒有留言
  3. 匿名
    2019-02-27T07:44:14+00:00

    狀況是:A活頁簿裡有下面這個VBA的程式碼,開啟運作,然後再開啟B活頁簿,只要在B活頁簿操作任何內容,A活頁簿就整個停住不動。等到我B活頁簿停止操作,如按下enter鍵後,A活頁簿就恢復正常。

    A活頁簿裡的VBA程式碼如下:

    Sub ButtonStart2()  'bb. 明細工作表開始按鈕

      '防止多次啟動

      If gbIsRunning1 = True Then

        If MsgBox("已有排程:" & gNextRunTime1 & ",是否重新紀錄?", vbOKCancel) = vbOK Then

          ButtonStop2

        Else

          Exit Sub

        End If

      End If

    With ActiveSheet

        工作表1.Range("A7:AW600").ClearContents

        gbIsRunning1 = True

        SetTimer2 .Name

      End With

    End Sub

    Sub ButtonStart21()  'bb. 明細工作表中斷繼續開始紐

      '防止多次啟動

      If gbIsRunning1 = True Then

        If MsgBox("已有排程:" & gNextRunTime1 & ",是否重新紀錄?", vbOKCancel) = vbOK Then

          ButtonStop2

        Else

          Exit Sub

        End If

      End If

    With ActiveSheet

        gbIsRunning1 = True

        SetTimer2 .Name

      End With

    End Sub

    Sub ButtonStop2(Optional sSheetName As String)   'bb. 明細工作表停止按鈕

      gbIsRunning1 = False

      On Error Resume Next

      '取消下次執行時間

      Application.OnTime gNextRunTime1, "'SetTimer2 """ & IIf(sSheetName <> "", sSheetName, ActiveSheet.Name) & """'", , False

      On Error GoTo 0

      MsgBox (" bb.明細 動作已停止")

    End Sub

    Sub SetTimer2(sSheetName As String)

      Const MAX_ROW = 543

      gNextRunTime1 = Now + TimeValue("00:00:10")

      Application.OnTime gNextRunTime1, "'SetTimer2 """ & sSheetName & """'"

      If mainFunc2(sSheetName) >= MAX_ROW Then ButtonStop2 sSheetName  '執行並回傳row

    End Sub

    Function mainFunc2(sSheetName As String) As Long  'bb.明細工作表記錄部份

      With ThisWorkbook.Sheets(sSheetName)

        i = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

        .Cells(i, "A") = Format(Time, "Hh:Mm:Ss")   'ROW A,記錄時間

        .Cells(i, "B").Resize(, 48).Value = .Cells(6, "B").Resize(, 48).Value  'B6-AW6複製到B7-AW7

      End With

      mainFunc2 = i  '回傳當前列數

    End Function

    此回答有幫助嗎?

    0 則留言 沒有留言
  4. 匿名
    2019-02-26T11:08:43+00:00

    你如果沒有用到 Select / Active 這類公用變數,VBA 仍是各自獨立。

    你可以把不正常的地方完整描述出來,或貼出程式碼。

    此回答有幫助嗎?

    0 則留言 沒有留言
  5. 匿名
    2019-02-26T07:47:16+00:00

    謝謝你的回覆

    我對VBA還是個新手,只能照原本的模組來寫

    原本在excel 2010版本下,只要各自開啟活頁簿,不要在同一個檔案裡開啟

    活頁簿是可以各自獨立,所寫的VBA就不會被其他活頁簿的工作影響

    但換來了excel 365版本,不管我怎麼開啟活頁簿,都會變成是同一個來源開啟

    所以就像你說的,只要VBA有運作,若在其他活頁簿裡工作,VBA馬上就會停止

    所以我困擾的是該如何解決這個問題,讓excel 365版本下的活頁簿可以各自獨立

    這樣VBA被影響的情況就不會發生

    此回答有幫助嗎?

    0 則留言 沒有留言