Board logo

標題: [發問] 請問開啟複本 [打印本頁]

作者: jackdream    時間: 2014-11-17 10:59     標題: 請問開啟複本

各位大大,想請教

Workbooks.Open Filename:=name, ReadOnly:=True
上面語法是唯讀開啟檔案
但是如果遇到原本就已經開啟的狀態下(檔名一樣),就會造成必需關掉舊檔才能開啟,
例如原本就有開啟 A.xls(檔名一樣,路徑不同),
如果程式要再開啟 A.xls 就會造成錯誤(因為相同檔名)

如果想直接將 A.xls 開啟成為複本(避免開相同檔名),語法該如何修改呢? 感謝!
作者: luhpro    時間: 2014-11-18 23:21

本帖最後由 luhpro 於 2014-11-18 23:24 編輯
各位大大,想請教

Workbooks.Open Filename:=name, ReadOnly:=True
上面語法是唯讀開啟檔案
但是如果遇 ...
jackdream 發表於 2014-11-17 10:59
  1. Sub nn()
  2.   Dim sFlName$, sNFlName$
  3.   Dim bNFind As Boolean
  4.   Dim vA
  5.   
  6.   sFlName = "D:\test.xls" ' 第一個檔案的完整路徑+檔名
  7.   Workbooks.Open sFlName, , True ' 開啟第一個檔案
  8.   sFlName = Mid(sFlName, InStrRev(sFlName, "\") + 1)
  9.   bNFind = True
  10.   For Each vA In Workbooks
  11.     If vA.Name = sFlName Then bNFind = False ' 找到同名檔案已開啟
  12.   Next
  13.   sFlName = "C:\test.xls" ' 第二個檔案的完整路徑+檔名
  14.   If bNFind Then
  15.     Workbooks.Open sFlName, , True ' 若未發現同名檔案被開啟則直接開檔
  16.   Else
  17.     If Dir(sFlName) <> "" Then ' 確認不同路徑下第二個同名檔案是存在的
  18.       vA = InStrRev(sFlName, "\")
  19.       sNFlName = Left(sFlName, vA) & "副本-" & Mid(sFlName, vA + 1)
  20.       Name sFlName As sNFlName ' 必須先更名才能開啟該檔案
  21.       Workbooks.Open sNFlName, , True ' 開啟第二個檔案
  22.     End If
  23.   End If
  24. End Sub
複製代碼

作者: jackdream    時間: 2014-11-21 08:08

回復 2# luhpro

不曉得是版本的問題還是其他,執行過程會發生錯誤.

不過,經由大大您語法內容的指點,改用Shell方式更改檔名再開啟已OK
感謝!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)