寫一個另存新檔的巨集,但是需要.pdf file,那麼應怎改寫?
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
22#
發表於 2012-12-22 11:13
| 只看該作者
回復 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
複製代碼 |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
|
23#
發表於 2012-12-22 11:45
| 只看該作者
回復 22# Blade
20# If Dir("d:\Account book\INV\*" & " xSNo " & "*.pdf ") <> "" Then
多了兩個" , " xSNo " 為字串-> "d:\Account book\INV\* xSNo *.pdf "
正確:
If Dir("d:\Account book\INV\*" & xSNo & "*.pdf ") <> "" Then
如 xSNo="test"
字串="d:\Account book\INV\*" & "test"& "*.pdf " |
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
24#
發表於 2012-12-22 14:28
| 只看該作者
本帖最後由 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之後按
一下長方紅色按鈕,便剪貼回收據編號那處,
每一次都是這樣。
如果紅色那列的編號用完,便按一下綠色的按鈕,把那行的編號剪貼到最左面紅色按鈕處來補充
請問有甚麼好的方式去超越這方法? |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
|
25#
發表於 2012-12-22 16:31
| 只看該作者
本帖最後由 GBKEE 於 2012-12-22 16:57 編輯
回復 24# Blade - 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
複製代碼- Sub 發票更新()
- Dim xSNo As Range, i As Integer, y As Integer, R As Integer, RR As Integer
- Set xSNo = Range("L7")
- y = Len(xSNo) '[發票編號]的字串個數
- For i = 1 To y
- If R = 0 And Mid(xSNo, i, 1) Like "[0-9]" Then R = i '找[發票編號]中第一個數字
- If Mid(xSNo, i, 1) Like "[!0-9]" Then RR = i '找[發票編號]中最後的文字
- Next
- If RR > R Or R = 0 Or xSNo = 0 Then '數字在文字之前(或只有文字),只有數字
- MsgBox " 發票有誤 !!!"
- Else
- xSNo = Mid(xSNo, 1, R - 1) & Format(Mid(xSNo,R) + 1, String((y - R + 1), "0"))
- End If
- '如 y - R + 1 = 5
- '如 :Format(568, String((y - R + 1), "0")) => Format(568, "00000") => 5位數: 00568
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
26#
發表於 2012-12-22 23:54
| 只看該作者
回復 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
複製代碼 |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
|
27#
發表於 2012-12-23 07:30
| 只看該作者
回復 26# Blade
Find 方法
備註:
每次呼叫本方法後,將儲存 LookIn、LookAt、SearchOrder 及 MatchByte 的設定。
如果下一次呼叫時未指定這些引數,將使用儲存的設定。
設定這些引數將改變 [尋找] 對話方塊中的設定,而修改 [尋找] 對話方塊中的設定,也將改變系統在省略這些引數時所使用的儲存值。
為避免出現麻煩,每次呼叫本方法時,請明確指定這些引數的值。- Option Explicit
- Sub FindStudent()
- Dim The_Name As Range
- Sheets("student").Select
- Set The_Name = Cells.Find(InputBox("請輸入學生 ﹝編號﹞ 或 ﹝名稱﹞"), LookAt:=xlWhole, MatchCase:=False)
- '參數 LookAt:=xlWhole 字串全部相同
- '參數 MatchCase:= False 字串不區分大小寫
- '
- If Not The_Name Is Nothing Then
- The_Name.Select
- Else
- MsgBox "找不到學生: ﹝編號﹞ 或 ﹝名稱﹞"
- End If
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
28#
發表於 2014-1-16 02:13
| 只看該作者
我今次又遇到離題。
請指教
早前經大大指教下,寫了以下指令。
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
複製代碼 |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
|
29#
發表於 2014-1-16 07:43
| 只看該作者
回復 28# Blade
Range(",").Select
雙引號內是儲存格的位置A1文字格式 |
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
30#
發表於 2014-1-17 01:01
| 只看該作者
回復 Blade
Range(",").Select
雙引號內是儲存格的位置A1文字格式
GBKEE 發表於 2014-1-16 07:43
應該是這様說:
我現時每一位會員都做了一個鍵給他們,只要按下那鍵便會把AB會員編號及名稱一同copy到invoice那頁的只定區。
後來發覺人數增長大了,我沒可能每位會員也給他一個鍵,因此我做了一個"圖片"右上粉色的選取鍵,我只要指向會員編號再按shift再選名稱,之後再按下一粉色鍵便成功把會員編號及名稱一同copy到invoice。
但現在我安排了平板電腦給前線客戶專員,如果用手指去操控,要選A編號及B名稱是有難題的,所以我想的方法是,我指向想要的會員編號,但當我按一下選取鍵,便能自動地連同會員名稱也一起copy,到invoice。 |
|
|
|
|
|
|