Excel VBA質問箱 IV

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

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


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

【31068】テキストの一部を自動で置換するには にしもり 05/11/11(金) 10:37 質問[未読]
【31073】Re:テキストの一部を自動で置換するには Kein 05/11/11(金) 12:38 回答[未読]
【31084】Re:テキストの一部を自動で置換するには にしもり 05/11/11(金) 15:14 質問[未読]
【31088】Re:テキストの一部を自動で置換するには Kein 05/11/11(金) 15:33 発言[未読]
【31091】Re:テキストの一部を自動で置換するには にしもり 05/11/11(金) 15:41 お礼[未読]
【31095】Re:テキストの一部を自動で置換するには にしもり 05/11/11(金) 16:14 質問[未読]
【31097】Re:テキストの一部を自動で置換するには Kein 05/11/11(金) 16:18 発言[未読]
【31098】Re:テキストの一部を自動で置換するには にしもり 05/11/11(金) 16:21 お礼[未読]
【31113】Re:テキストの一部を自動で置換するには にしもり 05/11/11(金) 17:46 質問[未読]
【31117】Re:テキストの一部を自動で置換するには Kein 05/11/11(金) 20:36 発言[未読]
【31165】Re:テキストの一部を自動で置換するには にしもり 05/11/13(日) 1:02 お礼[未読]

【31068】テキストの一部を自動で置換するには
質問  にしもり  - 05/11/11(金) 10:37 -

引用なし
パスワード
   こんにちは。
下記のようなマクロを組みました。
注意事項.xlsのシート「諸注意」を東データ(7月〜10月).xlsと西データ(7月〜10月).xlsに複製しています。
実際にはもっと多数のファイルがあります。
そして毎月、ファイル名の一部が7月〜11月、7月〜12月などと変化します。
その際、手で置換すると間違える恐れがあります。
そこで質問です。マクロのテキストの一部をマクロで置換できますか?
具体的には、下記テキスト中の7月〜10月を7月〜11月にマクロで置換できますか?
どなたかよろしくお願いします。

Sub Macro666()

  Dim Wb1 As Workbook
  Dim Wb2 As Workbook
  Application.ScreenUpdating = False
  Set Wb1 = Workbooks.Open("C:\支店\注意事項.xls")

  
  Set Wb2 = Workbooks.Open("C:\支店\東データ(7月〜10月).xls")
  Wb1.Sheets("諸注意").Copy Before:=Wb2.Sheets("東実績")
  Wb2.Close Savechanges:=True
  Set Wb2 = Nothing

  Set Wb2 = Workbooks.Open("C:\支店\西データ(7月〜10月).xls")
  Wb1.Sheets("諸注意").Copy Before:=Wb2.Sheets("西実績")
  Wb2.Close Savechanges:=True
  Set Wb2 = Nothing
       
  Wb1.Close Savechanges:=False
  Wb2.Close Savechanges:=True
  Application.ScreenUpdating = True
  Set Wb1 = Nothing
  Set Wb2 = Nothing
 
End Sub

【31073】Re:テキストの一部を自動で置換するには
回答  Kein  - 05/11/11(金) 12:38 -

引用なし
パスワード
   マクロでマクロのコードを書き換えるという処理は、ウィルスの動作と全く変わりが
ありませんから、出来ることは出来てもお答えできません。
なので最も単純で簡単な方法を提示してみます。ユーザーからInputBoxでファイル名
の一部を取得する。というものです。

Sub Macro666()
  Dim Wb1 As Workbook, Wb2 As Workbook
  Dim MyF As String, GetF1 As String, GetF2 As String

  Do
    MyF = InputBox("開くブック名に含まれる月の名前を" & vbLf & _
    "「○月〜×月」の形で入力して下さい")
    If MyF = "" Then Exit Sub
    GetF1 = Dir("C:\支店\東データ(" & MyF & ").xls")
    GetF2 = Dir("C:\支店\西データ(" & MyF & ").xls")
    If GetF1 = "" Or GetF2 = "" Then
     MsgBox "その名前のファイルは見つかりません", 48
    End If
  Loop While GetF1 = "" Or GetF2 = ""
  Application.ScreenUpdating = False
  Set Wb1 = Workbooks.Open("C:\支店\注意事項.xls")  
  Set Wb2 = Workbooks.Open("C:\支店\" & GetF1)
  Wb1.Sheets("諸注意").Copy Before:=Wb2.Sheets("東実績")
  Wb2.Close Savechanges:=True: Set Wb2 = Nothing
  Set Wb2 = Workbooks.Open("C:\支店\" & GetF2)
  Wb1.Sheets("諸注意").Copy Before:=Wb2.Sheets("西実績")
  Wb2.Close Savechanges:=True: Set Wb2 = Nothing
  Wb1.Close Savechanges:=False: Set Wb1 = Nothing
  Application.ScreenUpdating = True
End Sub

【31084】Re:テキストの一部を自動で置換するには
質問  にしもり  - 05/11/11(金) 15:14 -

引用なし
パスワード
   ▼Kein さん:
どうもありがとうございます。
やってみます。

ひとつ質問があります。
vbLf はバリアント型の変数と存じますが、それを
"開くブック名に含まれる月の名前を" と "「○月〜×月」の形で入力して下さい"の間に挟んでいるのは何のためでしょうか?

【31088】Re:テキストの一部を自動で置換するには
発言  Kein  - 05/11/11(金) 15:33 -

引用なし
パスワード
   vbLf は変数ではありません。それは改行文字"ラインフィード"を表す定数です。
ASCIIコードなら 10 に相当しますから Chr(10) としても同じ意味になります。
あと、そこで改行を入れているのは、単純にボックスに表示する文字列が
長くなってしまうのを避けただけです。

【31091】Re:テキストの一部を自動で置換するには
お礼  にしもり  - 05/11/11(金) 15:41 -

引用なし
パスワード
   ▼Kein さん:
vbLfという変数にInputboxにいれられたvalueを取得し、
MyFに代入しているのかとおもいました。

大変参考になりました。
どうもありがとうございました。

【31095】Re:テキストの一部を自動で置換するには
質問  にしもり  - 05/11/11(金) 16:14 -

引用なし
パスワード
   ▼Kein さん:

もうひとつ質問です。
MsgBox "その名前のファイルは見つかりません", 48
の48はどういう意味でしょうか?

【31097】Re:テキストの一部を自動で置換するには
発言  Kein  - 05/11/11(金) 16:18 -

引用なし
パスワード
   MsgBox に出すアイコンの種類です。MsgBox関数のヘルプに

  定数    値   内容
vbExclamation 48 注意メッセージ アイコンを表示します。

と、あります。ご自分でもヘルプを調べるようにして下さい。

【31098】Re:テキストの一部を自動で置換するには
お礼  にしもり  - 05/11/11(金) 16:21 -

引用なし
パスワード
   ▼Kein さん:
ありがとうございました。
調べる前に投稿してすみませんでした。

【31113】Re:テキストの一部を自動で置換するには
質問  にしもり  - 05/11/11(金) 17:46 -

引用なし
パスワード
   ▼Kein さん:

わたしの質問がいけなかったのですが、
ファイル名は、東データ(7月〜10月)東北.xlsのようになっています。
そこで一部分を次のようにしました。
    GetF1 = Dir("C:\支店\東データ(" & MyF & ")東北.xls")
    GetF2 = Dir("C:\支店\西データ(" & MyF & ")大阪.xls")

ところが、とたんにできなくなりました。
どうすればよろしいでしょうか?

【31117】Re:テキストの一部を自動で置換するには
発言  Kein  - 05/11/11(金) 20:36 -

引用なし
パスワード
   >とたんにできなくなりました。
どんなふうになったのでしょーか ?
見たところ
>GetF1 = Dir("C:\支店\東データ(" & MyF & ")東北.xls")
>GetF2 = Dir("C:\支店\西データ(" & MyF & ")大阪.xls")
というコードには問題がないように思えますが、余分なスペースとか混じって
いませんか ?

【31165】Re:テキストの一部を自動で置換するには
お礼  にしもり  - 05/11/13(日) 1:02 -

引用なし
パスワード
   ▼Kein さん:
何度かやったらできました。
全角であるべきカッコが、半角だったのだとおもいます。
大変お騒がせ致しました。

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