Access VBA質問箱 IV

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

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


1614 / 2272 ツリー ←次へ | 前へ→

【6283】VBAでEXCELのセルの内容をファイル名に KK 05/9/13(火) 19:54 質問[未読]
【6285】Re:VBAでEXCELのセルの内容をファイル名に てっちゃん 05/9/14(水) 9:14 回答[未読]
【6290】Re:VBAでEXCELのセルの内容をファイル名に KK 05/9/14(水) 18:18 お礼[未読]

【6283】VBAでEXCELのセルの内容をファイル名に
質問  KK  - 05/9/13(火) 19:54 -

引用なし
パスワード
   はじめまして。過去ログ等検索したのですが、見当たらなかったため、御教えください。
現在、ACCESSにて作成したテーブルをEXCELに出力し、それをVBAで編集しています。
処理自体は普通に進むのですが、特定の位置にあるセルの内容をシート名・ファイル名に
したいのですがうまくいきません。全くうまくいかないのではなく5回に1回くらいは
保存できたりします。また、セルの内容ではなく適当な固定名にすれば確実に
保存できるようです。

Public Sub MT_Work03A()
On Error GoTo Err_MT_Work03A

  Dim oApp As Object
  
  If Dir("D:\テンプレート\作業場\O03.xls") = "" Then  
    MsgBox "コールが存在しません。"
  Else
  
    Set oApp = CreateObject("Excel.Application")
    oApp.Visible = True
    'Only XL 2002 supports UserControl Property
    On Error Resume Next
    oApp.UserControl = True
    
    'ファイルを開く
    oApp.Workbooks.Open Filename:="D:\テンプレート\作業場\O03.xls"
  
    Dim myLastRow As Long
    Dim myLastCol As Integer
    Dim i As Long
  
    '----最終行
    myLastRow = oApp.Range("A1").End(xlDown).Row
    '----最終列
    myLastCol = oApp.Range("A1").End(xlToRight).Column
    i = myLastRow
    k = myLastCol

<<<罫線を引いたりの処理の後・・・>>>

  oApp.Sheets("_O03").Select
  oApp.Sheets("_O03").Name = Cells(i + 1, k - 17).Value
  
  oApp.Range("A1:A2").Select

    'ファイルを閉じる
    oApp.Workbooks("O03.xls").Activate
    
    oApp.ActiveWorkbook.SaveAs Filename:=("D:\" & Year(Date) & "年" & Month(Date) & "C" & "\Organization\" & Cells(i + 1, k - 17).Value & "-" & Format(Date, "mmmyyyy") & ".xls")

    oApp.Workbooks("O03.xls").Activate
    oApp.DisplayAlerts = False
    oApp.Workbooks("O03.xls").Save
    oApp.ActiveWorkbook.Close
       
    'Excelを閉じる
    oApp.Quit
    oApp.DisplayAlerts = True
    oApp.DisplayAlerts = True

  End If
  
Exit_MT_Work03A:
  Exit Sub

Err_MT_Work03A:
  MsgBox Err.Description
  Resume Exit_MT_Work03A
  
End Sub

すいません。全く分からないので是非お知恵をお貸しください。
宜しくお願いいたします。

【6285】Re:VBAでEXCELのセルの内容をファイル名に
回答  てっちゃん  - 05/9/14(水) 9:14 -

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

> また、セルの内容ではなく適当な固定名にすれば確実に保存できるようです。
ということであれば、まず、
> 特定の位置にあるセルの内容を
疑ってみると良いでしょう。

Dim myNAME as String

myNAME = Cells(i + 1, k - 17).Value
'myNAME = oApp.Sheets("_O03").Cells(i + 1, k - 17).Value '?

Debug.Print myNAME

これらを組み込んで確かめてみてはいかがでしょう。
(変数に代入する必要はないかもしれませんが)


また、余談ですが、完成するまで
> On Error Resume Next
これはコメント化しておくと、不具合の原因が掴みやすく
なるのではないかと思います。

それでは

【6290】Re:VBAでEXCELのセルの内容をファイル名に
お礼  KK  - 05/9/14(水) 18:18 -

引用なし
パスワード
   ▼てっちゃん さん:
こんにちわ。質問者のKKです。
返事が遅くなり申し訳ありません。

御教えいただいたことを元にいろいろ試したところ、
一番最後に名前を変えて保存するのではなく、
一番最初に名前を変えて保存し、最後は上書きの方法で
成功できました。ありがとうございます。

てっちゃんさんが教えてくださらなければ今頃まだ
分からないままでいたと思います。
おかげ様で大変助かりました。
本当にありがとうございました。

1614 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078242
(SS)C-BOARD v3.8 is Free