寫一個另存新檔的巨集,但是需要.pdf file,那麼應怎改寫?
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
本帖最後由 Blade 於 2012-12-22 01:05 編輯
回復 19# GBKEE - Option Explicit
- Sub 另存新檔測試()
- Dim File_Name As String, xFile As String, xSNo As String, xName As String
- xFile = Range("D6")
- xSNo = Range("L7")
- xName = Range("M7")
- File_Name = xFile & "_" & xSNo & "_" & xName & ".pdf"
- ActiveWorkbook.Save
- ChDrive "D:\"
- If Mid(CurDir, 1, 1) <> "d" Then ChDrive "d:\"
- ChDir "d:\Account book\INV\"
- If Dir("d:\Account book\INV\*" & " xSNo " & "*.pdf ") <> "" Then
- MsgBox "發票編號 "& xSNo &" 已開出"
- Exit Sub
- End If
- Do
- File_Name = InputBox("另存新檔", "[檔案存檔]", File_Name)
- If File_Name = "" Then
- Exit Sub
- Else
- If Dir(File_Name) <> "" Then
- If MsgBox("【注意】檔案名稱已經存在。是否要覆蓋它?如覆蓋它資料將會被更新。", vbYesNo) = vbYes Then
- Exit Do
- Else
- File_Name = ""
- End If
- End If
- End If
- Loop While Not UCase(File_Name) Like "*.PDF"
- ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFile & "_" & xSNo & "_" & xName & ".pdf", Quality:=xlQualityStandard _
- , IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
- End Sub
複製代碼 |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 17# GBKEE
:) 成功了,感謝!
請問版大你改了那裡呢?我看了幾遍還是找不到,不同之處。- If Dir("d:\Account book\INV\*" & xSNo & "*.pdf ") <> "" Then
- MsgBox "【注意】此收據編號 " & xSNo & " 早前已開出,請重新輸入。"
- Exit Sub
- End If
複製代碼 如果我想把code改成如下,不論是 xFile、xSNo、xName,是否都是放在同一位置?- If Dir("d:\Account book\INV\*" & xFile & "*.pdf ") <> "" Then
- MsgBox "【注意】此收據編號 " & xFile & " 早前已開出,請重新輸入。"
- Exit Sub
- End If
複製代碼 |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
本帖最後由 Blade 於 2012-12-22 14:30 編輯
回復 Blade
20# If Dir("d:\Account book\INV\*" & " xSNo " & "*.pdf ") "" Then
多了兩個" , " ...
GBKEE 發表於 2012-12-22 11:45 
成功了:D
我現時用了一個比較笨的方法,去打入收據編號,
便是按一下收據編號隔鄰的紅色按鈕,便會跳到invno那sheet之後按
一下長方紅色按鈕,便剪貼回收據編號那處,
每一次都是這樣。
如果紅色那列的編號用完,便按一下綠色的按鈕,把那行的編號剪貼到最左面紅色按鈕處來補充
請問有甚麼好的方式去超越這方法? |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 Blade
GBKEE 發表於 2012-12-22 16:31 
我在invoice sheet加了一個click key,係去搵 student sheet 的學生資料,Inputbox成功跳出來,我鍵入會員編號後,沒有跳到那會員的"列",請問欠缺了甚麼指令?
另外那個InputBox是跳到student sheet開啟,如果我想那個InputBox停留在invoice,到我鍵入學生資料後,才跳到student sheet可以嗎?- Sub FindStudent()
- Sheets("student").Select
- InputBox ("請輸入學生 ﹝編號﹞ 或 ﹝名稱﹞")
- Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
- :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
- False, MatchByte:=False, SearchFormat:=False).Activate
- Exit Sub
-
- End Sub
複製代碼 |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
我今次又遇到離題。
請指教
早前經大大指教下,寫了以下指令。
Rang部分,指定了A3:B3,但是我不想指定A3:B3,每次我都自己選不同Rang,那麼我應怎修改?- Sub StudentCopy()
- Selection.Copy
- Range("A3:B3").Select
- Sheets("invoice").Select
- Range("L7").Select
- ActiveSheet.Paste
- Application.CutCopyMode = False
- Range("K7").Select
- End Sub
複製代碼 我自己試修改成這樣,但都是出錯誤。- Range(",").Select
- Selection.Copy
- Sheets("invoice").Select
- Range("L7").Select
- ActiveSheet.Paste
- Application.CutCopyMode = False
- Range("K7").Select
- End Sub
複製代碼 |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 Blade
Range(",").Select
雙引號內是儲存格的位置A1文字格式
GBKEE 發表於 2014-1-16 07:43 
應該是這様說:
我現時每一位會員都做了一個鍵給他們,只要按下那鍵便會把AB會員編號及名稱一同copy到invoice那頁的只定區。
後來發覺人數增長大了,我沒可能每位會員也給他一個鍵,因此我做了一個"圖片"右上粉色的選取鍵,我只要指向會員編號再按shift再選名稱,之後再按下一粉色鍵便成功把會員編號及名稱一同copy到invoice。
但現在我安排了平板電腦給前線客戶專員,如果用手指去操控,要選A編號及B名稱是有難題的,所以我想的方法是,我指向想要的會員編號,但當我按一下選取鍵,便能自動地連同會員名稱也一起copy,到invoice。 |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 Blade
是這樣嗎?
GBKEE 發表於 2014-1-17 06:52 
感謝版大的指教。
我想問問,(, 3)是甚麼意思?
範圍是A&B的選定,如果是A-F,那麼是否修改成(, 5....6),如此類推? |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
Sheets("invoice").Range("L7")
另外想請教,以上的指令,是貼上 L7的,怎樣可設定無指向的指令? |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 Blade
Selection.Resize(列數, 欄數).Copy Sheets("invoice").Range("L7")
省略 列數 =同Selectio ...
GBKEE 發表於 2014-1-17 19:37 
感謝!
Selection.Resize 我完全明白了。:)
我見省略了是這様 Selection.Resize(, 3)
如果,我列和欄都省略,Selection.Resize(,)是否這様? |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
本帖最後由 Blade 於 2014-1-18 01:50 編輯
先看看圖片。
我現在懂得用Selection.Resize。
我同様地在course那頁,都做了按鍵給每一個課程。
現我我懂了Selection.Resize,我會用相同指令去處理course那頁,但是copy到invoice,那裡我有5行資料。
如果我 Copy Sheets("invoice").Range("B13"),那麼每次我選course,都只能copy到 B13,另外那4行我應怎編寫指令呢?
Copy Sheets("invoice").Range("B13") 我應用甚麼指令呢? |
|
|
|
|
|
|
|