この問題に取り組む方法がわかりません。私はかなりの調査を行いましたが、私が見つけた答えのほとんどは、私が必要としているものとは少し異なります。
私が達成しようとしているのはこれです:
- 既存のブックを手動で開きます(wbAI)、
- マクロを開始し、
- msoFileDialogOpenを使用して、ファイルを見つけて開きます(これをwb2と呼びます)。
- wb2のファイル名の一部(ファイル名に日付があります)を変数または文字列として保存します。(この目的にどちらが適しているかはわかりません。すべてを保存する必要はないかもしれません...)、
- wb2のファイル名(日付)の一部をwb1の特定のセルに貼り付けます。
- wb2から必要なデータをコピーします。
- データをwb1に貼り付けます
- データをフォーマットし、
- 貼り付けたデータにVLOOKUPを使用し、
- 保存せずにwb2を閉じる
- マクロを終了します。
私のマクロは、4番と5番を除いて、上記のすべてのステップを実行できます。一方で、これをどのように追求する必要があるのか、そして他方で、これが私の現在のコードのどこに収まるのか疑問に思っています。
私が話していることの例を示すために、ステップ3で、「01.31.13グループ名」という名前のワークブックを開いたとします。また、ファイルパスはSharepointサイトからのものであるため、次のようになります。
" https: //company.com/team/teamone/_layouts/xlviewer.aspx?01.31.13%20Group%20Names%20.xlsm&Source=https ......."
ファイル名/ファイルパスの日付のみを選択するにはどうすればよいですか?
これが私のコードの始まりです:
Sub Test()
Dim lastRow As Long, i As Long
Dim ws As Worksheet
Dim wbSource As Workbook
Dim wbAI As Workbook
Dim vrtSelectedItem As Variant
Set wbAI = ActiveWorkbook
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = https://company.com/team/teamone & "\"
.AllowMultiSelect = False
.Show
' ****** Is this where the new code could be inserted? *******
For Each vrtSelectedItem In .SelectedItems
Set wbSource = Workbooks.Open(vrtSelectedItem)
Next
End With
' Check if the first cell contains data. If not then close file
If Range("Profile!H9") = "" Then
ActiveWorkbook.Close savechanges:=False
ActiveWorkbook.Saved = False
どんな提案でも大歓迎です!お時間をいただきありがとうございます!
編集:これは私のコードがフィリップの提案の後にどのように見えるかです:
Sub Test()
Dim lastRow As Long, i As Long
Dim ws As Worksheet
Dim wbSource As Workbook
Dim wbAI As Workbook
Dim vrtSelectedItem As Variant
Set wbAI = ActiveWorkbook
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = https://company.com/team/teamone & "\"
.AllowMultiSelect = False
.Show
For Each vrtSelectedItem In .SelectedItems
Set wbSource = Workbooks.Open(vrtSelectedItem)
Next
End With
dateVar = Left(wbSource.Name, 8) '<~~~~ New code
' Check if the first cell contains data. If not then close file
If Range("Profile!H9") = "" Then
ActiveWorkbook.Close savechanges:=False
ActiveWorkbook.Saved = False
Else
Sheets("Profile").Activate
Range("H9:I" & Cells(Rows.Count, "H").End(xlUp).Row).Select
Selection.Copy
Windows("wbName").Activate
Sheets("Sheet1").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").Value = dateVar '<~~~ New code