Access VBA質問箱 IV

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

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


8825 / 9994 ←次へ | 前へ→

【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

635 hits

【4328】エクセルの編集メッセージ ひろのしま 05/2/3(木) 10:38 質問
【4364】Re:エクセルの編集メッセージ ひろのしま 05/2/7(月) 12:49 回答

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