[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 10/24 21:30 / Filesize : 261 KB / Number-of Response : 870
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part8



1 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:16:33 ]
ExcelのVBAに関する質問スレです

前スレ pc11.2ch.net/test/read.cgi/tech/1212587819/

★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
   
 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。 
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)

453 名前:434 mailto:sage [2008/10/06(月) 20:52:44 ]
>408,〜,452
作ってみました。長いので2件に分けます。
' DEBUG と書かれた行はテストのためにマクロを記録しているブックのアクティブシートに
処理対象ブックのフルパス、12桁の番号、FINDで求めた9桁の番号を表示させるためのもので、
丸々1行消しても動くと思うけど、こちらでは試してません。
例外処理は入れてません。フォルダーのパスとか検索範囲とかもプログラムで直接指定してますが、
マクロを記録しているブックに設定できるようにするとメンテがラクですね。
詳しい方には添削してもらえるとありがたいです。
Option Explicit
Dim BK_M As Excel.Workbook, TATE As Long ' DEBUG
Dim BK_I As Excel.Workbook, BK_O As Excel.Workbook
Dim SEARCH_PATH As String, FILE_NAME As String

Sub prog_408()
Set BK_M = ActiveWorkbook ' DEBUG
' 参照するだけとなるブックのフルパスやファイル名は適当に変えてください。
Workbooks.Open Filename:="D:\TEST_FOLDER\PRODUCT\PRODUCT.xls"
Set BK_I = Workbooks("PRODUCT.xls")

TATE = 3 ' DEBUG
' 変更対象となる10〜40個のブックが記録されているフォルダです。
' このフォルダにはメールで送られてくるという処理対象だけのブックを置いておくこと。
SEARCH_PATH = "D:\TEST_FOLDER\"
FILE_NAME = Dir(SEARCH_PATH & "*.xls", vbNormal)
Do While FILE_NAME <> Empty ' 繰り返し
  Call PROC_1
Loop
BK_I.Close
Set BK_I = Nothing
Set BK_M = Nothing ' DEBUG
End Sub

454 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 20:53:51 ]
続きです。
Private Sub PROC_1()
Dim WK_PATH As String, BANGO_12 As String, BANGO_9 As String
Dim c As Excel.Range

WK_PATH = SEARCH_PATH & FILE_NAME
Workbooks.Open Filename:=WK_PATH
Set BK_O = Workbooks(FILE_NAME)
With BK_M.Worksheets(1)        ' DEBUG
  .Cells(TATE, 1).Value = WK_PATH  ' DEBUG A列に処理対象ブックのフルパスを書き込む
  BANGO_12 = BK_O.Worksheets(1).Range("A4").Value
  .Cells(TATE, 2).Value = BANGO_12 ' DEBUG B列に「12桁の番号」を書き込む
End With ' DEBUG
' 次行のA2:A41は実際のデータの開始位置と考え得る最大の範囲を指定してください。
Set c = BK_I.Worksheets(1).Range("A2:A41").Find(BANGO_12, LookIn:=xlValues)
If c Is Nothing Then
  BANGO_9 = ""
Else
  BANGO_9 = c.Offset(0, 1).Value ' ←ここで9桁の番号が求められました
End If
BK_O.Worksheets(1).Range("A6").Value = BANGO_9 ' ←やりたいこと はこの部分です
BK_M.Worksheets(1).Cells(TATE, 3).Value = BANGO_9 ' DEBUG C列に「9桁の番号」を書き込む
BK_O.Close
Set BK_O = Nothing

TATE = TATE + 1 ' DEBUG
FILE_NAME = Dir()
End Sub






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<261KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef