人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です
下記マクロを実行するとエラー400が表示されます
以前は出なかったのです他のPCでは出ません
原因と対処の仕方を教えてください
windows7でExcel 2010です

マクロは添付画像を参照願います

1337243582
●拡大する

●質問者: inosisi
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●20ポイント
Sub main()
Dim p As String
'対象フォルダを指定してください。
'このフォルダに この実行用のブックは 入れないでください。
p = "C:\test\"

'処理対象となる拡張子を指定して 呼び出します。
Call jikkou(p, "csv")

End Sub


Sub jikkou(p As String, s As String)

Dim bk As Workbook
Dim gg As Long
Application.DisplayAlerts = False

 
f = Dir(p & "*." & s, vbNormal)

Do While f <> ""
 Set w = Workbooks.Open(Filename:=p & f, UpdateLinks:=False, ReadOnly:=False)
  '処理対象は 1番目のシートのみ。

 w.Sheets(1).Select
 
 With w.Sheets(1)
 .Cells.Select
 Selection.Sort Key1:=.Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
 :=xlPinYin, DataOption1:=xlSortNormal
 
 If .Range("A2") = "" Then
 fa = 1
 Else
 fa = .Range("A1").End(xlDown).Row
 End If
 
 If .Range("B2") = "" Then
 fb = 1
 Else
 fb = .Range("B1").End(xlDown).Row + 1
 End If
 .Rows(fb & ":" & fa).Delete Shift:=xlUp
 .Columns("B:B").ClearContents

 End With
 
 w.Save
 w.Close
 f = Dir
Loop

Application.DisplayAlerts = True

End Sub


すみませんが原因は 不明です。
可能性がありそうなのは、セルをselectするときに このselectで エラーに
なってるのでは ないのかというところです。
なので、とりあえず シートを選択するようにしてみました。

こういうのは 少しずつ 修正して 確認してもらうしかないですね。


inosisiさんのコメント
ありがとうございます 実行してみますと RangeクラスのSortメソッドが失敗しました のメッセージがでてエラーになりました よろしくおねがいします

2 ● きゃづみぃ
●80ポイント ベストアンサー
Sub main()
Dim p As String
'対象フォルダを指定してください。
'このフォルダに この実行用のブックは 入れないでください。
p = "C:\test\"

'処理対象となる拡張子を指定して 呼び出します。
Call jikkou(p, "csv")

End Sub


Sub jikkou(p As String, s As String)

Dim bk As Workbook
Dim gg As Long
Application.DisplayAlerts = False

 
f = Dir(p & "*." & s, vbNormal)

Do While f <> ""
 Set w = Workbooks.Open(Filename:=p & f, UpdateLinks:=False, ReadOnly:=False)
  '処理対象は 1番目のシートのみ。

 With w.Sheets(1)
 .Range("A:B").Sort Key1:=.Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
 :=xlPinYin, DataOption1:=xlSortNormal
 
 If .Range("A2") = "" Then
 fa = 1
 Else
 fa = .Range("A1").End(xlDown).Row
 End If
 
 If .Range("B2") = "" Then
 fb = 1
 Else
 fb = .Range("B1").End(xlDown).Row + 1
 End If
 .Rows(fb & ":" & fa).Delete Shift:=xlUp
 .Columns("B:B").ClearContents

 End With
 
 w.Save
 w.Close
 f = Dir
Loop

Application.DisplayAlerts = True

End Sub


元のプログラムから A列とB列のみソートさせるように変更してみました。


inosisiさんのコメント
ありがとうございます 上手くいきました 「A列とB列のみソートさせるように変更」で正解でした 早くこちらから条件を出せばよかったです ありがとうございました
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ