標題:
自訂巨集的按鈕是否可以快速從A電腦轉換至B電腦
[打印本頁]
作者:
jntseng
時間:
2010-12-14 23:13
標題:
自訂巨集的按鈕是否可以快速從A電腦轉換至B電腦
問題: 在A電腦寫了一些巨集,且已設定了工具列的按鈕,想將A 設定好的巨集可以直接拿至B電腦用嗎? 若可以要如何用呢? 詳細如圖檔所示
作者:
mistery
時間:
2010-12-15 09:16
本帖最後由 mistery 於 2010-12-15 09:27 編輯
到 VBE 將模組匯出即可
[attach]4098[/attach]
[attach]4099[/attach]
作者:
GBKEE
時間:
2010-12-15 16:29
回復
1#
jntseng
將下列的程式碼複製到一般模組內(Module)存檔後到任一PC都可用.(版本要相容的)
請修改 Private Sub Test() 為你設定好的巨集
Option Explicit
Sub Auto_Open()
On Error Resume Next
Application.CommandBars("MyBar").Delete
With CommandBars.Add("MyBar", , , True)
With .Controls.Add(1)
.Caption = "自訂指令A"
.FaceId = 263
.Style = 3
.OnAction = "TEST" '指定設定好的巨集名稱
End With
With .Controls.Add(1)
.Caption = "自訂指令B"
.FaceId = 331
.Style = 3
.OnAction = "TEST" '指定設定好的巨集名稱
End With
.Visible = True
End With
End Sub
Private Sub Test() '設定好的巨集名稱
Dim S$
Select Case Val(Application.Version)
Case 12
S = "Excel 2007"
Case 11
S = "Excel 2003"
Case 10
S = "Excel 2002"
Case 9
S = "Excel 2000"
Case 8
S = "Excel 97"
Case 7
S = "Excel 95"
Case 5
S = "Excel 5.0"
End Select
With Application.CommandBars.ActionControl
MsgBox "電腦名稱 = " & Environ("ComputerName") & vbLf & _
"使用者姓名 = " & Environ("UserName") & vbLf & _
"Excel 版本 = " & S, , .Caption
If .Caption = "自訂指令A" Then
.FaceId = IIf(.FaceId = 263, 66, 263)
ElseIf .Caption = "自訂指令B" Then
.FaceId = IIf(.FaceId = 343, 331, 343)
End If
End With
End Sub
複製代碼
作者:
mistery
時間:
2010-12-15 19:26
回復
3#
GBKEE
想請教 GBKEE 版主...
1.您寫的那段VBA程式碼與手動匯出再匯入的結果會是一樣嗎?
2.是否會將所有自訂的VBA一次自動轉入到新PC?
3.會包含當初自訂VBA用的按鈕圖案嗎?
先感謝版主...... (上述的功能我還滿需要的 當然....最大的動機...還是想學習)
作者:
GBKEE
時間:
2010-12-15 20:00
回復
4#
mistery
1.匯入模組的後還要 存檔後再開檔 或 執行巨集或 手動 才會達到樓主的效果
2.不是自動轉入到新PC, 是隨者檔案跑.
3.會包含當初自訂VBA用的按鈕圖案嗎? . 輸入自定 FaceId
No
.就行了
紅色數字是按鈕圖案的代號
程式碼 -> FaceId =
263
作者:
mistery
時間:
2010-12-15 21:59
我本來以為 jntseng 問的是 ...非針對一特定已存在的檔案
而是一臨時不特定的檔案 巨集可以直接手動執行 (不然應該就不會設自訂按鈕了)
(如果是特定檔案 巨集錄製時就會選擇存在"現用活頁簿"中)
感謝 GBKEE版主的說明...(要花時間來好好研究一下版主的程式)
作者:
jntseng
時間:
2010-12-18 10:07
回復
3#
GBKEE
Dear GBKEE :
謝謝你提供的程式,測試結果可行,但有以下幾各問題請教:
[1] 我直接使用前半段的程式碼即可以執行我想要的結果,(前半段的程式碼如第1圖所示),所以後面 Private Sub Test() 目的為何呢?,沒有此程式碼在什麼條件下會有問題呢?(後段程式碼如第2圖片所示)
[2] faceid 數字的範圍是多少呢? 我要如何知道我有哪些數字可以選擇呢?
[3]第3圖片紅色框框的地方不懂 ,iff(a,b,c)語法不是 當符合a條件時,會顯示b,若不符合a時,會顯示c 嗎? 所以
.faceid=iff(.faceid=263,66,263 ) 選擇是什麼呢? 是第1個263 ? 還是66? 或者是第2個 263?
作者:
GBKEE
時間:
2010-12-18 10:53
本帖最後由 GBKEE 於 2010-12-18 10:56 編輯
回復
7#
jntseng
With CommandBars.Add("MyBar", , , True) '這是新增加一個工具列
With .Controls.Add(1) '新增加一個工具列-> 新增指令按鈕
.Caption = "自訂指令A" '按鈕名稱
.FaceId = 263 '按鈕標題
.Style = 3 '按鈕形式
你所問的-> "在A電腦寫了一些巨集,
且已設定了工具列的按鈕,想將A 設定好的巨集
可以直接拿至B電腦用嗎"
"TEST是示範給你看的 " 修改TEST為你在A電腦寫了一些巨集名稱 "
"存檔後 可以直接拿到其他的電腦用
.OnAction = "TEST" '
按下按鈕後所執行的的巨集名稱
End With
End With
.Visible = True
End With
End Sub
Private Sub Test() '
按下按鈕後所執行的的巨集
Dim S$
'
'
With Application.CommandBars.ActionControl '
使用中的控制項(按鈕)
MsgBox "電腦名稱 = " & Environ("ComputerName") & vbLf & _
"使用者姓名 = " & Environ("UserName") & vbLf & _
"Excel 版本 = " & S, , .Caption
If .Caption = "自訂指令A" Then
.FaceId = IIf(.FaceId = 263, 66, 263)
' .FaceId 為
控制項(按鈕)按鈕圖示的 ID 數值->
IIf
(
使用中的控制項(按鈕
) 當ID=263,傳回66 ,不為263傳回263)
ElseIf .Caption = "自訂指令B" Then
.FaceId = IIf(.FaceId = 343, 331, 343)
End If
End With
End Sub
FaceId的ID 數值 請看附檔是網路抓下來的
[attach]4137[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)