如果Excel檔,因為內含多許用不到的物件,可透過按F5→特殊→物件,待全選了物件後,按Delete鍵一次刪除。
但如果該檔案中含有其它的圖案要保留,以上方法會連圖型或圖案也刪了。
如果只是要針對空白的文字方塊,可以用以下VBA來刪除,空白的文字方塊(物件)
點選要處理的工作表後,按Alt+F11,貼上以下巨集,再執行即可。
Sub 巨集2()
For Each tbox In ActiveSheet.TextBoxes
If tbox.Text = "" Then tbox.Delete
Next tbox
End Sub
2016年9月14日 星期三
2015年5月26日 星期二
Outlook VBA Outlook通訊錄
以下Outlook VBA 的作用在於將特定目錄下的連絡人資料夾,顯示為電子郵件通訊錄
Sub ContactsFolder()
Dim myNameSpce As Outlook.NameSpace
Dim mySourFolder, myDestFolder As Outlook.MAPIFolder
Dim thisFolder As Outlook.MAPIFolder
Dim uName As String
Set myNameSpace = Application.GetNamespace("MAPI")
myNameSpace.AddStore "D:\Mail\通訊錄.pst" '開啟預設通訊錄檔案
Set mySourFolder = myNameSpace.Folders("通訊錄").Folders("G-SPEC 連絡人") '來源資料檔"收件匣"物件
For i = 1 To mySourFolder.Folders.Count
Set thisFolder = mySourFolder.Folders(i)
If thisFolder.ShowAsOutlookAB = False Then '判斷是否未選擇顯示該連絡人目錄
thisFolder.ShowAsOutlookAB = True '將此資料夾顯示為電子郵件通訊錄
MsgBox ("顯示通訊錄 " & thisFolder.Name)
End If
Next i
Set myNameSpace = Nothing
End Sub
Sub ContactsFolder()
Dim myNameSpce As Outlook.NameSpace
Dim mySourFolder, myDestFolder As Outlook.MAPIFolder
Dim thisFolder As Outlook.MAPIFolder
Dim uName As String
Set myNameSpace = Application.GetNamespace("MAPI")
myNameSpace.AddStore "D:\Mail\通訊錄.pst" '開啟預設通訊錄檔案
Set mySourFolder = myNameSpace.Folders("通訊錄").Folders("G-SPEC 連絡人") '來源資料檔"收件匣"物件
For i = 1 To mySourFolder.Folders.Count
Set thisFolder = mySourFolder.Folders(i)
If thisFolder.ShowAsOutlookAB = False Then '判斷是否未選擇顯示該連絡人目錄
thisFolder.ShowAsOutlookAB = True '將此資料夾顯示為電子郵件通訊錄
MsgBox ("顯示通訊錄 " & thisFolder.Name)
End If
Next i
Set myNameSpace = Nothing
End Sub
2012年1月12日 星期四
Outlook VBA 取得並建立相同的資料夾結構
以下VBA程式為在Outlook下取得並建立相同的資料夾結構
Sub MailFolder()
Dim myNameSpce As Outlook.NameSpace
Dim mySourFolder, myDestFolder As Outlook.MAPIFolder
Dim subFolder, thisFolder, thismyDestFolder As Outlook.MAPIFolder
Dim uName As String
uName = VBA.Environ("UserName") '取得登入名稱
Set myNameSpace = Application.GetNamespace("MAPI")
Set mySourFolder = myNameSpace.Folders(uName + "_2013").Folders("收件匣") '來源資料檔"收件匣"物件
Set myDestFolder = myNameSpace.Folders(uName + "_2014").Folders("收件匣") '目標資料檔"收件匣"物件
For i = 1 To mySourFolder.Folders.Count
Set thisFolder = mySourFolder.Folders(i)
On Error Resume Next '發生錯誤也繼續執行,避免資料夾已存在
myDestFolder.Folders.Add (thisFolder.Name) '於目標資料檔下建立資料夾
Set thismyDestFolder = myDestFolder.Folders(thisFolder.Name)
If thisFolder.Folders.Count <> 0 Then '判斷 "收件匣" 下的 "子資料夾" 下是否還有子資料夾
Set subFolder = subFolders(thisFolder, thismyDestFolder)
End If
Next i
End Sub
Function subFolders(ByVal mySourFolder As Outlook.MAPIFolder, myDestFolder As Outlook.MAPIFolder) As Outlook.MAPIFolder
Dim subFolder, thisFolder, thismyDestFolder As Outlook.MAPIFolder
For i = 1 To mySourFolder.Folders.Count
Set thisFolder = mySourFolder.Folders(i)
On Error Resume Next '發生錯誤也繼續執行,避免資料夾已存在
myDestFolder.Folders.Add (thisFolder.Name) '於目標資料檔下建立資料夾
Set thismyDestFolder = myDestFolder.Folders(thisFolder.Name)
If thisFolder.Folders.Count <> 0 Then '判斷 "收件匣" 下的 "子資料夾" 下是否還有子資料夾
Set subFolder = subFolders(thisFolder, thismyDestFolder)
End If
Next i
End Function
2012年1月6日 星期五
使用VB Script安裝網路印表機驅動
將以下文字存成*.VBS的檔案,再修改相關參數即可
(連接埠IP、INF路徑、驅動程式模組與名稱)
'本例以HP1022N做示範
Set objWMIService = GetObject("winmgmts:")
Set objNewPort = objWMIService.Get _
("Win32_TCPIPPrinterPort").SpawnInstance_
'設定連接埠IP
objNewPort.HostAddress = "192.168.61.101" '網路印表機IP
objNewPort.Name = "IP_192.168.61.101" '印表機連接埠名稱
'設定連接埠Protocol
objNewPort.Protocol = 1 '1: RAW 2:LPR
objNewPort.PortNumber = "9100" '印表機連接埠號 RAW=9100,LPR=515
objNewPort.Queue="LPR" 'LPR
objNewPort.ByteCount="TRUE" '啟用LPR位元組計數
'設定是否使用SNMP
objNewPort.SNMPEnabled = False '是否使用SNMP
objNewPort.Put_
'設定印表機驅動路徑與名稱
PrinterDriver_inf= ".\HP1022N\HPLJ1020.inf" '驅動程式inf檔案位置
Printer_Model = "HP LaserJet 1022n" '驅動程式模組
Printer_Name = "HP LaserJet 1022n" '印表機名稱
'開始安裝(以下不可變更)
sCmd = "rundll32.exe printui.dll,PrintUIEntry /if /b """ &Printer_Name& """ /f """ _
& PrinterDriver_inf &""" /r" _
& " """ &objNewPort.Name& """ /m """&Printer_Model&""
cmd = "control printers"
DefaultPrint = "rundll32 printui.dll,PrintUIEntry /y /n """ &Printer_Name&""
Set oShell = CreateObject("WScript.Shell")
oShell.Run sCmd, 1, True
oShell.Run cmd
oShell.Run DefaultPrint
WScript.Echo Printer_Name&" 安裝完成!"
(連接埠IP、INF路徑、驅動程式模組與名稱)
'本例以HP1022N做示範
Set objWMIService = GetObject("winmgmts:")
Set objNewPort = objWMIService.Get _
("Win32_TCPIPPrinterPort").SpawnInstance_
'設定連接埠IP
objNewPort.HostAddress = "192.168.61.101" '網路印表機IP
objNewPort.Name = "IP_192.168.61.101" '印表機連接埠名稱
'設定連接埠Protocol
objNewPort.Protocol = 1 '1: RAW 2:LPR
objNewPort.PortNumber = "9100" '印表機連接埠號 RAW=9100,LPR=515
objNewPort.Queue="LPR" 'LPR
objNewPort.ByteCount="TRUE" '啟用LPR位元組計數
'設定是否使用SNMP
objNewPort.SNMPEnabled = False '是否使用SNMP
objNewPort.Put_
'設定印表機驅動路徑與名稱
PrinterDriver_inf= ".\HP1022N\HPLJ1020.inf" '驅動程式inf檔案位置
Printer_Model = "HP LaserJet 1022n" '驅動程式模組
Printer_Name = "HP LaserJet 1022n" '印表機名稱
'開始安裝(以下不可變更)
sCmd = "rundll32.exe printui.dll,PrintUIEntry /if /b """ &Printer_Name& """ /f """ _
& PrinterDriver_inf &""" /r" _
& " """ &objNewPort.Name& """ /m """&Printer_Model&""
cmd = "control printers"
DefaultPrint = "rundll32 printui.dll,PrintUIEntry /y /n """ &Printer_Name&""
Set oShell = CreateObject("WScript.Shell")
oShell.Run sCmd, 1, True
oShell.Run cmd
oShell.Run DefaultPrint
WScript.Echo Printer_Name&" 安裝完成!"
訂閱:
文章 (Atom)