- ベストアンサー
FileSearchがExcel2010でできない
- Excel2003ではできたFileSearchがExcel2010ではエラーになる問題について質問です。
- Excel2010でExcel2003と同じような動作をする方法を知りたいです。
- Userform1のチェックボックスを選択するとファイルが検索される仕様になっていますが、Excel2010で使用する方法を教えてください。
- みんなの回答 (6)
- 専門家の回答
関連するQ&A
- エクセルVBAがエラーが出て作動しません。
以下のVBAコードを作成してみました。ところが、"Sub Sample1()"の部分が黄色く塗りつぶされ、"get folder"が選択された状態で”Subまたはfunctionが定義されていません”というエラーがでます。こちらですがどこを直せばうまくいくかご教示いただけないでしょうか?因みにファイルを探すコードを試している過程でたまたまネットでコードを見つけたので試ている段階です。 ーーーーーーーーーーーーーーーーーーーー Sub Sample1() Dim f As Variant, buf As String, cnt As Long, FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") With Application.FileSearch .NewSearch buf = InputBox("ZGBL_DLV_SOM_RP0442_SLS_ORD (39).xlsx") If buf = "" Or buf = "False" Then Exit Sub .Filename = buf buf = GetFolder("C:\Users\ytsuruok\Desktop\test") If buf = "" Then Exit Sub .LookIn = buf .SearchSubFolders = True ''サブフォルダも検索する If .Execute() > 0 Then For Each f In .FoundFiles cnt = cnt + 1 Cells(cnt, 1) = f ''パス+ファイル名 Cells(cnt, 2) = FSO.GetFile(f).Name ''ファイル名 Cells(cnt, 3) = FSO.GetFile(f).ParentFolder ''パス Next f Else MsgBox "見つかりませんでした" End If End With Set FSO = Nothing End Sub ーーーーーーーーーーーーーーーー
- 締切済み
- Excel(エクセル)
- FileSearchがエクセル2007で使えなくなって困っています。
2003では普通に使えたのですが、2007で使うためにはどのように変えればいいのでしょうか?途方にくれているのでVBAに詳しい方ご教授ください。処理文で回答頂けるとうれしいです。 Public Sub p_更新() For i = 1 To 100: gwKillFL(i) = "": Next i With Application.FileSearch .LookIn = gAAFLD .SearchSubFolders = True .Filename = "*T" & Format(gBB, "00") & ".txt" .FileType = msoFileTypeAllFiles If .Execute(SortBy:=msoSortByFileName, _ SortOrder:=msoSortOrderAscending) > 0 Then For i = 1 To .FoundFiles.Count gwKillFL(i) = .FoundFiles(i) Call p_ReadData(.FoundFiles(i)) Next i For i = 1 To .FoundFiles.Count If gwKillFL(i) <> "" Then Kill gwKillFL(i) End If Next i If gMenu1 > 0 Then Range("A2").Select MsgBox "更新", vbOKOnly, "確認" End If Else If gMenu1 > 0 Then MsgBox "更新ファイルなし。", vbOKOnly, "確認" End If End If End With End Sub
- ベストアンサー
- Visual Basic
- macのofficeのVBAでファイルを検索する
現在iMac 1.9GHz(isight内蔵) PowerPC G5 でoffice 2004 for macを使用しています。 以下のような複数のフォルダを含む任意のフォルダ(AA)内から任意のファイル名(aa or dd)のファイルが存在するかどうかを検索し、 ファイルが存在すればファイル名を、無ければ無いことを返すプログラムを作成しようと考えています。 AA---BB---aa.xls | --CC---bb.xls | | | --cc.xls ---------dd.xls そのために以下のプログラムを用意しました。(他のサイトのマル写しですが) ーーーーー Sub Sample() Dim f, buf As String, cnt As Long, FSO Set FSO = CreateObject("Scripting.FileSystemObject") With Application.FileSearch .NewSearch buf = InputBox("検索するファイル名を指定してください") If buf = "" Or buf = "False" Then Exit Sub .Filename = buf buf = GetFolder("検索を開始するフォルダを指定してください") If buf = "" Then Exit Sub .LookIn = buf .SearchSubFolders = True ''サブフォルダも検索する If .Execute() > 0 Then For Each f In .FoundFiles cnt = cnt + 1 Cells(cnt, 1) = f ''パス+ファイル名 Cells(cnt, 2) = FSO.GetFile(f).Name ''ファイル名 Cells(cnt, 3) = FSO.GetFile(f).ParentFolder ''パス Next f Else MsgBox "見つかりませんでした" End If End With Set FSO = Nothing End Sub Function GetFolder(msg As String) Dim Shell, myPath Set Shell = CreateObject("Shell.Application") Set myPath = Shell.BrowseForFolder(&O0, msg, &H1 + &H10) If Not myPath Is Nothing Then GetFolder = myPath.Items.Item.Path Else GetFolder = "" End If Set Shell = Nothing Set myPath = Nothing End Function ーーーーー このプログラムをexcel2004上のマクロとして実行すると、 実行時エラー’429’: ActiveX コンポーネントはオブジェクトを作成できません。 とエラーが表示されます。 そこで、デバッグとして一行ずつステップインさせると、二行目の Set FSO = CreateObject("Scripting.FileSystemObject") の部分でエラーとなり、動作が停止します。 何故この様なエラーが発生するのか判りません。 このエラーが発生する理由と解決策をお教えいただきたいと思います。 宜しくお願いいたします。
- ベストアンサー
- Mac
- 【Excelマクロ】もっと頭の良い書き方って無いかな?
5行空白列があったらそこで処理を終わりたいんですが、もっといい書き方はないでしょうか? 下記が私の考えた頭の悪いやり方です。 Sub macro() Dim i As Integer For i = 1 To 1000 If Cells(i, 1) = "" Then If Cells(i + 1, 1) = "" Then If Cells(i + 2, 1) = "" Then If Cells(i + 3, 1) = "" Then If Cells(i + 4, 1) = "" Then If Cells(i + 5, 1) = "" Then MsgBox (i - 1 & "行目で終わりです") Exit For End If End If End If End If End If End If Next End Sub
- ベストアンサー
- オフィス系ソフト
- FileSearchが使えなくなり困ってます。
仕事場で前任者が下記のようなマクロを組んでいたのですが、「FileSearch」が使用できなくなり、なおさなくてはいけなくて困ってます。 指定の保存先から、アクティブセルと同じ保存名のファイル(エクセル)を開く内容なのですが、お分かりになるかた知恵を拝借願いますでしょうか? 素人なので、できれば専門用語じゃない回答をいただけるとありがたいです。 よろしくお願い致します。 Dim p As Range For Each p In Selection If p = "" Then Exit Sub End If With Application.FileSearch .Filename = p .LookIn = "保存先" .SearchSubFolders = True .LastModified = msoLastModifiedAnyTime .FileType = msoFileTypeExcelWorkbooks .SearchSubFolders = xt .Execute For Each f In .FoundFiles Workbooks.Open f Next f End With Next p End Sub
- ベストアンサー
- Visual Basic
- Excel VBAで検索(Win2000 Excel2000)
現在、下記のようなコードを書いています。データテーブルの縦と横の検索値を探してその列数と行数を返したいのですが、下記の Sub検索1 と Sub検索2 を1つのSubで実行させるにはどうしたらよいのでしょうか?よろしくお願い致します。 ----------------------------------------- Sub 検索1() Worksheets("Data").Activate Dim x As Integer For x = 3 To 22 If Cells(2, x).Value >= 12 Then MsgBox x Exit Sub End If Next MsgBox "見つかりません" End Sub --------------------------------------------- Sub 検索2() Worksheets("Data").Activate Dim i As Integer For i = 4 To 42 If Cells(i, 2).Value = "A" Then MsgBox i Exit Sub End If Next MsgBox "見つかりません" End Sub
- ベストアンサー
- オフィス系ソフト
- 複数検索方法
マクロ(Excel)にて検索できるものを作成しています。 例えばネットワークドライブにて割り当てたH22(Zドライブ)~H1(Gドライブ)というフォルダがあり、UserForm1にてH22~H1のチェックボックスを作成しています。ここでH22とH21のチェックボックスにチェックを入れキーワードを入力し検索すると、H22とH21のフォルダ内になるキーワードと同じファイル名をフォルダ名と同じのシートに検索結果を表示したいです。 しかし、下記のようにすると、1つずつの検索は可能なのですが、複数チェック(H22とH21)入れると H22を検索し終わった後、もう一度キーワードを入力しないとH21を検索してくれません。 複数チェックし1回のキーワード入力で検索するにはどうすれば良いですか? 説明が下手ですが、よろしくお願いします。 Private Sub CommandButton1_Click() If CheckBox1 = True Then Sheets("H22").Visible = True Sheets("H22").Select With Application.FileSearch .NewSearch .LookIn = "Z:\" buf = InputBox("検索したいファイル名を入力してください" & vbCrLf & "ただし、複数キーワード検索はできません" & vbCrLf & "キーワード入力後、「OK」ボタンを選択", "キーワード入力") If buf = "" Or buf = "False" Then Exit Sub .Filename = buf .SearchSubFolders = True If .Execute() > -5 Then MsgBox .FoundFiles.Count - 5 & " 個のファイルが見つかりました", vbOKOnly, "検索結果" For 検索結果 = 6 To .FoundFiles.Count Cells(検索結果, 3) = .FoundFiles(検索結果) Next 検索結果 Else MsgBox "見つかりませんでした" End If End With Set FSO = Nothing For i = 6 To 検索結果 Step 1 Cells(i, 3).Select With ActiveSheet .Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 3).Value End With Next i ElseIf CheckBox2 = True Then Sheets("H21").Visible = True Sheets("H21").Select With Application.FileSearch .NewSearch .LookIn = "Y:\" buf = InputBox("検索したいファイル名を入力してください" & vbCrLf & "ただし、複数キーワード検索はできません" & vbCrLf & "キーワード入力後、「OK」ボタンを選択", "キーワード入力") If buf = "" Or buf = "False" Then Exit Sub .Filename = buf .SearchSubFolders = True If .Execute() > -5 Then MsgBox .FoundFiles.Count - 5 & " 個のファイルが見つかりました", vbOKOnly, "検索結果" For 検索結果 = 6 To .FoundFiles.Count Cells(検索結果, 3) = .FoundFiles(検索結果) Next 検索結果 Else MsgBox "見つかりませんでした" End If End With Set FSO = Nothing For i = 6 To 検索結果 Step 1 Cells(i, 3).Select With ActiveSheet .Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 3).Value End With Next i ・ ・ ・ End If End Sub
- ベストアンサー
- Visual Basic
- ●Excel VBA 配列●教えて下さい
a~tの文字が順々に文字を追っていくプログラムにしたいと思い 配列を使用したのですが…プログラムが稼動しません、 下記のプログラムでは何が足りないのでしょうか わかる方いたら教えて下さい; 配列の使い方についてアドバイスがあれば そちらも教えていただきたいです…。 '――ここから―― Dim time1 As Integer, time2 As Integer, n As String Dim X As Integer, Y As Integer Dim yoko As String, tate As String Dim suuji (19) As String Sub 描画() Cells(X, Y).Value = suuji End Sub Sub 削除() Cells(X, Y).Value = "" End Sub Sub 待機() For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next End Sub Sub 座標移動() If yoko = "右" Then Y = Y + 1 Else Y = Y - 1 End If If Y = 30 Then yoko = "左" ElseIf Y = 1 Then yoko = "右" End If If tate = "上" Then X = X + 1 Else X = X - 1 End If If X = 20 Then tate = "下" ElseIf X = 1 Then tate = "上" End If End Sub Sub main() suuji (0) = a suuji (1) = b suuji (2) = c suuji (3) = d suuji (4) = e suuji (5) = f suuji (6) = g suuji (7) = h suuji (8) = i suuji (9) = j suuji (10) = k suuji (11) = l suuji (12) = m suuji (13) = n suuji (14) = o suuji (15) = p suuji (16) = q suuji (17) = r suuji (18) = s suuji (19) = t For n = 0 To 19 Cells(X,Y).Value = suuji (n) Next X = 1 Y = 1 yoko = "右" tate = "上" Do 描画 待機 削除 待機 座標移動 Loop End Sub '――ここまでです―― 何度も同じような質問をさせてもらってすみません;
- ベストアンサー
- その他(プログラミング・開発)
- ■Excel VBA グローバルな書き方■
Sub 跳ね返る() Dim time1 As Integer, time As Integer Dim X As Integer, Y As Integer Dim hyouji As String, yoko As String, tate As String hyouji = "●" X = 1 Y = 1 yoko = "右" tate = "上" Do Cells(X, Y).Value = hyouji '★ For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next Cells(X, Y).Value = hyouji For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next '★ If yoko = "右" Then Y = Y + 1 Else Y = Y - 1 End If If Y = 30 Then yoko = "左" ElseIf Y = 1 Then yoko = "右" End If If tate = "上" Then X = X + 1 Else X = X - 1 End If If X = 20 Then tate = "下" ElseIf X = 1 Then tate = "上" End If Loop End Sub ************************************ 上記のプログラムを Dim a() EndSub Dim b() EndSub Dim c() endSub Sub main() a b c EndSub のような、mainを動かせばabcも動く グローバルな(ローカルでもいいのですが) プログラムにするにはどうしたらいいですか? ★印から★印までの間の動作が同じような動作で 二つあるので、それを一つにまとめ 尚且つ、表示と時間稼ぎと表示削除の 3つの動作を分けた形にしたいです。 質問が下手で申し訳ありません…;;
- 締切済み
- その他(プログラミング・開発)
- Excel2010 VBA 条件色付け
Sub sample() Dim r As Range For Each r In Range("q6:q30") If myIsNumeric(r) Then r.Offset(0, 1).Value = "数字" Else r.Offset(0, 1).Value = "文字" End If Next End Sub Function myIsNumeric(Target As Range) Dim r As Range Dim buf, tmp Dim flg As Boolean Dim i As Integer buf = Target For i = 1 To Len(buf) tmp = Mid(buf, i, 1) If IsNumeric(tmp) Then flg = True Exit For End If Next myIsNumeric = flg End Function を数字が入ってたら塗りつぶさないで、 数字が入ってなかったら塗りつぶすように直したいです。 あああ→塗る あああ1-1→塗らない 住所→塗る 住所12→塗らない
- ベストアンサー
- Excel(エクセル)
お礼
ありがとうございます。 教えて頂いた通りにしたらきちんと検索し動作しました。 何度も回答していただきありがとうございました。