2

この問題に取り組む方法がわかりません。私はかなりの調査を行いましたが、私が見つけた答えのほとんどは、私が必要としているものとは少し異なります。

私が達成しようとしているのはこれです:

  1. 既存のブックを手動で開きます(wbAI)、
  2. マクロを開始し、
  3. msoFileDialogOpenを使用して、ファイルを見つけて開きます(これをwb2と呼びます)。
  4. wb2のファイル名の一部(ファイル名に日付があります)を変数または文字列として保存します。(この目的にどちらが適しているかはわかりません。すべてを保存する必要はないかもしれません...)、
  5. wb2のファイル名(日付)の一部をwb1の特定のセルに貼り付けます。
  6. wb2から必要なデータをコピーします。
  7. データをwb1に貼り付けます
  8. データをフォーマットし、
  9. 貼り付けたデータにVLOOKUPを使用し、
  10. 保存せずにwb2を閉じる
  11. マクロを終了します。

私のマクロは、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
4

1 に答える 1

5

ファイル名から、LEFT FUNCTIONを使用して、日付のLEFT8文字を返します。

dateVar=left(wbSource.name, 8)

次に、それをセルに入れることができます。

rangeVar.value=dateVar

それがあなたを動かすことを願っています

フィリップ

于 2013-03-25T15:41:30.197 に答える