Access VBA質問箱 IV

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

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


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

【4332】テーブルから一部データ削除
質問  初心者抜け出せず・・  - 05/2/3(木) 15:39 -

引用なし
パスワード
   Aテーブルから必要のないデータを抽出してそのデータのみを削除したいのですがどのようにすればよいのでしょうか?必要のないデータは別のテーブル Bにあるので、クエリでテーブルA・Bを組み合わせて必要のないデータを抽出し、それをテーブルAから削除したいのです。

テーブルA 販売中のもの
チョコ  
あめ
ガム

テーブルB 来年から販売しない予定
チョコ

クエリー 販売しないもの
チョコ
  ↓(削除)
テーブルA 販売中のもの
あめ
ガム

どうすればよいのでしょうか?
・ツリー全体表示

【4331】Re:エクスポート方法
お礼  mma  - 05/2/3(木) 12:06 -

引用なし
パスワード
   慣れてないものですいません。
試してみます。ありがとうございました。
・ツリー全体表示

【4330】Re:エクスポート方法
回答  Gin_II  - 05/2/3(木) 11:51 -

引用なし
パスワード
   Add メソッド (Workbooks コレクション)
Excelのヘルプで上記を確認してください。

Accessから、オートメーションで上記メソッドを使うことになると思います。


>例えばVBAで、D:\RedCross\N\BAKUP\ という場所にaaaというファイル名をつけて、
>空のExcelファイルを作成したいのです。可能でしょうか?

当初の質問と関連がない、新規の質問ならば、新規スレッドで質問するように
してくださいね。
・ツリー全体表示

【4329】Re:エクスポート方法
質問  mma  - 05/2/3(木) 11:13 -

引用なし
パスワード
   ▼Gin_II さん:
>>VBAで空のExcelファイルを新規作成するにはどうすればいいのでしょうか?
>
>OutputTo メソッドとの関連でなら、出力前に、Kill ステートメントを
>使ってファイルの削除をしておけばいいと思います。

説明不足だったみたいですみません。VBAからファイルの保存場所場所を指定し、ファイル名も名付けたいのです。
例えばVBAで、D:\RedCross\N\BAKUP\ という場所にaaaというファイル名をつけて、空のExcelファイルを作成したいのです。可能でしょうか?
何度もすみませんが、ご指導おねがいします。
・ツリー全体表示

【4328】エクセルの編集メッセージ
質問  ひろのしま  - 05/2/3(木) 10:38 -

引用なし
パスワード
   ※いつも適切な回答をいただき、まことにありがとうございます。顧客データそのものが外部漏れ禁止なので、
コメント注のファイル名やシート名に若干の変更を加えております。ご了承ください。

私のやりたいことなのですが、6つに分類されたフォルダ内の、’左3文字’と*_再開する番組一覧表_*,という文字のついたエクセルファイル名を検索し、存在していた時に、特定のセル部分のデータをアクセスにインポートして
アクセスデータとして残す、という作業なのです。
で、問題なのは、下記の処理を2回〜5回ほど繰り返した頃にフリーズし、「芸能人_再開する番組一覧表_〜.xlsは、[編集]を選択すると、開いたファイルを編集できます。」というメッセージボックスが出てきてしまいます。
最初からでなく2〜5回ほど行った後のエラーなので、なかなか原因がつかめません。
なにか行ってはいけないコマンドをしているのでしょうか?良きアドバイスをお願いします。

'最初に、報告書マスタテーブルを、サービス種別(chnl_bunrui)分インポートする上限-----------
'チャンネル分類変数------
Dim SVcnt As Integer 'チャンネル分類カウント
Dim Chnl_Bunrui As String 'チャンネル分類別フォルダ
Dim Hairetu As Variant 'チャンネル分類名保存変数
Hairetu = Array("AV", "音楽番組", "ドラマ", "ニュース”, "お笑い番組", "ドキュメンタリー”)

  '該当する芸能人再開する番組一覧表があれば、再開する番組一覧表をあけ、報告書フォーマットに値を記入する上限------------------

For SVcnt = 0 To 5 'チャンネル分類別ステートメント上限------------------------------------
  Chnl_Bunrui = Hairetu(SVcnt)

  'チャンネル分類別に再開する番組一覧表を取り出す------------------
  Dim File_Cnt As Integer 'ファイルカウント変数
  Dim File_Sum As Integer 'ファイル総数変数
  Dim File_SaiKS As String 'パス有再開する番組一覧表
  Dim File_SaiKS_Cut As String 'パス無再開する番組一覧表
      '初期化
      File_SaiKS_Cut = ""
      File_SaiKS = ""
      File_Sum = 0
      File_Cnt = 0
      
      ChDir Path_SaiKS & Chnl_Bunrui & "\"
    File_SaiKS = Dir(Path_SaiKS & Chnl_Bunrui & "\" & Me.芸能人 & "_再開する番組一覧表_*.xls", vbDirectory)
      Do Until File_SaiKS = ""
        If Replace(File_SaiKS, Path_SaiKS & Chnl_Bunrui & "\", "") Like "" & Me.芸能人 & "_再開する番組一覧表_*.xls" Then
            File_Cnt = File_Cnt + 1
            File_SaiKS_Cut = Replace(File_SaiKS, Path_SaiKS & Chnl_Bunrui & "\", "")  'パス名を削除=>でないとブック名を指定できないため
        End If

        File_SaiKS = Dir()
      Loop
    File_Sum = File_Cnt


  If File_Sum = 0 Then
    'ファイルがなければその芸能人はなにも作成しない。
  ElseIf File_Sum >= 2 Then
    MsgBox Me.芸能人 & "に該当する再開する番組ファイルが複数存在していますので、どちらかを削除してから行ってください。"
    End
  Else
    '再開する番組一覧表エクセル変数----------------------
    Dim WKB_SaiKS As Excel.Workbook '精再開する番組ファイル
    Dim WKS_SaiKS As Excel.Worksheet '各芸能人の再開する番組シート
    Set Exl = CreateObject("Excel.Application")
    Set WKB_SaiKS = Exl.Workbooks.Open(Path_SaiKS & Chnl_Bunrui & "\" & File_SaiKS_Cut) '精算付再開する番組ファイル
    Debug.Print "Openfilename" & Path_SaiKS & Chnl_Bunrui & "\" & File_SaiKS_Cut
    Set WKS_SaiKS = WKB_SaiKS.Worksheets("Sheet1")
'    WKS_SaiKS.Select


    '再開する番組一覧表の、合計以下3段のインポート--------------
      Call Moju_報告書マスタテーブル
    Dim Sai_Cnt As Long '再開する番組数カウント
    Dim Sai_Sum As Long '再開する番組数合計

    Dim TBLDB As Database 'データベース
    Set TBLDB = CurrentDb 'データベース変数
    Dim TDF As TableDef 'テーブル変数

    With WKS_SaiKS
      '.Activate
      Sai_Sum = .Range("A1:A65536").Find(what:="合計").Row - 2 - 1 '再開する番組数合計,-2は行標題、-1は列標題
      'チャンネルと芸能人が該当する再開する番組テーブルがあれば、先に削除しておく。
        TBL_Keyword = StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ"
        Call Moju_テーブルクエリ確認
        If TBL_HIT = 1 Then
          DoCmd.RunSQL "Drop Table " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ;"
        End If
      DoCmd.SetWarnings False
      '報告書マスタテーブルにインポートする前に、チャンネルと芸能人に該当する報告書マスタテーブルのデータがあれば、削除しておく。
      DoCmd.RunSQL "Delete * From 報告書マスタ where [芸能人]='" & Me.芸能人 & "' and [チャンネル]='" & Chnl_Bunrui & "';"

      'チャンネルと芸能人が該当する再開する番組一覧表の合計以下3段のインポート上限-----------
      DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ", Path_SaiKS & Chnl_Bunrui & "\" & File_SaiKS_Cut, False, .Name & "!" & Replace(.Range(.Cells(2 + Sai_Sum + 1, 1), .Cells(2 + Sai_Sum + 3, 4 + 5 * (Tuki_Sa + 1) + 7 * (Nen_Sum + SouGoukei))).Address, "$", "")
      DoCmd.RunSQL "Update " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ Set F3='" & Me.芸能人 & "', F4='" & Chnl_Bunrui & "';"

      'テーブルの列の名前を変更する---------。
      Set TDF = TBLDB.TableDefs(StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ")
      For FLD_Cnt = 1 To TDF.Fields.Count
        TBLDB.TableDefs(StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ").Fields(FLD_Cnt - 1).Name = TBLDB.TableDefs("報告書マスタ").Fields(FLD_Cnt - 1).Name
      Next

      DoCmd.RunSQL "INSERT INTO 報告書マスタ " & _
             "SELECT " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ.* " & _
             "FROM " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ;"
      'チャンネルと芸能人が該当する報告書マスタのテーブルを削除する。
      DoCmd.RunSQL "Drop Table " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ;"
      'チャンネルと芸能人が該当する再開する番組一覧表の合計以下3段のインポート上限-----------
      DoCmd.SetWarnings True
    End With
    Debug.Print "closefilename" & Exl.ActiveWorkbook.Name
    WKB_SaiKS.Close
'
'   Exl.ActiveWorkbook.Close
    Exl.Quit
    Set WKS_SaiKS = Nothing
    Set WKB_SaiKS = Nothing

  End If '該当芸能人再開する番組一覧表があれば、再開する番組一覧表をあけ、報告書フォーマットに値を記入する下限------------------
Next
・ツリー全体表示

【4327】Re:複数条件からの抽出
回答  MJM  - 05/2/3(木) 9:26 -

引用なし
パスワード
   こんにちは。

Filterプロパティに設定する場合の条件でしょうか?

>criteria = "(温度区分 = 3)" and "(入力日付 = format(date(),#yyyymmdd#)"

criteria = "温度区分 = 3 AND 入力日付 = " & Format(Date(),"yyyymmdd")

では、如何でしょうか。
入力日付は、数字型なのでしょうねぇ…
・ツリー全体表示

【4326】Re:クエリをcsvファイルにエクスポートす...
回答  Gin_II  - 05/2/3(木) 9:20 -

引用なし
パスワード
   >accsessで作成したクエリをcsvファイルにエクスポートする方法を
>教えて下さい。(データ件数は50万件程あります)

TransferText メソッドをヘルプで確認してください。
・ツリー全体表示

【4325】Re:エクスポート方法
回答  Gin_II  - 05/2/3(木) 9:19 -

引用なし
パスワード
   >VBAで空のExcelファイルを新規作成するにはどうすればいいのでしょうか?

OutputTo メソッドとの関連でなら、出力前に、Kill ステートメントを
使ってファイルの削除をしておけばいいと思います。
・ツリー全体表示

【4324】Re:テーブルとかクエリーの有無
お礼  ひろのしま  - 05/2/3(木) 9:05 -

引用なし
パスワード
   ▼MJM さん:
>以下でも可能ですよ。
>
>Dim OB As Object
>
>For Each OB In CurrentData.AllTables
>  If Left(OB.Name, 4) <> "MSys" And OB.Name = TBL_Keyword Then
>    TBL_HIT = 1
>  End If
>Next

適切なアドバイスをいつもありがとうございます。
・ツリー全体表示

【4323】複数条件からの抽出
質問  takataka  - 05/2/2(水) 21:40 -

引用なし
パスワード
   複数のフィールドから特定条件で抽出する方法あったら教えて下さい。
criteria = "(温度区分 = 3)" and "(入力日付 = format(date(),#yyyymmdd#)"
でfilterかけると型違いエラーが発生します。
・ツリー全体表示

【4321】クエリをcsvファイルにエクスポートするに...
質問  ココア  - 05/2/2(水) 15:23 -

引用なし
パスワード
   accsessで作成したクエリをcsvファイルにエクスポートする方法を
教えて下さい。(データ件数は50万件程あります)
よろしくお願いします。
・ツリー全体表示

【4320】Re:エクスポート方法
質問  mma  - 05/2/2(水) 14:21 -

引用なし
パスワード
   またまた質問なのですが、VBAで空のExcelファイルを新規作成するにはどうすればいいのでしょうか?
・ツリー全体表示

【4319】Re:エクスポート方法
お礼  mma  - 05/2/2(水) 13:05 -

引用なし
パスワード
   わかりました。さっそくやってみます。ありがとうございました。
・ツリー全体表示

【4318】Re:エクスポート方法
回答  Gin_II  - 05/2/2(水) 12:28 -

引用なし
パスワード
   >AccessのレポートをVBAでExcelにエクスポートする方法がわかりません。

OutputTo メソッドをヘルプで確認してください。
起動も、↑ですることができます。
・ツリー全体表示

【4317】エクスポート方法
質問  mma  - 05/2/2(水) 9:25 -

引用なし
パスワード
   AccessのレポートをVBAでExcelにエクスポートする方法がわかりません。
分かる方ご指導お願いします。
あと、エクスポートしたExcelファイルのVBAでの開き方も教えて下さるとうれしいです。
・ツリー全体表示

【4315】帳票フォームでの和暦入力
質問  FM  - 05/2/1(火) 23:46 -

引用なし
パスワード
   データベース内では元号と西暦で持っているフィールドを帳票フォームでは和暦にして入出力を行いたいのです。
元号の方はコンボボックスで、0:不明、1:大正、2:昭和・・・といった感じで入出力はそのまま元号の項目へ更新ができますが、
西暦の方を更新する時に、元号を除いた数値6桁だけを入力して更新をかけたいのですが、そういったことはできるのでしょうか?
フォームに表示する時に書式を「eemmdd」にすると、表示は正しく表示されるのですが、入力の時はyyyy/mm/ddの形になってしまいます。
定型入力の場所を「>L999999;;" "」とすると全然入力できず、「>L99/99/99;;" "」とすると一応入力はできるのですが、
実際に入力したいのは「999999」の形で入力したいのです。(上記の2つの時はカーソルをあてると「yyyy/mm/dd」になってしまいます)
元号のコンボボックスが0の時は西暦がNull、それ以外は元号+入力した数値6桁で西暦を作成し更新。という感じです。
帳票フォームの詳細部に非連結項目を作成し、VBAの方で制御すればできるのかと思ったのですが、
1つを入力すると全行同じ値になってしまうし、VBA側からも何行目のデータをみにいってるのかがよくわかりませんでした。
なにかいい方法があれば教えてください。お願いします。
・ツリー全体表示

【4314】Re:テーブル内のnull値を全て0に置き換える
回答  かろちん  - 05/2/1(火) 23:26 -

引用なし
パスワード
   >VBAを使用して一気にnull値を零に変換できる関数をモジュールで教えて頂けませんか?

Nz関数をHELPで調べてください。
・ツリー全体表示

【4313】テーブル内のnull値を全て0に置き換える
質問  takataka  - 05/2/1(火) 22:59 -

引用なし
パスワード
   VBAを使用して一気にnull値を零に変換できる関数をモジュールで教えて頂けませんか?
・ツリー全体表示

【4311】1つのフィールドの文字列を分ける事は可能...
質問  まるまる  - 05/2/1(火) 11:44 -

引用なし
パスワード
   下記のように1つのフィールドに入力されている文字列を
分ける事は可能でしょうか?


<例>
   住所         住所(都道府県) 住所(市区町村) 住所(他)
東京都渋谷区神宮前1-5-6 → 東京都       渋谷区    神宮前1-5-6
東京都あきる野市秋川2-8 → 東京都      あきる野市   秋川2-8


宜しくお願いします。
・ツリー全体表示

【4310】Re:複数のエクセルファイルを一括でインポ...
発言  ココア  - 05/2/1(火) 10:03 -

引用なし
パスワード
   エクセルのファイル名は様々で統一されていないのですが、
可能でしょうか?
・ツリー全体表示

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