• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA ExecuteExcel4Macroについて)

Excel VBA ExecuteExcel4Macroについて

rivoisuの回答

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

最後の方の .range(Cells(3, fc),cells(6, fc)) = e は e=.range(Cells(3, fc),cells(6, fc)) の間違いでしょうか? eをvariantにしてはいかがですか ExecuteExcel4Macroをなぜ使わなければならないのかよく解りません >セルA3以下が読み込まれます。 とあるので単なる転記(代入)でいいと思いますが。

関連するQ&A

  • Application.ExecuteExcel4Macroなに?

    No.373903を拝見しまして、閉じたままのブックを参照できるらしいので使いたいのですが、ブックが複数ある場合、[ ]内はどのように書けば良いのでしょう? 例) Cells(1, 1) = Application.ExecuteExcel4Macro _ ("'C:\My Documents\[Book2.xls]Sheet1'!R1C1") Book2・sheet1の部分が可変。 また、 Application.ExecuteExcel4Macro("get.document(50)") や Application.ExecuteExcel4Macro ("Halt(True)") 等の使い方もあるようですが、どなたかわかりやすく教えて頂けませんか?

  • VBA(ExecuteExcel4Macro)を用いた検索ツール

    VBA(ExecuteExcel4Macro)を用いた検索ツール はじめまして。 当方Excel2007、winXPでの環境下でVBAを用いた検索ツールを作成しています。 検索対象のxlsファイルには1行目に郵便番号、氏名、住所の項目タイトル、2行目以降にデータが入力されています。 【現在の仕様】 検索対象のxlsファイルを選択→検索したい氏名(3つまで)を入力すると氏名列を順に検索し、該当した氏名のみをシートへ出力 【作りたい仕様】 検索対象のxlsファイルを選択→検索したい氏名(3つまで)を入力すると氏名列を順に検索し、該当した氏名の入力された行をシートへ出力 現在のソースは下記になりますが、どのように書き変えればいいのかが分からず困っています。 教えていただけたらと思います。よろしくお願いいたします。 ------------------------- (略) ''対象ブックを選択します OpenFileName = Application.GetOpenFilename("Microsoft Excel ブック,*.xls") If OpenFileName = "False" Then Exit Sub OpenFileName = Replace(OpenFileName, Dir(OpenFileName), "[" & Dir(OpenFileName) & "]") SheetName = InputBox("読み込むワークシート名を入力してください。") If SheetName = "" Then Exit Sub Target = "'" & OpenFileName & SheetName & "'!" On Error Resume Next buf = ExecuteExcel4Macro(Target & "R1C1") If Err <> 0 Then MsgBox "ワークシート [ " & SheetName & " ] を読めませんでした。", vbExclamation Exit Sub End If On Error GoTo 0 key1 = InputBox("検索したい氏名1を入力してください。") If key1 = "" Then Exit Sub End If key2 = InputBox("検索したい氏名2を入力してください。") If key2 = "" Then Else key3 = InputBox("検索したい氏名3を入力してください。") End If For i = 1 To 256 If ExecuteExcel4Macro(Target & "R1C" & i) = "名前" Then TargetCol = i Exit For End If Next i If TargetCol = 0 Then MsgBox "[ 名前 ]フィールドが見つかりません。", vbExclamation Exit Sub End If Dim clm As Integer For i = 2 To 10000 buf = ExecuteExcel4Macro(Target & "R" & i & "C" & Target If buf = "0" Then Exit For If buf = key1 Then Sheet3.Cells(w, 3) = buf w = w + 1 ReDim Preserve GetNames(i - 1) GetNames(i - 1) = buf ElseIf buf = key2 Then Sheet3.Cells(w, 3) = buf w = w + 1 ReDim Preserve GetNames(i - 1) GetNames(i - 1) = buf (略) -----------------

  • ExecuteExcel4Macroについて

    エクセルで、フォームで挿入した「ラベル」に他シートのセルを参照させてマクロの記録をとると以下のようになります。 Sub Macro1() ActiveSheet.Labels.Add(526.5, 301.5, 76.5, 18).Select ExecuteExcel4Macro "FORMULA(""=FACE!R[7]C[10]"")" End Sub では、逆にラベルに設定された参照元を取得するにはどう記述すればようでしょうか? For Each sp In ActiveSheet.DrawingObjects i = i + 1 On Error Resume Next sh.Cells(i, 2) = TypeName(sp) sh.Cells(i, 3) = sp.Name sh.Cells(i, 4) = sp.Formula next では、取得出来ませんでした。

  • 【VBA】ExecuteExcel4Macro

    こんにちは、VBA初心者につき皆様のお知恵をお貸し下さい。 ExecuteExcel4Macroを使用し同一フォルダ内の複数ブックから値の取得を行う際に 特定のブックが開かれている(使用中)場合、それを判断する方法はありますでしょうか? 当初は以下プログラムで判断していたのですが ファイル数が多い為1つ1つ開いてしまうととても処理時間が掛かるので 試行錯誤しながらExecuteExcel4Macroにたどり着きました。 ------------------------------------------------------------------------------------------- Set wb = Workbooks.Open(myFdr & "\" & fname)  If ActiveWorkbook.ReadOnly Then   MsgBox "取得できませんでした"   ActiveWorkbook.Close   Exit Sub  End If -------------------------------------------------------------------------------------------- 処理速度が早く出来るのであればExecuteExcel4Macroに拘りは無いので もし他にいい手段がありましたらご教授頂けると幸いです。 以上、宜しくお願い致します。

  • EXCELのVBAにて閉じたブックの数値を拾い出したいため

    EXCELのVBAにて閉じたブックの数値を拾い出したいため ExecuteExcel4Macroを使用して次のように作成しましたが 生産管理ブック内の直出荷シートしか参照できません。 その他シートの参照して数値を拾い出したいため シートのループ処理(シート数不規則)を例えばworksheet(1)~処理終了の名前がついた シートまで行いたいのですがどの様に直出荷部分を書き込めばいいかわかりません。 いい方法を教えていただけ無いでしょうか? (:と生産計画の間 エン[ がうまく表示できません) Dim i As Long, idx As Long Dim hi As Integer For hi = 10 To 252 If Cells(2, 3) = ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & 11 & "C" & hi) Then Exit For End If Next hi i = 7 For idx = 7 To 3000 For i = i To 300 If ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & idx & "C" & 5) = 0 Then Exit Sub End If Cells(i, 1) = ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & idx & "C" & 5) Cells(i, 2) = ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & idx + 2 & "C" & 5) Cells(i, 3) = ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & idx + 11 & "C" & hi) i = i + 1 Exit For Next i idx = idx + 57 Next idx

  • ExecuteExcel4Macroを使ったレコードの読み込み方法につ

    ExecuteExcel4Macroを使ったレコードの読み込み方法について 下記サンプルは、ファイルを指定して、指定したファイルの中にあるシートを選択し、その中にあるデータを読込むものになっています。 読込ませるファイルのsheet1には、『 ID,顧客番号,氏名,住所,電話番号 』 が入っています。 下記サンプルでは、顧客番号フィールドのデータは読込めるのですが、該当するレコード全体を読込むにはどう組み立てればいいかよくわかりません。 すみませんが、どなたかご教授いただけませんでしょうか。よろしくお願いいたします。 Public Sub testes() ' 変数の指定 Dim OpenFileName, SheetName, Target, buf As String Dim i, TargetCol As Long, GetNames() ' 対象ブックの選択 OpenFileName = Application.GetOpenFilename("Microsoft Excel ブック,*.xls") If OpenFileName = "False" Then Exit Sub ' ファイル名に[]を付ける OpenFileName = Replace(OpenFileName, Dir(OpenFileName), "[" & Dir(OpenFileName) & "]") ' 対象ワークシート名の指定と取得 SheetName = InputBox("対象ワークシート名を入力します") If SheetName = "" Then Exit Sub Target = "'" & OpenFileName & SheetName & "'!" ' ワークシートの正誤チェック On Error Resume Next buf = ExecuteExcel4Macro(Target & "R1C1") If Err <> 0 Then MsgBox "ワークシート [ " & SheetName & " ] を読めませんので終了します。", vbExclamation Exit Sub End If On Error GoTo 0 ' [顧客番号]フィールドを探す For i = 1 To 256 If ExecuteExcel4Macro(Target & "R1C" & i) = "顧客番号" Then TargetCol = i Exit For End If Next i If TargetCol = 0 Then MsgBox "[顧客番号]フィールドが確認できません。", vbExclamation Exit Sub End If ' データの読み込み For i = 1 To 10000 buf = ExecuteExcel4Macro(Target & "R" & i) If buf = "0" Then Exit For ' シートに出力する Worksheets("sheet3").Activate ActiveSheet.Cells(i, 1) = buf Next i End Sub

  • Excel VBA でExecuteExcel4Macro("GET.OBJECT(48,

    エクセル2000です。 以前、ワークシートに配置したフォームツールのラベルの参照元を取得するマクロをご教示いただき、以下のTest01は問題なく作動しています。 Sub test01() Dim obj As Object Dim i As Integer Dim obj_n As String 'オブジェクトの名前 With ActiveSheet For Each obj In .Labels i = i + 1 .Cells(i, 2) = obj.Name: obj_n = obj.Name .Cells(i, 3) = obj.TopLeftCell.Address 'GET.OBJECT で、リンクがないものを取ると、False になる .Cells(i, 5) = ExecuteExcel4Macro("GET.OBJECT(48,""" & obj_n & """)") .Cells(i, 6) = obj.OnAction Next End With End Sub 今回、同一シートではなく別シートに表示させようと以下のTest02を書いたのですが、やってみると .Cells(i, 5) はすべて#VALUE!エラーになってしまいました。 ExecuteExcel4Macro("GET.OBJECT(48~がどのようなものかわからずやっているので応用がききません。(そもそも48って?) どのようになおしたらよいのかご教示いただければ幸いです。 Sub test02() Dim obj As Object Dim i As Integer Dim obj_n As String Dim ws As Worksheet, ns As Worksheet Set ws = ActiveSheet Set ns = Worksheets.Add With ns For Each obj In ws.Labels i = i + 1 .Cells(i, 2) = obj.Name: obj_n = obj.Name .Cells(i, 3) = obj.TopLeftCell.Address .Cells(i, 5) = ExecuteExcel4Macro("GET.OBJECT(48,""" & obj_n & """)") .Cells(i, 6) = obj.OnAction Next End With End Sub

  • Excel VBAで半角

    Excel VBAで半角 A列が半角のときに、B列にoと表示させるために下記のソースを考えたのですがうまくいきません。初歩的な質問だとは思いますがよろしくお願いします。 Sub 半角判定() Dim i For i = 2 To Range("g65536").End(xlUp).Row If Application.Len(Cells(i, 1)) = Application.LenB(Cells(i, 1)) Then Cells(i, 2) ="o" End If Next End Sub

  • VBAでのExecuteExcel4Macroの値取得でエラー

    こんにちは。 Excel VBAより、ExecuteExcel4Macroを実行して、 外部のExcelファイルの、名前(店名、月度)を定義したセルの値を取得したいと思っています。 店名:文字列型 月度:Date型 そこで、ExecuteExcel4Macro()を実行し、以下のような処理を加えました。 ------------------------------------------------------------------------------------ dim 店名 as Variant, 月度 as Variant If 外部マクロ実行("'c:\[test.xls]出勤簿'!店名", 店名) = False Or _ 外部マクロ実行("'c:\[test.xls]出勤簿'!月度", 月度) = False Then MsgBox "取得失敗", vbExclamation End End If Public Function 外部マクロ実行(com As String, ByRef result As Variant) As Boolean On Error GoTo erron3 result = ExecuteExcel4Macro(com) On Error GoTo 0 外部マクロ実行 = True Exit Function erron3: 外部マクロ実行 = False End Function ------------------------------------------------------------------------------------ これを実行したところ、「月度」の値は取得できるのですが、 「店名」の値には「エラー 2042」という値が入ります。 ※dirname, filenameは正しい値が入っています。 ※シート「出勤簿」および「月度」「店名」のセル名の定義も存在します。 test.xlsを開いてるときは、上記の現象は起こらず、 「店名」の値は正常に取得できます。 また、試しに、test.xlsを開き、 Worksheets("出勤簿").Range("店名")を実行すると、正常な値が取得できました。 まとめると、 ・閉じたブックの、あるシートにある、セルに定義された名前を指定して ・ExecuteExcel4Macroで、文字列が入っている値を取得しようとした時、 ・正常に値が取得できない という現象に遭遇しています。 3日ほど調べているのですが、どうしても原因が分かりません。 解決策をお持ちの方、いらっしゃいましたらアドバイスを頂けると助かります。 環境:WindowsXP Pro SP3 Excel 2003 (11.5612.5606) 以上、よろしくお願いいたします。

  • Excel2000のマクロが2007で型が一致しませんと表示されます

    自作マクロを作成し別ブックから転記するものですがExcel2000では正常に動くのですが、Excel2007では、転記対象のセルが0なら空白にするという行(IF文)で「型が一致しません」と表示されてしまいます。 ExecuteExcel4Macroが悪いのか、いろいろ調べましたが型とは?などマクロ初心者なので分からないです。宜しくお願いします。 For i = 1 To 7 Cells(i, 1).Value = ExecuteExcel4Macro("'\[meca.xls]Sheet1'!R" & i & "C1") If ExecuteExcel4Macro("'\[meca.xls]Sheet1'!R" & i & "C1") = "0" Then Cells(i, 1).Value = "" Next i