ここから本文です

EXCEL詳しい方お願いいたします! 特定のフォルダに含まれるエクセルファイル全...

pur********さん

2019/6/2812:31:41

EXCEL詳しい方お願いいたします!

特定のフォルダに含まれるエクセルファイル全てに、
同じマクロを適用させたいのですが、下記ではうまくいきませんでした。

間違えてることありましたら、ご指摘いただきたいです。
--
Sub DirTest3()
Dim mypath As String, mybook As String, bookpth As String
mypath = "ファイルパス名"
mybook = Dir(mypath & "\*.xls")
Do While mybook <> ""
bookpth = mypath & "\" & mybook
MsgBox bookpth

'列削除
Columns("A").Delete
Columns("G").Delete
Columns("H").Delete
Columns("I").Delete
Columns("J").Delete
Columns("K").Delete
Columns("L").Delete
Columns("N").Delete
Columns("P").Delete

'空白削除
Range("A1:B100").Replace What:=" ", Replacement:=""
Range("A1:B100").Replace What:=" ", Replacement:=""

mybook = Dir
Loop
End Sub
--

よろしくお願いいたします。

閲覧数:
22
回答数:
3

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2019/6/2821:28:59

ブックを開いていない
シートを意識していない
のが、上手く行かない原因でしょうね。

それから、列削除の順番は上手くないのじゃないですかね?


Sub 一例です()
Dim mypath As String, mybook As String
mypath = "C:\HogeHoge\Hoge1\"
mybook = Dir(mypath & "*.xls")
Do While mybook <> ""
With Workbooks.Open(mypath & mybook)
'列削除
With Worksheets(1)
.Columns("A").Delete
.Columns("G").Delete
.Columns("H").Delete
.Columns("I").Delete
.Columns("J").Delete
.Columns("K").Delete
.Columns("L").Delete
.Columns("N").Delete
.Columns("P").Delete

'空白削除
.Range("A1:B100").Replace What:=" ", Replacement:=""
.Range("A1:B100").Replace What:=" ", Replacement:=""
End With
.Close True
End With
mybook = Dir
Loop
End Sub

  • tra********さん

    2019/6/2821:32:07

    列削除は、きっと↓のようにしたいのじゃないですか?

    .Columns("A").Delete
    .Columns("G").Delete
    .Columns("H").Delete
    .Columns("I").Delete
    .Columns("J").Delete
    .Columns("K").Delete
    .Columns("L").Delete
    .Columns("N").Delete
    .Columns("P").Delete



    .Range("A:A,G:G,H:H,I:L,N:N,P:P").Delete

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

tok********さん

2019/6/2813:11:06

どううまくいかないのでしょう?
とりあえず

Columns("A").Delete

した時点で、B列がA列に、C列がB列に...とスライドされますよね。
次にある、

Columns("G").Delete

は元H列の事になってしまいますが、それは意図した処理ですか?
列削除は左から、行削除は下からです。

mybook = Dir

mybook = Dir()

だと思うのですが。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

まーさんさん

2019/6/2819:57:28

MsgBox bookpthで何を見つけたのか確認できますよね?
ファイルは全て見つけていますか?
多分、見つけていないと思います。
mybook = Dirは
mybook = Dir()ですね。

基本的な間違えは見つけたファイルを開いていない事です。
MsgBox bookpthの下に
Workbooks.Open bookpth
を入れる必要があると思います。

おそらく今の状態はコードを記述したブックのアクティブシート上で
削除処理をしている形かと思われます。

あとはファイルが開きっぱなしになるので、
必要があればファイルを閉じる処理をLoopの後に
入れるといいと思います。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる