- ベストアンサー
アクセスからエクセルのa列に入力されているセルの個数を数えたい
アクセスvbaで エクセルのa列の個数を数えることは可能でしょうか? MsgBox GetObject(, "Excel.Application").Workbooks("Access用.xls").WorkSheets("集計").WorksheetFunction.Count(Columns("a")) だとコンパイルエラ-となってしまいます。 なので、 エクセル側でa1に集計セルを作って MsgBox GetObject(, "Excel.Application").Workbooks("Access用.xls").WorkSheets("集計").Range("a1").Value としていますが できればアクセスからダイレクトに個数を数えたいです。 できますでしょうか? よろしくお願いします。
- lkhjlkhjlk
- お礼率99% (737/741)
- オフィス系ソフト
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
MsgBox GetObject(, "Excel.Application").WorksheetFunction.Count(GetObject(, "Excel.Application").Workbooks("Access用.xls").WorkSheets("集計").Columns("a"))
その他の回答 (2)
関連するQ&A
- エクセル 何故かシート間の値のコピーが出来ない
いつもお世話になります。 開いているブックのシート「リスト1~3」に、Book1.xlsの「リスト1~3」の値をコピーする為に、下記のマクロを作成しました。 Dim SH1, SH2, SH3, SH4, SH5, SH6 As Worksheet Set SH1 = ThisWorkbook.Worksheets("リスト1") Set SH2 = ThisWorkbook.Worksheets("リスト2") Set SH3 = ThisWorkbook.Worksheets("リスト3") Set SH4 = Workbooks("Book1.xls").Worksheets("リスト1") Set SH5 = Workbooks("Book1.xls").Worksheets("リスト2") Set SH6 = Workbooks("Book1.xls").Worksheets("リスト3") 'リスト1をコピーする D = SH4.Range("A1").CurrentRegion.Rows.Count E = SH4.Range("A1").CurrentRegion.Columns.Count SH1.Range(Cells(1, 1), Cells(D, E)).Value = SH4.Range("A1").CurrentRegion.Value 'リスト2をコピーする F = SH5.Range("A1").CurrentRegion.Rows.Count G = SH5.Range("A1").CurrentRegion.Columns.Count SH2.Range(Cells(1, 1), Cells(F, G)).Value = SH5.Range("A1").CurrentRegion.Value 'リスト3をコピーする H = SH6.Range("A1").CurrentRegion.Rows.Count I = SH6.Range("A1").CurrentRegion.Columns.Count SH3.Range(Cells(1, 1), Cells(H, I)).Value = SH6.Range("A1").CurrentRegion.Value 以上を実行すると、「アプリケーション定義またはオブジェクト定義のエラーです」とエラーメッセージが出てしまいます。 それぞれのシートの処理の時に、 SH1.Select SH2.Select SH3.Select を入れて、シートを選択してから実行すると問題なく動くのですが、何故このようなことが起こるのでしょう?
- ベストアンサー
- オフィス系ソフト
- マクロをすっきりさせたい・・・
いつもお世話になっております。 下記、マクロを組んだのですが、 簡潔にまとめるには、どうしたら良いでしょうか・・・ 宜しくお願い致します。 Set 範囲 = Workbooks("A.xls").Worksheets("マスター").Range("A2:G4000") ThisWorkbook.Activate 列番号 = 7 検索値 = (Worksheets("B").Range("B24")) Range("D14").Value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, False) Set 範囲 = Workbooks("A.xls").Worksheets("マスター").Range("A2:G4000") ThisWorkbook.Activate 列番号 = 7 検索値 = (Worksheets("B").Range("B25")) Range("D15").Value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, False) Set 範囲 = Workbooks("A.xls").Worksheets("マスター").Range("A2:G4000") ThisWorkbook.Activate 列番号 = 7 検索値 = (Worksheets("B").Range("B26")) Range("D16").Value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, False)
- ベストアンサー
- オフィス系ソフト
- accessでセルの個数を集計する方法を教えてください。
accessでセルの個数を集計する場合、count関数を使うと 思いますが、セルの内容が混在していて(例えば、Aとか BとかCなどが混在している場合)、その中で、特定のセル 内容のみ(例えば、Aのみを)を集計するとき、どのような関数あるいは数式を使ったらいいでしょうか。 具体的には、いまリポートで人事考課の考課結果を成績別に集計しようとしています。 よろしくお願いします。
- 締切済み
- その他(データベース)
- excelのファイルとセル値を書き出したい
excel2003を利用しています。 とあるフォルダにある excelファイル名(自分自身のファイルを除く) を全て書き出して、 且つ A1セルの値をB列に書き出すことを、やろうとvbaを作ってみましたが。 最後のファイルのA1セルを書きだすところで、エラーになっていまい そこだけ空白になってしまいます。※写真参照 記述は以下の通りです。どのように修正すればよいか 教えていただけないでしょうか? また他にもっと優れた記述があれば、そちらも教えて欲しいです。 よろしくお願いします。 Sub test() Dim buf As String, cnt As Long Dim Path As String Path = ThisWorkbook.Path & "\" buf = Dir(Path & "*.xls") cnt = 2 Do While buf <> "" If buf <> ThisWorkbook.Name Then cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Workbooks.Open Filename:=Path & "\" & buf MsgBox Workbooks(buf).Worksheets(1).Range("A1").Value Cells(cnt, 2) = Workbooks(buf).Worksheets(1).Range("A1").Value Workbooks(buf).Close End If Loop End Sub
- 締切済み
- Excel(エクセル)
- ★部分でインデックスが有効範囲にありません。とでます。
★部分でインデックスが有効範囲にありません。とでます。 集計依頼情報(2)から集計用依頼情報にコピーしたものを貼り付け たいのですが、ここで上のエラーがでます。 何がおかしいのでしょうか? ちなみにエクセルVBAです。 Sub sample() Dim lngKns As Integer Dim lngRow As Long Workbooks.Open Filename:=ThisWorkbook.Path & "\集計用依頼情報(2).csv" Worksheets("集計用依頼情報(2)").Activate '受付日の数をカウントしてデータ数を取得 lngKns = WorksheetFunction.Count(Worksheets("集計用依頼情報(2)").Range("Z2:Z65536")) '集計用依頼情報(2)→集計用依頼情報にコピー Worksheets("集計用依頼情報(2)").Select Worksheets("集計用依頼情報(2)").Range("A2:CW" & 1 + lngKns).Copy Workbooks.Open Filename:=ThisWorkbook.Path & "\集計用依頼情報.csv" '受付日の数をカウントしてデータ数を取得 lngRow = WorksheetFunction.Count(Worksheets("集計用依頼情報").Range("Z2:Z65536")) ★ ThisWorkbook.Worksheets("集計用依頼情報").Activate '値貼り付け ThisWorkbook.Worksheets("集計用依頼情報").Range("A" & lngRow + 1 & _ ":CW" & lngRow + lngKns).Paste ActiveSheet.Paste Application.CutCopyMode = False End Sub
- ベストアンサー
- Visual Basic
- エクセル 特定のシートを異なるブックの指定したシートにコピーするマクロ
エクセルの"貼り付け先.xls"の(シート名="集計")を開いている状態で、 別の異なるブックの"貼り付け元.xls"の(シート名="sheet1")の内容を全部コピーして "貼り付け先.xls"の(シート名="集計元データ")へ貼り付けるマクロは どのようになりますでしょうか? いろいろ調べて下記のように書きましたが、 インデックスが有効範囲にありませんというメッセージが出て、 デバッグを確認すると Workbooks("貼り付け元.xls").Worksheets("Sheet1").Range("A1").Copy_の部分が黄色く表示されてきます。 (1) "貼り付け先.xls"と"貼り付け元.xls"は同じパソコンのマイドキュメントに保存されています。 (2)"貼り付け元.xls"の"Sheet1"はセルA1から入力されていて、 内容は毎日変わります。 (3)Range("A1")や("A1:IV65536")のセル番地をいろいろ変えたりしても同じでした。 Sub クリップボードを経由せずにコピー貼り付けする_異なるブック() Workbooks("貼り付け元.xls").Worksheets("Sheet1").Range("A1").Copy_ Workbooks("貼り付け先.xls").Worksheets("集計元データ.xls").Range ("A1:IV65536") End Sub
- 締切済み
- オフィス系ソフト
- エクセルマクロ if文を繰り返したい
マクロ初心者です。 以下のようなマクロを作ったのですが、 これをE34まで繰り返しの処理をしたいです。 どこにどんな文章を挟んでいいのかわかりません。 Sub けいさん() If Workbooks("日報.xls").Worksheets("お手本").Range("O22") = "A" Then Workbooks("test.xls").Worksheets("II-1(1)").Range("E11") = "" ElseIf Workbooks("日報.xls").Worksheets("お手本").Range("O22") = "B" Then Workbooks("test.xls").Worksheets("II-1(1)").Range("E11") = "" ElseIf Workbooks("日報.xls").Worksheets("お手本").Range("O22") = "D" Then Workbooks("test.xls").Worksheets("II-1(1)").Range("E11") = "" ElseIf Workbooks("日報.xls").Worksheets("お手本").Range("C22") = "" Then Workbooks("test.xls").Worksheets("II-1(1)").Range("E11") = "" Else Workbooks("日報.xls").Worksheets("お手本").Range("C22").Copy Workbooks("test.xls").Worksheets("II-1(1)").Range("E11").PasteSpecial End If End Sub
- ベストアンサー
- オフィス系ソフト
- Access開いているブックのセル値参照
AccessのVBAからExcelのブック(通常既に開いています)のセルの値を参照するものを作成 しているのですが、うまくいきません。ご教授頂けないでしょうか。 Set Set myXlsSheet = myXls.Worksheets("sheet1") の行がインデックスが有効範囲にあり ません。とエラーがでます。 ここで既に開いているExcelブック自体をWorkbooks.open を使用せずにオブジェクト自体をset して、各シート値を参照することができないでしょうか。 現状できているコード Dim myXls As Object Dim myXlsSheet As Object Set myXls = CreateObject("Excel.Application") Set myXlsSheet = CreateObject("Excel.Sheet") myXls.Visible = False ' Set myXlsSheet = myXls.Workbooks.Open("C:\test.xls", 1) 'これだとまた同じファイルを開いて処理するため処理が遅くなる。 Set myXls = myXls.Workbooks("test.xls") 'インデックスが有効範囲にありません。のエラーがここで出ます。 Set myXlsSheet = myXls.Worksheets("sheet1") Debug.Print myXls.WorksSheets("sheet1").Cells(1, 1).Value myXls.Close Set myXls = Nothing myXls.Quit Set myXlsSheet = Nothing MsgBox "完了"
- ベストアンサー
- オフィス系ソフト
- .xlsにワイルドカードを使うには?
あい20060925.xls を下記のように記述してはいけないようですが、 ワイルドカードをどのように使用すればよろしいでしょうか? 以上 よろしくお願い致します。 -------------------- Sub tes1() '任意のブックの全シートを1つのブックにまとめる Workbooks("あい*.xls").Activate ActiveWorkbook.Worksheets. _ Copy after:=Workbooks("集計.xls").Sheets(Workbooks("集計.xls").Sheets.Count) End Sub --------------------
- ベストアンサー
- オフィス系ソフト
- ACCESSからExcel操作
アクセスのクエリーにて作成したデーターをエクセルにインポートをしてその後直接アクセス上から条件を入れてオートフィルターを掛け、条件にあったデーターのみセルに色をつけたいのですがオートフィルターで絞った後の処理がうまく出来ません。 Dim DB As DAO.Database Dim xlApp As Object Dim xlbook As Object Dim xlsheet As Object Dim strXlsS As String Dim strExSheet As String インポート処理はOK ここからアクセス上で操作をしたい。 strXlsS = "ファイル名フルパス" strExSheet = "シート名" Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True 'エクセル可視、不可視選択 Set xlbook = xlApp.workbooks.Open(strXlsS) Set xlsheet = xlbook.worksheets(strExSheet) xlsheet.Range("A1").Select xlsheet.Range("A1").AutoFilter xlsheet.Range("A1").AutoFilter Field:=8,Criteria1:="条件" ここまでは出来ました。 この後エクセル上では Range("A1:J37").Select と言う感じで選択するのですが、ここをどの様にやれば良いか教えて欲しいのです。 色々と検索をして SpecialCells を使う事までは解かり xlsheet.AutoFilter Range.Columns(1).SpecialCells(xlCellTypeVisible) とやってみたのですが 実行時エラー'424': オブジェクトが必要です。 とエラーになってしまいます。 参考先でもなんでも良いので宜しく御願いします。
- 締切済み
- その他(業務ソフトウェア)
お礼
できました! ご回答ありがとうございます。