Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5134 / 13644 ツリー ←次へ | 前へ→

【52381】複数のセルに入力したファイル名を取得して繰り返し処理を行いたい moto 07/11/11(日) 22:00 質問[未読]
【52383】Re:複数のセルに入力したファイル名を取得... かみちゃん 07/11/11(日) 22:10 発言[未読]
【52400】Re:複数のセルに入力したファイル名を取得... moto 07/11/13(火) 0:30 質問[未読]
【52462】Re:複数のセルに入力したファイル名を取得... moto 07/11/15(木) 1:21 お礼[未読]

【52381】複数のセルに入力したファイル名を取得し...
質問  moto  - 07/11/11(日) 22:00 -

引用なし
パスワード
   こんばんは。

下記のようなシートにファイル名を入力して、マクロをファイル名毎に
実行したいのですが、まず複数のセルに入力したファイル名を取得する
ことができません。どのようにすればいいでしょうか。
ご指導の程よろしくお願い致します。

 A    B    C    D  ・・・・
1
2
3        ファイルA
4        ファイルB
5        ファイルC




また、取得したファイル毎にマクロを実行するには、どのようにすれば
いいのでしょうか。Loop処理でファイルを1つずつ取得してファイルの最終行
まで処理をしたいのですが。

マクロは下記のスレでご指導頂いた内容になります。
何卒宜しくお願い致します。

※【52163】OpenAsTextStreamで、テキストファイルの特定の文字列に文字を追加したい 

【52383】Re:複数のセルに入力したファイル名を取...
発言  かみちゃん  - 07/11/11(日) 22:10 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 複数のセルに入力したファイル名を取得する
> 取得したファイル毎にマクロを実行するには

この部分だけであれば、以下のような感じでできると思います。

Sub Sample()
 Dim c As Range
 
 For Each c In Range("C3:C5")
  MsgBox c.Value
  Call Macro1
 Next
End Sub

Sub Macro1()
 MsgBox "Macro1を実行します"
End Sub

これに前回教えてもらったコードを組み込んでいけばいいのではないでしょうか?

【52400】Re:複数のセルに入力したファイル名を取...
質問  moto  - 07/11/13(火) 0:30 -

引用なし
パスワード
   ▼かみちゃん さん:

こんばんは。
早速、ご返信頂き有難うございます。

お教え頂いた内容で試してみて、ファイル名の取得はできたのですが、
ファイル名毎にマクロを実行することが上手くいきません。

下記のコードで試しているのですが、変数に取得したファイル名を順番に
代入するとこが、上手くいきません。また、ファイルの数は毎回異なるので
、入力されたファイル名の最終行を取得して、B4から順番に処理したいのですが
、どのようにすればいいでしょうか。
宜しくお願い致します。

---------------------------------------------------------------------
Private Sub CommandButton1_Click()


Dim endF As Range
Dim c As Range

Worksheets("P_付加").Acitibe
endF = Range("B4", Range("B4").End(xlDown)).Select

For Each c In Range("B4:endF")

MsgBox c.Value
Call P_huka

Next


End Sub

Sub P_huka()

  Dim fso, tempfile, Filename
  Dim fText As String
  Filename = F1

  Open pasF For Input As #1
  Open pas1 & "\temp.txt" For Output As #2

  Do While Not EOF(1)
    Line Input #1, fText
    tText = Replace(fText, Chr(34) & " (", "P" & Chr(34) & " (")
    Print #2, tText

  Loop

  Close #1
  Close #2

  Open pas1 & "\temp.txt" For Input As #2
  Open pas1 & "\temp1.txt" For Output As #3
  Do While Not EOF(2)
    Line Input #2, fText
    tText = Replace(fText, Chr(34) & " IS", "P" & Chr(34) & " IS")
    Print #3, tText

  Loop

  Close #2
  Close #3

  Set fso = CreateObject("Scripting.FileSystemObject")
  tempfile = fso.GetTempName

  fso.DeleteFile (pasF)
  fso.DeleteFile (pas1 & "\temp.txt")

  Set tempfile = fso.GetFile(pas1 & "\temp1.txt")
  tempfile.Name = F1

End Sub

Function pasF() As String 'フルパス


Dim pas, F

pas = Range("B3")
F = Range("B4")
pasF = pas & "\" & F


End Function

Function F1() As String

F1 = Range("B4")

End Function

Function pas1() As String

pas1 = Range("B3")

End Function

-----------------------------------------------------------------

上記を実行すると、「オブジェクトはこのプロパティ、またはメソッドを
サポートしていません」とエラーが表示されてしまいます。

【52462】Re:複数のセルに入力したファイル名を取...
お礼  moto  - 07/11/15(木) 1:21 -

引用なし
パスワード
   ▼かみちゃん さん:

こんばんは。
標題の件につきまして、昨日、ある程度時間が朝から取れたので、
じっくり試したところ、かみちゃんさんにアドバイス頂いた内容で
上手く処理ができるようになりました。

有難うございました。

5134 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free