Board logo

標題: [發問] 文字檔開啟 [打印本頁]

作者: koplkjnm    時間: 2013-5-8 00:21     標題: 文字檔開啟

請問我想要用巨集開啟多個文字檔
檔案名稱為 y(i)-->y(1),y(2),y(3),...
那下碼怎麼修改

Sub 開啟檔案()
Dim name, i, x, oldname
oldname = ThisWorkbook.Name
Range("A1").Select
x = InputBox("數量")

For i = 1 To x
  name = i & ".txt"


感謝!
作者: mark15jill    時間: 2013-5-8 08:09

請問我想要用巨集開啟多個文字檔
檔案名稱為 y(i)-->y(1),y(2),y(3),...
那下碼怎麼修改

Sub 開啟檔案 ...
koplkjnm 發表於 2013-5-8 00:21


1. 有 For 沒 Next....
2.開起後?
3.文件檔案名稱?
4.檔案放置資料夾何在?
作者: GBKEE    時間: 2013-5-8 08:34

回復 1# koplkjnm
是這樣嗎?
  1. Option Explicit
  2. Sub 開啟檔案()
  3. ' Name是VBA 的關鍵字 請不要變數名稱
  4.     Dim i, x As Integer, txt_name
  5.     oldname = ThisWorkbook.name & "\"
  6.     Range("A1").Select
  7.     txt_name = Array("abc", "acc", "qqq", "aaa", "ccc")
  8.     Do
  9.         x = Application.InputBox("數量 不可 > " & UBound(txt_name) + 1, Type:=1)
  10.     Loop Until x <= UBound(txt_name) + 1 Or x = 0
  11.     If x > 0 Then
  12.         For i = 1 To x
  13.             Workbooks.Open txt_name & txt_name(i) & ".txt"
  14.         Next
  15.     End If
  16. End Sub
複製代碼

作者: koplkjnm    時間: 2013-5-11 00:11

抱歉我可能沒說清楚
下方的語法是可以連續開啟在同一個資料夾內的文字檔 1.txt ,2.txt ,...
那假使我的文字檔名為y(1).txt, y(2).txt, ...
那請問我要如何修改
感謝

Sub 文字檔案()
Dim txt_name, i, x, oldname
oldname = ThisWorkbook.Name
Range("A1").Select
x = InputBox("檔案數量")

For i = 1 To x
  txt_name = i & ".txt"

    Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & txt_name, Origin:=950 _
        , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
        Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
        Array(10, 1)), TrailingMinusNumbers:=True
   
   Windows(txt_name).Activate
   If i = 1 Then
    Range("A1").Select
    Else
     Range("A2").Select
    End If
   
    Next

End Sub
作者: koplkjnm    時間: 2013-5-11 00:16

GBKEE大
抱歉 請問這段用意是什麼 麻煩你了  謝謝
    txt_name = Array("abc", "acc", "qqq", "aaa", "ccc")
作者: GBKEE    時間: 2013-5-11 13:07

回復 5# koplkjnm
配合 1# 檔案名稱為 y(i)-->y(1),y(2),y(3),...   這為陣列
如 y = Array("abc", "acc", "qqq", "aaa", "ccc")
y(1)="abc"
y(2)="acc"
y(3)="qqq"

4# 可改
  1. Sub Ex()
  2.     Dim A As Variant, i As Integer, x As Integer
  3.     x = InputBox("檔案數量")
  4.     For i = 1 To x
  5.         Range("A" & i).Select
  6.         '************************
  7.         'If I = 1 Then
  8.             'Range("A1").Select
  9.         'Else
  10.             'Range("A2").Select
  11.         'End If
  12.         '*****************************
  13.     Next
  14. End Sub '
複製代碼

作者: koplkjnm    時間: 2013-5-12 23:34

回復 6# GBKEE

GBKEE大 抱歉可能我的理解較差
除了修改紅字的地方,其他不需修改嗎?
Range("A" & i).Select  這地方不太清楚意思?
麻煩你了 謝謝

Sub Ex()
    Dim A As Variant, i As Integer, x As Integer
    x = InputBox("檔案數量")
    For i = 1 To x
        Range("A" & i).Select
        '************************
        'If I = 1 Then
            'Range("A1").Select
        'Else
            'Range("A2").Select
        'End If
        '*****************************
    Next
End Sub '
作者: GBKEE    時間: 2013-5-13 06:18

回復 7# koplkjnm
  1. Option Explicit
  2. Sub 文字檔案()
  3. Dim txt_name, i, x, oldname
  4. oldname = ThisWorkbook.Name
  5. Range("A1").Select
  6. x = InputBox("檔案數量")
  7. For i = 1 To x
  8.   txt_name = i & ".txt"
  9.     Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & txt_name, Origin:=950 _
  10.         , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
  11.         ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
  12.         , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
  13.         Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
  14.         Array(10, 1)), TrailingMinusNumbers:=True
  15.         Windows(txt_name).Activate
  16.         '******這段程式註解掉(不用了)
  17.         'If i = 1 Then
  18.         'Range("A1").Select
  19.         'Else
  20.         ' Range("A2").Select
  21.         'End If
  22.         '***********************
  23.         Range("A" & i).Select
  24.         '當=1 為  Range("A1").Select
  25.         '當=2 為  Range("A2").Select   是這樣嗎? ..............
  26.         
  27.     Next
  28. End Sub
複製代碼

作者: koplkjnm    時間: 2013-5-14 00:51

回復 8# GBKEE
GBKEE大 你好
下面紅字的地方應該沒有錯
可是這樣的話感覺上它還是會搜尋檔案名為1.txt, 2.txt,...作開啟的動作
沒辦法開啟檔案名為y(1), y(2),...
如果我將它改成像藍字的部分可以嗎?
或者是哪裡要再補充或修改的

麻煩你了 感謝

Option Explicit
Sub 文字檔案()
Dim txt_name, i, x, oldname
Dim y As  Variant
oldname = ThisWorkbook.Name
Range("A1").Select
x = InputBox("檔案數量")
For i = 1 To x
  txt_name = i & ".txt" '<--改成   txt_name =y( i) & ".txt"

    Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & txt_name, Origin:=950 _
        , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
        Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
        Array(10, 1)), TrailingMinusNumbers:=True
        Windows(txt_name).Activate

       Range("A" & i).Select
        '當=1 為  Range("A1").Select
        '當=2 為  Range("A2").Select   是這樣嗎? ..............

        
    Next
End Sub
作者: GBKEE    時間: 2013-5-14 07:55

回復 9# koplkjnm
如果我將它改成像藍字的部分可以嗎?
程式試了有問題嗎?
作者: koplkjnm    時間: 2013-5-14 21:26

回復 10# GBKEE
程式試了之後會出現型態不符合的警告
作者: GBKEE    時間: 2013-5-15 06:22

回復 11# koplkjnm
附檔看看
作者: koplkjnm    時間: 2013-5-16 22:03

回復 12# GBKEE
如附件
麻煩你了 謝謝
作者: Hsieh    時間: 2013-5-16 23:38

回復 13# koplkjnm

檔名是字串型態
txt_name = "s (" & i & ").txt"




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