返回列表 上一主題 發帖

寫一個另存新檔的巨集,但是需要.pdf file,那麼應怎改寫?

本帖最後由 Blade 於 2012-12-22 01:05 編輯

回復 19# GBKEE
  1. Option Explicit

  2. Sub 另存新檔測試()
  3. Dim File_Name As String, xFile As String, xSNo As String, xName As String
  4.         xFile = Range("D6")
  5.         xSNo = Range("L7")
  6.         xName = Range("M7")
  7.                 File_Name = xFile & "_" & xSNo & "_" & xName & ".pdf"
  8.                                 ActiveWorkbook.Save
  9. ChDrive "D:\"
  10. If Mid(CurDir, 1, 1) <> "d" Then ChDrive "d:\"
  11. ChDir "d:\Account book\INV\"
  12. If Dir("d:\Account book\INV\*" & " xSNo " & "*.pdf ") <> "" Then
  13. MsgBox "發票編號   "&  xSNo &"   已開出"
  14. Exit Sub
  15.         End If
  16.           Do
  17.             File_Name = InputBox("另存新檔", "[檔案存檔]", File_Name)
  18.             If File_Name = "" Then
  19.                 Exit Sub
  20.             Else
  21.                 If Dir(File_Name) <> "" Then
  22.                     If MsgBox("【注意】檔案名稱已經存在。是否要覆蓋它?如覆蓋它資料將會被更新。", vbYesNo) = vbYes Then
  23.                         Exit Do
  24.                     Else
  25.                         File_Name = ""
  26.                     End If
  27.                 End If
  28.             End If
  29.                    Loop While Not UCase(File_Name) Like "*.PDF"
  30.         ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFile & "_" & xSNo & "_" & xName & ".pdf", Quality:=xlQualityStandard _
  31.         , IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

  32. End Sub
複製代碼

TOP

回復 17# GBKEE
:) 成功了,感謝!
請問版大你改了那裡呢?我看了幾遍還是找不到,不同之處。
  1. If Dir("d:\Account book\INV\*" & xSNo & "*.pdf ") <> "" Then
  2.      MsgBox "【注意】此收據編號 " & xSNo & " 早前已開出,請重新輸入。"
  3.     Exit Sub
  4.         End If
複製代碼
如果我想把code改成如下,不論是 xFile、xSNo、xName,是否都是放在同一位置?
  1. If Dir("d:\Account book\INV\*" & xFile & "*.pdf ") <> "" Then
  2.      MsgBox "【注意】此收據編號 " & xFile & " 早前已開出,請重新輸入。"
  3.     Exit Sub
  4.         End If
複製代碼

TOP

本帖最後由 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之後按
一下長方紅色按鈕,便剪貼回收據編號那處,
每一次都是這樣。
如果紅色那列的編號用完,便按一下綠色的按鈕,把那行的編號剪貼到最左面紅色按鈕處來補充
請問有甚麼好的方式去超越這方法?

2012-12-22_142408.jpg (143.4 KB)

2012-12-22_142408.jpg

2012-12-21_164758.jpg (84.12 KB)

2012-12-21_164758.jpg

TOP

回復  Blade
GBKEE 發表於 2012-12-22 16:31


我在invoice sheet加了一個click key,係去搵 student sheet 的學生資料,Inputbox成功跳出來,我鍵入會員編號後,沒有跳到那會員的"列",請問欠缺了甚麼指令?
另外那個InputBox是跳到student sheet開啟,如果我想那個InputBox停留在invoice,到我鍵入學生資料後,才跳到student sheet可以嗎?
  1. Sub FindStudent()
  2.     Sheets("student").Select
  3.     InputBox ("請輸入學生 ﹝編號﹞ 或 ﹝名稱﹞")
  4.     Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
  5.         :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
  6.         False, MatchByte:=False, SearchFormat:=False).Activate
  7.         Exit Sub
  8.         
  9. End Sub
複製代碼

TOP

我今次又遇到離題。
請指教
早前經大大指教下,寫了以下指令。
Rang部分,指定了A3:B3,但是我不想指定A3:B3,每次我都自己選不同Rang,那麼我應怎修改?
  1. Sub StudentCopy()

  2. Selection.Copy
  3. Range("A3:B3").Select
  4. Sheets("invoice").Select
  5. Range("L7").Select
  6. ActiveSheet.Paste
  7. Application.CutCopyMode = False
  8. Range("K7").Select

  9. End Sub
複製代碼
我自己試修改成這樣,但都是出錯誤。
  1. Range(",").Select
  2.      Selection.Copy
  3.         Sheets("invoice").Select
  4.     Range("L7").Select
  5.     ActiveSheet.Paste
  6.     Application.CutCopyMode = False
  7.     Range("K7").Select
  8. End Sub
複製代碼

TOP

回復  Blade

Range(",").Select
雙引號內是儲存格的位置A1文字格式
GBKEE 發表於 2014-1-16 07:43



  應該是這様說:
  我現時每一位會員都做了一個鍵給他們,只要按下那鍵便會把AB會員編號及名稱一同copy到invoice那頁的只定區。
後來發覺人數增長大了,我沒可能每位會員也給他一個鍵,因此我做了一個"圖片"右上粉色的選取鍵,我只要指向會員編號再按shift再選名稱,之後再按下一粉色鍵便成功把會員編號及名稱一同copy到invoice。
  但現在我安排了平板電腦給前線客戶專員,如果用手指去操控,要選A編號及B名稱是有難題的,所以我想的方法是,我指向想要的會員編號,但當我按一下選取鍵,便能自動地連同會員名稱也一起copy,到invoice。

螢幕快照 2014-01-17 上午12.51.46.png (48.76 KB)

螢幕快照 2014-01-17 上午12.51.46.png

TOP

回復  Blade
是這樣嗎?
GBKEE 發表於 2014-1-17 06:52


感謝版大的指教。
我想問問,(, 3)是甚麼意思?
範圍是A&B的選定,如果是A-F,那麼是否修改成(, 5....6),如此類推?

TOP

Sheets("invoice").Range("L7")
另外想請教,以上的指令,是貼上 L7的,怎樣可設定無指向的指令?

TOP

回復  Blade
Selection.Resize(列數, 欄數).Copy Sheets("invoice").Range("L7")
省略 列數 =同Selectio ...
GBKEE 發表於 2014-1-17 19:37


感謝!
Selection.Resize 我完全明白了。:)
我見省略了是這様 Selection.Resize(, 3)
如果,我列和欄都省略,Selection.Resize(,)是否這様?

TOP

本帖最後由 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") 我應用甚麼指令呢?

螢幕快照 2014-01-18 上午01.30.32.png (33.04 KB)

螢幕快照 2014-01-18 上午01.30.32.png

螢幕快照 2014-01-18 上午01.31.13.png (83.86 KB)

螢幕快照 2014-01-18 上午01.31.13.png

螢幕快照 2014-01-18 上午01.31.48.png (25.44 KB)

螢幕快照 2014-01-18 上午01.31.48.png

螢幕快照 2014-01-18 上午01.32.07.png (29.76 KB)

螢幕快照 2014-01-18 上午01.32.07.png

螢幕快照 2014-01-18 上午01.32.23.png (34.76 KB)

螢幕快照 2014-01-18 上午01.32.23.png

TOP

        靜思自在 : 發脾氣是短暫的發瘋。
返回列表 上一主題