advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 71 for ExecuteExcel4Macro 閉じた|開いて|開かず (0.012 sec.)
executeexcel4macro (140), 閉じた (629), 開いて (4904), 開かず (263)
[[20200915105440]]
#score: 14119
@digest: a0f0036d72fee043bbc3e2a65496c0f0
@id: 85182
@mdate: 2020-09-16T03:10:00Z
@size: 12540
@type: text/plain
#keywords: strworkbookname2 (149966), 陸フ (69740), 報フ (38581), kaifname (36904), 書(" (36619), nend (36340), strworkbookname1 (35799), 改_ (35279), rfname (33606), 報¥" (30292), syorit (29993), nigetu (29993), ripath (29523), 月報 (28184), 度& (26467), 行). (24735), 度月 (23460), ab30 (22852), srcsh (22011), ダ& (20472), yd (16905), 丸付 (13171), gb (12307), 月& (12068), 告書 (7885), 月. (7521), workbooks (6973), 書フ (6134), 年度 (5346), 字化 (4414), 付1 (4119), 付2 (4107)
『Book間の値のコピー方法について』(fukushige)
開いた2つのbook間で値をコピーしたいので、.valueを使用して下記のように 書いたのですが、値を持ってきません。 どこに問題があるのか、どなたか教えてください。 行数のgb シートのyd はちゃんと拾ってきています。 それから、bookは開かなくても値は取得できますでしょうか。 よろしくお願いします。 Workbooks.Open Filename:=kaiFname strWorkBookName1 = ActiveWorkbook.Name Workbooks.Open Filename:=RFname strWorkBookName2 = ActiveWorkbook.Name Workbooks(strWorkBookName1).Activate With Sheets("入力") .Range("B" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("AB30").Value .Range("C" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("Y29").Value < 使用 Excel:Excel2013、使用 OS:Windows10 > ---- コードを部分的に貼るのではなく、全部貼ってください。 多くの場合、貼ってくれなかった部分に問題があります。 ご自分で気付かないから、問題個所を避けてコピーしてしまうのでしょう。 とりあえずは、代入に使用している全ての変数が、思った通りの値になっているか、ステップ実行と、変数の中身の確認をしっかり行ってください。 なお、コピー元のブックは開いておかないと駄目です。 開かずに持ってくるには、ExecuteExcel4Macro という古い命令を使えば可能ですが、1セルしか拾えないので、複数個所拾いたい場合は遅いでしょう。 (???) 2020/09/15(火) 13:17 ---- ご指摘ありがとうございます。 全文は以下です。まだ途中ですので、ごちゃごちゃしていてすみません。 関係ない変数など記載があります。 Sub riyoumeisai() Dim td As Variant Dim dd As Variant Dim yd As Variant Dim mypath As Variant Dim tepath As Variant Dim ripath As Variant 'Dim zenday As Variant Dim sg As Variant Dim sm As Variant Dim sgd As Variant Dim strWorkBookName1 As Variant Dim strWorkBookName2 As Variant Dim strWorkBookName3 As Variant Dim strWorkBookName4 As Variant Dim kaiFname As String Dim RFname As String Dim syorit As Variant Dim syorim As Variant Dim syorigm As Variant Dim syorigd As Variant Dim nkb As Variant Dim hikig As Long Dim yed Dim gd Dim gb Dim gyo As Long Dim ned Dim nend 'Dim nennd Dim nigetu Dim yef ned = ThisWorkbook.Worksheets(1).Range("E46").Value nend = Format(ned, "ge?N?x") nkb = ThisWorkbook.Worksheets(1).Range("E42").Value hikig = nkb - 6 yed = Date - 1 yef = Format(yed, "ge.m") gd = CDbl(Date) gb = gd - hikig - 1 mypath = ThisWorkbook.Path ripath = mypath & "¥" & "陸¥" nigetu = "¥?@" & nend & "月報¥" td = Format(Date, "yyyymmdd") dd = Format(Date, "d") sg = DateSerial(Year(Now), Month(Now), 0) sm = Format(sg, "m") sgd = Format(sg, "d") yd = Format(yed, "d") syorit = ThisWorkbook.Worksheets(1).Range("E11").Value syorim = Format(syorit, "ge.m") syorigm = Format(syorit, "ggge年m月") syorigd = Format(syorit, "ggge年度") kaiFname = ripath & "改_報告書(" & nend & ").xlsx" RFname = ripath & nigetu & yef & "月.xlsx" Application.ScreenUpdating = False If Dir(kaiFname) = "" Then MsgBox "改_報告書(" & nend & ").xlsxが" & vbCrLf & "陸フォルダにありません。処理を中止します。", vbExclamation Exit Sub End If If Dir(RFname) = "" Then MsgBox yef & "月.xlsxが" & vbCrLf & "?@" & nend & "月報フォルダにありません。" & vbCrLf & "処理を中止します。", vbExclamation Exit Sub End If Workbooks.Open Filename:=kaiFname strWorkBookName1 = ActiveWorkbook.Name Workbooks.Open Filename:=RFname strWorkBookName2 = ActiveWorkbook.Name Workbooks(strWorkBookName1).Activate With Sheets("払込み") .Range("B" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("AB30").Value .Range("C" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("Y29").Value .Range("D" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("Z29").Value .Range("J" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("AB30").Value .Range("K" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("M23").Value .Range("L" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("N23").Value .Range("O" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("AB30").Value .Range("P" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("M26").Value .Range("Q" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("N26").Value .Range("T" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("AB45").Value .Range("U" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("Y44").Value .Range("V" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("Z44").Value .Range("AB" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("AB30").Value .Range("AC" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("K15").Value .Range("AD" & gb) = Workbooks(strWorkBookName2).Sheets(yd).Range("L15").Value MsgBox "処理が終了しました。" ThisWorkbook.Activate End Sub (fukushige) 2020/09/15(火) 14:50 ---- 最後のほうに、With Sheets("払込み") とありますが、対応する End With がないので、このコードは動作しないです。 動作しているけど値が…、とはならないので、これではこちらは全くデバッグできません。 本当にこのコードは動いていますか? マクロ無効で、全く動いていなかったりしませんか? 動いているというのであれば、最初のほうで ned にセル値を代入している行にブレークポイントを設定してから動かしてみてください。 ブレークポイントまで到達したら、F8キーを押す度に1行ずつすすみますから、変数内容を確認しつつ、進めてみてください。 あと、ステップ実行すれば判ると思いますが、RFname というフルパスを作成する際、中に「?」というワイルドカードが混じっています。 ファイル名に使えない文字なので、Workbooks.Open できないはず。 これも、本当に動いているのか信じがたい点です。 どこか別の箇所で、On Error Resume Next とかして、エラー発生をもみ消してはいませんか? (???) 2020/09/15(火) 15:50 ---- ちょっと確認ですが以下はどのような結果が入れば正解なんですか? (文字化けしてるんじゃないかとおもって聞いてます) nend = Format(ned, "ge?N?x") nigetu = "¥?@" & nend & "月報¥" (もこな2) 2020/09/15(火) 21:26 ---- ほかにもありました。 MsgBox yef & "月.xlsxが" & vbCrLf & "?@" & nend 〜 想像するに投稿時に環境依存文字が文字化けしてませんかね 【例】 丸付き1・・・・・・・?@ 丸付き2・・・・・・・?A 丸付き3・・・・・・・?B 丸付き4・・・・・・・?C 丸付き5・・・・・・・?D カッコ株・・・・・・・?? ローマ数字の1・・・・?T / ?@ ローマ数字の2・・・・?U / ?A (もこな2) 2020/09/15(火) 22:09 ---- なるほど、機種依存文字ですね! 気付きませんでした。 ファイル名に機種依存文字を使うのは、止めた方が良いです。 先日も、サーバ上にLinuxで保存したと思われるファイルがあり、マクロが開けなくて、停止してしまったのを見たことがあります。(Windowsで入力した○1○2なら、ここの掲示板は文字化けするけど、➀➁となっていた) そうなると、?@ は○1かローマ数字の小文字の1、?N は○15ですか。 ?x は何だろう? 投稿時に表示されるプレビューを見て気づけるだろうから、予め教えて欲しいです。(見直ししていないのだろうなぁ) ? がワイルドカードではないとしても、動かないはずのコードが、動いたのに実行結果が何も変わっていない、というのは変ですから、ステップ実行の結果を知りたいですね。 (???) 2020/09/16(水) 10:04 ---- 丸付き数字で文字化けしてるけど気づかずに投稿しちゃうのは、この掲示板ではあるあるネタですよね。 以下、本題。 ■1 「関係ない変数など記載があります。」とのことですが、それにしても変数が多いので、ご自身でわけわからなくなりませんか? 1、2回しか使わないようなものであれば、あえて変数に格納しないのも有りではないでしょうか。 ■2 変数について、ほぼVariant型になっているわけですが、ゆくゆくは適切な型を指定できるようになるとよいように思います。 ■3 また、こだわりがなければインデントを付けるようにすると、コードの構造が把握しやすくなりご自身のデバッグ作業の効率があがるとおもいます。 ■4 提示されたコードで(文字化けがあるのが前提として考えて)気になる点があります。 ripath = mypath & "¥" & "陸¥" nigetu = "¥?@" & nend & "月報¥" ↑を↓に当てはめると RFname = mypath & "¥陸¥¥■" & nend & "月報¥" & yef & "月.xlsx" のようになり、ちょうど文字化けしている文字の前にファイル区切り文字が2個付くことになっています。 私には不自然に思いますが、これは正しいのですか? ■5 とりあえず、整理するとこんな感じになるんじゃないかな〜というものを提示します。 ご自身で整理されているコードと見比べてみてください。 (同じ環境を用意することはできませんから、コンパイルエラーにならないことしか確認してませんが・・) Sub 整理() Dim 陸フォルダ As String, 月報フォルダ As String Dim 日付1 As Date, 日付2 As Date, 日付3 As Date Dim Str年度 As String Dim 先月末 As Date Dim 年度月 As String Dim 報告書ファイル As Workbook 'Dim 月報ファイル As Workbook Dim srcSH As Worksheet Dim 行 As Long With ThisWorkbook.Worksheets(1) 日付1 = .Range("E46").Value 日付2 = .Range("E42").Value 日付3 = .Range("E11").Value End With Str年度 = Format(日付1, "ge■■") 陸フォルダ = ThisWorkbook.Path & "¥陸¥" 月報フォルダ = "■" & Str年度 & "月報¥" '1文字目の[¥]は余計 ★でおかしくなる 先月末 = DateSerial(Year(Now), Month(Now), 0) '使わない 年度月 = Format(Date - 1, "ge.m月") 'どうせ後ろに月をつけるのだから、この段階でつけちゃう If Dir(陸フォルダ & "改_報告書(" & Str年度 & ").xlsx") = "" Then MsgBox "改_報告書(" & Str年度 & ").xlsxが" & vbCrLf & "陸フォルダにありません。処理を中止します。", vbExclamation Exit Sub Else Set 報告書ファイル = Workbooks.Open(陸フォルダ & "改_報告書(" & Str年度 & ").xlsx") End If If Dir(陸フォルダ & 月報フォルダ & 年度月 & ".xlsx") = "" Then '★修正「月報フォルダの1文字目を取る」 MsgBox 年度月 & ".xlsxが" & vbCrLf & "■" & Str年度 & "月報フォルダにありません。" & vbCrLf & "処理を中止します。", vbExclamation Exit Sub Else 'Set 月報ファイル = Workbooks.Open(陸フォルダ & 月報フォルダ & 年度月 & ".xlsx") Set srcSH = Workbooks.Open(陸フォルダ & 月報フォルダ & 年度月 & ".xlsx").Worksheets(Day(Date - 1) & "") End If 行 = CDbl(Date - 日付2 - 6 - 1) With 報告書ファイル.Sheets("払込み") .Range("B" & 行).Value = srcSH.Range("AB30").Value .Range("C" & 行).Value = srcSH.Range("Y29").Value .Range("D" & 行).Value = srcSH.Range("Z29").Value .Range("J" & 行).Value = srcSH.Range("AB30").Value .Range("K" & 行).Value = srcSH.Range("M23").Value .Range("L" & 行).Value = srcSH.Range("N23").Value .Range("O" & 行).Value = srcSH.Range("AB30").Value .Range("P" & 行).Value = srcSH.Range("M26").Value .Range("Q" & 行).Value = srcSH.Range("N26").Value .Range("T" & 行).Value = srcSH.Range("AB45").Value .Range("U" & 行).Value = srcSH.Range("Y44").Value .Range("V" & 行).Value = srcSH.Range("Z44").Value .Range("AB" & 行).Value = srcSH.Range("AB30").Value .Range("AC" & 行).Value = srcSH.Range("K15").Value .Range("AD" & 行).Value = srcSH.Range("L15").Value End With MsgBox "処理が終了しました。" ThisWorkbook.Activate End Sub (もこな2) 2020/09/16(水) 11:55 ---- ↑の補足 〜Worksheets(Day(Date - 1) & "") について、 yed = Date - 1 yd = Format(yed, "d") 〜Sheets(yd)〜 を整理した結果ですが、なんで「& ""」が必要なのか、混乱させるかもしれないので説明しておきます。 単純に言えば、「Day(Date - 1)」で得られるのは、前日の日にちを表す【数値】だからです。 なので、そのままでは15番目のシートを意味することになってしまうため、わざと0文字を結合して文字列に変えています。 Sheets(15)・・・・・・15番目のシート Sheets("15")・・・・・「15」という名前のシート (もこな2) 2020/09/16(水) 12:10 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/202009/20200915105440.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97056 documents and 608292 words.

訪問者:カウンタValid HTML 4.01 Transitional