僅供參考不作為投資理財規劃。
喜歡攝影的我,喜歡到處拍拍照,吃點當地的特色食物。 跟朋友聊天之餘,推薦我寫成網誌跟大家分享。 沒外出的日子,喜歡在家當隱性宅,寫程式看看書,追劇。 希望我的手札文,不會讓你翻桌 XD
2022年4月30日 星期六
VBA:取消篩選(Autofilter、AdvancedFilter )
執行c_3 副程式即取消篩選狀態
Sub C_3() '篩選與復原
Dim ws As Worksheet
Set ws = ThisWorkbook.ActiveSheet
With ws
If .FilterMode Then
.ShowAllData
End If
End With
Set ws = Nothing
End Sub
2022年4月28日 星期四
記錄:用VBA 彙整三大法人交易日報表
小編無聊之作
網路一堆教學文了,方法也超多,如WORKBOOKS.OPEN、QueryTables或其他方式,
小編就不獻醜了;看看動作片就好。
主要關鍵在於亂碼處理,與資料正規化。
流程:跑網路>亂碼>資料正規化>寫入資料>自動另存新檔
也非用QueryTables做法,QueryTables用多了,有點 BUG 哈。
主要透過MSXML2來處理網路資料為主。
影片:(忘了處理排版 XD)
2022年4月27日 星期三
2022年4月26日 星期二
VBS GetObject 2個簡單例子、儲存格寫資料、call 副程式
GETOBJECT:
簡單例子:
VBS檔,可以直接用記事本編輯歐,記得副檔名要用.VBS而已
先設置ExcelObj 為"Excel.Application"物件,小編透過活頁簿1做DEMO所以檔案名稱跟工作表名稱與儲存格都要設定,跑完程式記得要釋放歐。
,Set ExcelObj = GetObject(, "Excel.Application")
ExcelObj.Workbooks("活頁簿1.xlsm").Sheets("工作表1").Range("b1") = 1
Set ExcelObj = Nothing
延伸:
增加一個
Set ExcelObj = GetObject(, "Excel.Application")
ExcelObj.Workbooks("DEMO").Sheets("s").Range("b2:l2")=1
ExcelObj.Workbooks("DEMO").Sheets("s").Range("o2") =10
'驅動目標工作簿TEST副程式,並傳送數字資料2
ExcelObj.Application.Run "TEST",2 '目標工作簿的mobule做副程式驅動
Set ExcelObj = Nothing
怪的是office365 ok,但office 2010 faile,有空再測試2013
下一篇 Creatobject
2022年4月24日 星期日
VBA:寫CSV檔案遇到資料有逗號怎辦??
因為需要,小編透過Scripting.FileSystemObject做了一個寫CSV的模組,沒有用純文字檔處理的方式:
VBA CODE:
Sub file_save(sFileName, SAVE_STR) | |
'sFileName 設定的寫入檔案名稱 | |
'SAVE_STR 資料來源 | |
On Error GoTo line1 | |
Set fs = CreateObject("Scripting.FileSystemObject") | |
'On Error Resume Next | |
EXIT_FILE_out = EXIT_FILE(sFileName) '檢查檔案是否存在(重複) | |
If EXIT_FILE_out = 1 Then | |
fs.DeleteFile sFileName | |
End If | |
Set A = fs.CreateTextFile(sFileName, True) | |
temp = Split(SAVE_STR, Chr(13)) ' STEP BY FILE AVOID IN BIG FILE | |
For l = LBound(temp) To UBound(temp) | |
A.WriteLine temp(l) | |
Next | |
A.Close | |
SAVE_STR = "" | |
Exit Sub | |
line1: | |
MsgBox "存檔錯誤,請使用中斷+pause 做debug" | |
End Sub | |
Function EXIT_FILE(S) | |
Set fs = CreateObject("Scripting.FileSystemObject") | |
If fs.FileExists(S) Then | |
EXIT_FILE = 1 | |
Else | |
EXIT_FILE = 0 | |
End If | |
End Function |
以上
主要是寫入資料>檢查有無重複>有刪除/無寫入新檔>DONE
為避免單一次寫入資料過大,透過迴圈逐行寫入。
後來發現資料中會帶逗號,思考兩條路。
1.不要寫CSV,因為CSV就是用逗號區分資料的 ,用其他格式然後給EXCEL讀檔這樣???
2.直寫EXCEL檔案,因為用CSV主要目的是給EXCEL用,就直接寫EXCEL八
定案方案2直接衝:
VBA CODE
Sub file_excel_save(file_path, str_comm, SHEET_NAME) | |
Dim sFolder As String | |
Set xlApp = CreateObject("Excel.Application") | |
Set xlBook = xlApp.Workbooks.Open(file_path) | |
xlApp.Visible = True | |
xlBook.Application.Run "autorun2", str_comm, SHEET_NAME | |
xlBook.Close (True) | |
xlApp.Quit | |
Set xlApp = Nothing | |
End Sub |
2022年4月18日 星期一
2022年4月17日 星期日
2022年4月15日 星期五
vba 刪除檔案方法不愛 KILL
懶人用法kill :
語法很簡單就是 KILL +檔案路徑+完整檔案名稱
但缺點是有時候會有一點BUG,如字串長度限制
非懶人法(Scripting.FileSystemObject):
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(FILEPath ) Then
fs.DeleteFile FILEPath
End If
End With
VBA OUTLOOK 練習取得資料夾名稱
練習取得資料夾名稱VBA:
Sub MAPI_FOLDER() | |
Dim myNameSpace As Outlook.NameSpace | |
Dim myFolder As Outlook.MAPIFolder | |
Dim C As Variant, arrC As Variant | |
arrC = Array(olFolderInbox, olFolderSentMail) | |
Set myNameSpace = Application.GetNamespace("MAPI") | |
For i = 0 To UBound(arrC) | |
Set myFolder = myNameSpace.GetDefaultFolder(arrC(i)) | |
MsgBox myFolder.Name | |
Call MAPI_subFolder_DEMO(arrC(i)) | |
Next | |
End Sub | |
Sub MAPI_subFolder_DEMO(C) | |
Dim subFolder As Outlook.MAPIFolder | |
Dim PATH As String | |
Dim subFolder_STR As String | |
Set myNameSpace = Application.GetNamespace("MAPI") | |
Set myFolder = myNameSpace.GetDefaultFolder(C) | |
MsgBox myFolder.Name | |
If myFolder.Folders.Count <> 0 Then | |
For Each subFolder In myFolder.Folders | |
MsgBox subFolder.Name | |
Next subFolder | |
Else | |
If myFolder.Folders.Count = 0 Then | |
MsgBox myFolder.Name | |
End If | |
End If | |
End Sub |
說明:
練習取得資料夾名稱
2022年4月3日 星期日
VBA ERR處理 Automation 錯誤 2147319767~重安裝OFFICE 搞定
-2147319767;Automation 錯誤
先前參照無效,或是參照到未編譯的類型。
就是這樣,我搞了好久,感恩更新的安全性,但也衍生參照錯誤發生。
最後直接重新安裝OFFICE 2019就搞定了。
思考:
昨天正常,今天不正常中毒?>比對法、元件異常確認?
檔案換電腦有無正常 答案:正常
掛載 AccessibilitycplAdmin 1.0做元件測試 答案:無解。
直接重安裝OFFICE.....................過關了。
指數變化(2025.03.20)
指數變化(2025.03.20) 上周焦點: 美國紐約州製造業指數 -20 美國企業庫存月增率 +0.3% 美國零售額月增率 +0.1% FED 不升息 川普 名句:對等關稅是具備彈性的 本周愛看: 美國消費者信心指數 3/25 美國耐久財訂單月增率 3/26 ...

-
寫給自己速查 垂直屬性:HorizontalAlignment 水平屬性:VerticalAlignment 置中:xlCenter 靠左靠右:XLLEFT、XLRIGHT Sheets("工作表1").Range("m2").Ve...
-
美國實質可支配所得 利率與黃金 消費者信心 利率PK DW PK FED紐約分行 上海貨櫃指數 BDI CRB 美國m 1 m2 s&p 美國 非農 美國 非農就業職務空缺率 美國股市 行事曆 fomc 會議紀要與開會時間 全球股市行事曆 全球股市 巴菲特指數 外...
-
整理資料時,不免要判斷資料數量,在判斷資料時,資料有時會有不連續與連續資料,這時候判斷方式不盡相同 連續資料時: a行於65000儲存格以前的最後列,有點饒舌;應該是這樣看,從a65000往上找(xlup),找到的第一個儲存格,也相對於是a行在65000列之前最後一列。 END...