Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


388 / 500 ページ ←次へ | 前へ→

【5438】Re:Excelファイル範囲指定のインポート方法
お礼  sakaiII  - 05/6/21(火) 7:16 -

引用なし
パスワード
   小僧さん
おはようございます。
問題解決できました。感謝しています。
・ツリー全体表示

【5437】Re:EXCELのグループ化を解除できます...
回答  小僧  - 05/6/20(月) 19:27 -

引用なし
パスワード
   ▼bejikeni さん:
こんばんは。

※要参照設定 Microsoft Excel x.x Object Library

Sub グループ化解除()
Dim xlsApp As New Excel.Application
Dim xlsWkb As Excel.Workbook
Dim xlsSht As Excel.Worksheet
Dim MyName As String
Dim MySheet As String
Dim Sh As Excel.Shape

  MyName = "C:\Test.xls"
  MySheet = "対象シート"
  
  Set xlsWkb = xlsApp.Workbooks.Open(MyName)
  Set xlsSht = xlsWkb.Sheets(MySheet)
    For Each Sh In xlsSht.Shapes
      If Sh.Type = msoGroup Then
        Debug.Print Sh.Name
      End If
    Next
  set xlsSht = Nothing
  xlsWkb.Close False: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
End Sub

上記のコードで対象シートのグループ名をイミディエトウィンドウに
表示させる事ができます。

あとは「Ungroup」メソッドで解除できると思いますが、未検証です。
ちょっと席を外す都合検証ができませんでしたが取り急ぎ回答をさせて頂きます。
・ツリー全体表示

【5436】帳票フォーム上のコンボボックスでのフィ...
質問  なおなお  - 05/6/20(月) 17:28 -

引用なし
パスワード
   いつも、お世話になります。
環境はWindowsXP ProSP2、Access2000です。

帳票フォームでコンボボックスの項目(社員名)を
選択フィルタボタンを使ってリストを抽出し、
抽出された店舗数のカウントを取得したい考えております。

一応、コンボボックス以外(テキストボックス)の項目を選択フィルタで抽出した場合は
店舗数のカウントを取得することができましたが、
コンボボックスで選択フィルタを使って抽出した場合、
下記のエラーが出力されて店舗数のカウントを取得することが出来ません。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
実行時エラー'-2147217900 (80040e14)'
SQL ステートメントが正しくありません。'DELETE','INSERT','PROCEDURE',
'SELECT',または'UPDATE'を使用してください。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

そこで、作成されたSQLを表示するようにしてみたところ、
コンボボックスに選択フィルタを使うとwhereのところで
LOOKUP_SU2.社員名称="山田"
と言うようになっていました。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
SELECT Count(*) AS 完了予定数
FROM [select 完了予定.店舗 FROM 完了予定
where ((Lookup_SU2.社員名称="山田"))
GROUP BY 完了予定.店舗]. AS 完了予定;
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

コンボボックスの内容は、社員名称が表示されているんですが、
社員テーブルと言うものが別にありまして、
社員CD、社員名称、所属という項目になっています。
その社員テーブルとコンボボックスがリンク?されて社員名称が表示されるようになっています。

帳票フォームのコンボボックスをコントロールの種類の変更でテキストボックスにすると
選択フィルタは使えるようになって店舗数カウントも取得できるんですが、
社員CDが表示されるようになってしまい、誰だかわからなくなってしまいます・・・。

良いアイデアがありましたら、是非教えてください。
よろしくお願いします。
・ツリー全体表示

【5435】EXCELのグループ化を解除できますか?
質問  bejikeni  - 05/6/20(月) 17:12 -

引用なし
パスワード
   いつも、参考にさせてもらって大助かりです。

質問なのですが、EXCELのシート上で、グループ化されたテキストボックスをACCESSのVBAで、解除する方法を教えてもらえますでしょうか。

試行錯誤しましたが、一杯一杯の状態です。
ご教授を宜しくお願いします。
・ツリー全体表示

【5434】Re:Excelから複数のテーブルに分類してイ...
発言  ラッセル  - 05/6/20(月) 15:48 -

引用なし
パスワード
   ▼小僧 さん:
さっそくのご回答ありがとうございます。

>元のDBが何であるのかによっては ODBC で直接処理もできそうですね。
DBはAS400(IBM)です。

>レコード件数が解らないので絶対にとは言えませんが、
すみませんでした。
店舗数が200件
データが700-1,000件くらいです。(月毎)

>全店舗のデータを1つのテーブルに取り込んでクエリで処理するのが適当かと思われます。
そうなんですか!?
無知というのは恐ろしいですね。
200個のテーブルを作ろうとしてました。

>後々「全店舗の比較」とかデータが必要になった時、
>同じテーブルにデータがあった方が何かと便利です。
わかりました。
ではひとつのテーブルに取り込んでみます。
その後のことは再度質問させていただきます。
今度はクエリの勉強ですね。

ありがとうございました。
・ツリー全体表示

【5433】Re:リストボックスから指定したデータの表...
発言  クロ  - 05/6/20(月) 14:56 -

引用なし
パスワード
   う〜ん。私が暇なときを待つよりも
プロパティの「連結列」でF1キーをたたいた方が早いような…
・ツリー全体表示

【5432】Re:リストボックスから指定したデータの表...
お礼  トミー  - 05/6/20(月) 14:51 -

引用なし
パスワード
   ▼クロ さん:
>Column プロパティのヘルプをご覧になっては如何でしょうか?


ありがとう御座いました おかげさまでコーディングの方法がわかりました。

因みに、 リストボックスのプロパティで連結列と云うのがありますが、どんな機能なんですか。どのような時に使用するのですか。暇な時にでも教えて下さい。
・ツリー全体表示

【5431】Re:フィールドデータの並べ替え
発言  小僧  - 05/6/20(月) 14:42 -

引用なし
パスワード
   ▼さつき さん:
こんにちは。

コード全てを解析していませんが気になった事を。

>Public Sub 担当リスト()
>
>End Sub

の間で
>Dim rs2 As ADODB.Recordset

と宣言していますので、この rs2 のオブジェクトは

>Public Sub aichiken()

のモジュールには反映されていないです。


>Public Sub 担当リスト()

の外側に

Public rs2 As ADODB.Recordset

と宣言するか、

Call aichiken(rs2)

Public Sub aichiken(rs2 As ADODB.Recordset)

として、rs2 を値渡しすれば「aichiken」モジュールでも rs2 のオブジェクトが
使えるようになります。

>Select Case sosikimei のaddnewのところでとまってしまいます。

その際に出力されるエラーメッセージを記載して頂くと、より状況が
解りやすくなるかと思われます。
・ツリー全体表示

【5430】Re:Excelから複数のテーブルに分類してイ...
発言  小僧  - 05/6/20(月) 14:26 -

引用なし
パスワード
   ▼ラッセル さん:
こんにちは。

まず、

>ExcelのBook1からAccessの支店毎のテーブルにインポートすることは可能ですか?

は可能です。
オートメーションを用いて ExcelVBA で処理する事ができます。

またExcelのシート自体をテーブルとみなしてSQLを発行する事もできます。

>ExcelのデータはDBからDLしてます。

これを見る限りでは元のDBが何であるのかによっては ODBC で直接処理もできそうですね。
当方の知識がない為に「どうやって?」という所までアドバイスできませんが…。


レコード件数が解らないので絶対にとは言えませんが、
全店舗のデータを1つのテーブルに取り込んでクエリで処理するのが適当かと思われます。
後々「全店舗の比較」とかデータが必要になった時、
同じテーブルにデータがあった方が何かと便利です。
・ツリー全体表示

【5429】フィールドデータの並べ替え
質問  さつき  - 05/6/20(月) 14:10 -

引用なし
パスワード
   <売上リスト>
契約者名   住所      組織名1  担当者1  組織名2   担当者2・・・
A株式会社  愛知県・・・  岐阜支店  佐藤    第二営業   西田・・・・
B株式会社  岐阜県・・・  三重支店  中川    岐阜支店   佐藤・・・・
C株式会社  三重県・・・  第一営業  神田    三重支店   中川・・・・

上のようなリストがあって、ひとつの契約者に対する担当組織が複数(5コ)並んでいます。これを契約者の住所が愛知県ならば、第一営業、第二営業、第三営業が先頭に、岐阜県ならば岐阜支店、三重県ならば三重支店が先頭に来るように並び替えなければなりません。
下記のようにしてみましたが、Select Case sosikimei のaddnewのところでとまってしまいます。どのように直したらよいでしょうか?どなたかお願いいたします。

Public Sub 担当リスト()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim rs3 As ADODB.Recordset
Dim sql As String

  Application.Echo False     '画面の再描画をオフ
  DoCmd.Hourglass True      '砂時計ポインタを表示

  Set cn = Application.CurrentProject.Connection '接続
  Set rs = New ADODB.Recordset
  Set rs2 = New ADODB.Recordset
  Set rs3 = New ADODB.Recordset
  rs.Open "売上リスト", cn, adOpenKeyset, adLockOptimistic
  rs2.Open "ワークテーブル", cn, adOpenKeyset, adLockOptimistic
  rs3.Open "担当者リスト", cn, adOpenKeyset, adLockOptimistic

  rs.MoveFirst
  
  Do Until rs.EOF
   
    If keiyakusha <> rs.Fields("契約者名").Value Then
      j = 1
      Do Until rs2.EOF
        rs3.AddNew
        rs3.Fields("契約者名") = rs2.Fields("契約者名")
        For k = 1 To 5
          rs.Fields(j + 2) = rs2.Fields(k)
          j = j + 1
        Next k
        rs3.Update
        rs2.MoveNext
      Loop
    End If
    
    If IsNull(rs.Fields("県名").Value) = True Then
        GoTo 次のレコード
    Else
      If rs.Fields("県名").Value = "愛知県" Then
        For I = 1 To 5
        sosikimei = rs.Fields("組織名" & I).Value
        tantosha = rs.Fields("担当者" & I).Value
        Call aichiken
        Next I
       
      ElseIf rs.Fields("県名").Value = "岐阜県" Then
        For I = 1 To 5
        sosikimei = rs.Fields("組織名" & I).Value
        tantosha= rs.Fields("担当者" & I).Value
         
        If sosikimei = "岐阜支店" Then
        ac_sosiki = "岐阜"
        End If
        Next I
       
      ElseIf rs.Fields("県名").Value = "三重県" Then
        For I = 1 To 5
        sosikimei = rs.Fields("組織名" & I).Value
        tantosha = rs.Fields("担当者" & I).Value
        If sosikimei = "三重支店" Then
        ac_sosiki = "三重"
        End If
        Next I
       
      End If
    
    End If
    rs3.AddNew
    rs3!契約者名I = keiyakusha
    rs3!組織名I = ac_sosiki
    rs3!担当者I = tantosha
    rs3.Update

    sosikimei = ""
    ac_sosiki = ""
    tantosha = ""
    keiyakusha = rs.Fields("契約者名").Value
    
次のレコード:
    rs.MoveNext
  Loop
  
  rs.Close: Set rs = Nothing
  rs2.Close: Set rs2 = Nothing
  rs3.Close: Set rs3 = Nothing
  cn.Close: Set cn = Nothing

  Application.Echo True
  DoCmd.Hourglass False

  MsgBox ("処理が終わりました♪")

End Sub

Public Sub aichiken()

  Select Case sosikimei
    Case "第一営業"
      ac_sosiki = "第1"
    Case "第二営業"
      ac_sosiki = "第2"
    Case "第三営業"
      ac_sosiki = "第3"
    Case "岐阜支店"
      rs2.AddNew
      rs2.Fields(0) = keiyakusha
      rs2.Fields(1) = sosikimei
      rs2.Fields(2) = tantosha
      rs2.Update
    Case "三重支店"
      rs2.AddNew
      rs2.Fields(0) = keiyakusha
      rs2.Fields(1) = sosikimei
      rs2.Fields(2) = tantosha
      rs2.Update

  End Select

End Sub
・ツリー全体表示

【5428】Re:フォームの非連結のテキストをテーブル...
お礼  あこ  - 05/6/20(月) 13:54 -

引用なし
パスワード
   小僧さん、早々の回答ありがとうございます!
なんとか思い通りの処理ができました。
クロさんのリンクもとても参考になりました。

本当にありがとうございました。
・ツリー全体表示

【5427】Excelから複数のテーブルに分類してインポ...
質問  ラッセル  - 05/6/20(月) 13:51 -

引用なし
パスワード
   Excelで次のデータがあります。
Book1のSheet1には
A列に日付
B列に支店
C列に売上が入力されています。

Accessで支店の名前を付けたテーブルを作成します。(T-Shibuya...etc)
フィールドには日付、売上があります。

ExcelのBook1からAccessの支店毎のテーブルにインポートすることは可能ですか?
Excel、Book1でB列を基点にオートフィルタをかけた状態を、Accessのテーブルにあらわしたいのです。毎月同じことを繰り返して、テーブルに売上データをためていきたいのです。

基本的なことかもしれないのですが
どなたかヒントをお願いできないでしょうか?
どうぞよろしくお願いします。
当方Win XP Pro Office2003
ExcelのデータはDBからDLしてます。
・ツリー全体表示

【5426】Re:フォームの非連結のテキストをテーブル...
回答  小僧  - 05/6/20(月) 11:57 -

引用なし
パスワード
   ▼あこ さん:
こんにちは。

「txt支給1」 に値が入っていなくて「txt支給2」に値が入っていた場合、
ループを抜けてしまって良いのでしょうか?

>For I = 1 to 20
>  If IsNull(Me("txt支給" & Format(I, "0")).Value) Then>
>    '処理
>  End If
>NEXT

「Null値」を見つけたらループを出る場合なら

>For I = 1 to 20
>  If IsNull(Me("txt支給" & Format(I, "0")).Value) Then
>    '処理  
>  Else
>    Exit For
>  End If
>NEXT

でどうでしょうか?

※テーブルのフィールド名に「.」を含ませると予期せぬエラーが発生する
 場合があります。
> [#5245]一読してみてください。
 にて クロ さんがご紹介されているリンク先を参考になさると良いかもです。
・ツリー全体表示

【5425】Re:テーブルの削除について教えてください...
お礼  NEMOTAKE  - 05/6/20(月) 11:55 -

引用なし
パスワード
   ▼クロ さん:
できました。ありがとうございました。
・ツリー全体表示

【5424】フォームの非連結のテキストをテーブルに...
質問  あこ  - 05/6/20(月) 11:30 -

引用なし
パスワード
   フォームある非連結のテキストをテーブルに書き込みたいと思います。
【3562】の投稿を見てかなりできたのですが、最後の最後でエラーがでます。
ご助言お願いします。

フォームには、txt支給iというデータが20個あります。
データがnullでないときだけテーブルに一件追加します。5件の入力があれば5レコードできる・・・といった感じです。

  Dim DB As Database
  Dim rs_支給 As Recordset
  Dim I As Integer

  Do Until Me("txt支給" & Format(I, "0")).Value Is Null
    rs_支給.AddNew
    rs_支給![No.] = Me![txtNo.]
    rs_支給![支給部品] = Me("txt支給" & Format(I, "0")).Value
    
    rs_支給.Update
    I = I + 1
  Loop

DO UNTIL のところで「オブジェクトが必要です」と出ます。
ちなみに、条件を Me("txt支給" & Format(I, "0")).Value <> Null にすると動くのですが、21個目のテキストはないのでそこでエラーになります。
FOR文で回せばよいのでしょうが、NULL値は入れたくないし、効率が悪いかと・・・。

長々と書きましたがよろしくお願い致します。
・ツリー全体表示

【5423】Re:エラーコード:2213の問題
発言  クロ  - 05/6/20(月) 11:26 -

引用なし
パスワード
   ▼小僧 さん:
ありゃ、スミマセン

ということですので小僧さんのほうを参考に!
・ツリー全体表示

【5422】Re:エラーコード:2213の問題
発言  小僧  - 05/6/20(月) 11:22 -

引用なし
パスワード
   ▼ briter さん、クロ さん:
こんにちは。

http://support.microsoft.com/default.aspx?scid=kb;ja;294555

こちらの方が多少読みやすいでしょうか?
内容はあまり変わりませんが…。
・ツリー全体表示

【5421】Re:エラーコード:2213の問題
発言  クロ  - 05/6/20(月) 11:17 -

引用なし
パスワード
   以下が参考になりますか?(KBの機械翻訳なのでチョット意味不明なところも
ありますが…)
http://support.microsoft.com/default.aspx?scid=kb;ja;222638
・ツリー全体表示

【5420】エラーコード:2213の問題
質問  briter  - 05/6/20(月) 11:08 -

引用なし
パスワード
   OS:WinXP
Access Version:2002
初めて質問させて頂きますSEをやっておりますbriter(ブリター)と申します。
仕事で初めてAccess2002を使用して開発を行いました。単体テストも完了しまして
納品しましたところお客様の環境でレポート(帳票)印刷を行ったところ、以下の
エラーメッセージが表示されました。

<<エラーメッセージ内容>>
実行時エラー'2213':
このオブジェクトのプリンター情報の取得に問題があります。オブジェクトは無効な
プリンタに送信された可能性があります。

お客様の端末上では2台のプリンタが登録されており、デフォルトでいつも御使用されて
いるプリンタですと上記のエラーが出力されますが、[設定]→[プリンタ]でもう片方の
プリンタをデフォルトで使用するプリンタにすると印刷が行われます。
現象からしてプリンタドライバとの相性に問題があるかとも思われますが、同端末上では
Access97で開発したツールもありますが、こららでは上記の現象は起きません。

<<プログラムソース内容>>
以下に実際のプルグラムソースを記載します。
特に特殊な処理をしている訳ではないのでソース上の問題ではないかと
思います。

DoCmd.OpenReport "XXXXXXX(※レポート名)", acViewPreview
・ツリー全体表示

【5419】Re:リストボックスから指定したデータの表...
発言  クロ  - 05/6/20(月) 10:55 -

引用なし
パスワード
   Column プロパティのヘルプをご覧になっては如何でしょうか?
・ツリー全体表示

388 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084740
(SS)C-BOARD v3.8 is Free